1 // Copyright 2015-2021 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 namespace VULKAN_HPP_NAMESPACE
12 {
13   //===============
14   //=== STRUCTS ===
15   //===============
16 
17   struct AabbPositionsKHR
18   {
19     using NativeType = VkAabbPositionsKHR;
20 
21 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AabbPositionsKHRVULKAN_HPP_NAMESPACE::AabbPositionsKHR22     VULKAN_HPP_CONSTEXPR AabbPositionsKHR( float minX_ = {},
23                                            float minY_ = {},
24                                            float minZ_ = {},
25                                            float maxX_ = {},
26                                            float maxY_ = {},
27                                            float maxZ_ = {} ) VULKAN_HPP_NOEXCEPT
28       : minX( minX_ )
29       , minY( minY_ )
30       , minZ( minZ_ )
31       , maxX( maxX_ )
32       , maxY( maxY_ )
33       , maxZ( maxZ_ )
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
39       : AabbPositionsKHR( *reinterpret_cast<AabbPositionsKHR const *>( &rhs ) )
40     {}
41 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42 
43     AabbPositionsKHR & operator=( AabbPositionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44 
operator =VULKAN_HPP_NAMESPACE::AabbPositionsKHR45     AabbPositionsKHR & operator=( VkAabbPositionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT
46     {
47       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AabbPositionsKHR const *>( &rhs );
48       return *this;
49     }
50 
51 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setMinXVULKAN_HPP_NAMESPACE::AabbPositionsKHR52     VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR & setMinX( float minX_ ) VULKAN_HPP_NOEXCEPT
53     {
54       minX = minX_;
55       return *this;
56     }
57 
setMinYVULKAN_HPP_NAMESPACE::AabbPositionsKHR58     VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR & setMinY( float minY_ ) VULKAN_HPP_NOEXCEPT
59     {
60       minY = minY_;
61       return *this;
62     }
63 
setMinZVULKAN_HPP_NAMESPACE::AabbPositionsKHR64     VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR & setMinZ( float minZ_ ) VULKAN_HPP_NOEXCEPT
65     {
66       minZ = minZ_;
67       return *this;
68     }
69 
setMaxXVULKAN_HPP_NAMESPACE::AabbPositionsKHR70     VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR & setMaxX( float maxX_ ) VULKAN_HPP_NOEXCEPT
71     {
72       maxX = maxX_;
73       return *this;
74     }
75 
setMaxYVULKAN_HPP_NAMESPACE::AabbPositionsKHR76     VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR & setMaxY( float maxY_ ) VULKAN_HPP_NOEXCEPT
77     {
78       maxY = maxY_;
79       return *this;
80     }
81 
setMaxZVULKAN_HPP_NAMESPACE::AabbPositionsKHR82     VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR & setMaxZ( float maxZ_ ) VULKAN_HPP_NOEXCEPT
83     {
84       maxZ = maxZ_;
85       return *this;
86     }
87 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
88 
operator VkAabbPositionsKHR const&VULKAN_HPP_NAMESPACE::AabbPositionsKHR89     explicit operator VkAabbPositionsKHR const &() const VULKAN_HPP_NOEXCEPT
90     {
91       return *reinterpret_cast<const VkAabbPositionsKHR *>( this );
92     }
93 
operator VkAabbPositionsKHR&VULKAN_HPP_NAMESPACE::AabbPositionsKHR94     explicit operator VkAabbPositionsKHR &() VULKAN_HPP_NOEXCEPT
95     {
96       return *reinterpret_cast<VkAabbPositionsKHR *>( this );
97     }
98 
99 #if 14 <= VULKAN_HPP_CPP_VERSION
100     auto
101 #else
102     std::tuple<float const &, float const &, float const &, float const &, float const &, float const &>
103 #endif
reflectVULKAN_HPP_NAMESPACE::AabbPositionsKHR104       reflect() const VULKAN_HPP_NOEXCEPT
105     {
106       return std::tie( minX, minY, minZ, maxX, maxY, maxZ );
107     }
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       return this->reflect() == rhs.reflect();
115     }
116 
operator !=VULKAN_HPP_NAMESPACE::AabbPositionsKHR117     bool operator!=( AabbPositionsKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
118     {
119       return this->reflect() != rhs.reflect();
120     }
121 #endif
122 
123   public:
124     float minX = {};
125     float minY = {};
126     float minZ = {};
127     float maxX = {};
128     float maxY = {};
129     float maxZ = {};
130   };
131   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AabbPositionsKHR ) == sizeof( VkAabbPositionsKHR ),
132                             "struct and wrapper have different size!" );
133   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::AabbPositionsKHR>::value,
134                             "struct wrapper is not a standard layout!" );
135   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::AabbPositionsKHR>::value,
136                             "AabbPositionsKHR is not nothrow_move_constructible!" );
137   using AabbPositionsNV = AabbPositionsKHR;
138 
139   union DeviceOrHostAddressConstKHR
140   {
141     using NativeType = VkDeviceOrHostAddressConstKHR;
142 #if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS )
143 
DeviceOrHostAddressConstKHR(VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_={} )144     VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressConstKHR( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ = {} )
145       : deviceAddress( deviceAddress_ )
146     {}
147 
DeviceOrHostAddressConstKHR(const void * hostAddress_)148     VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressConstKHR( const void * hostAddress_ ) : hostAddress( hostAddress_ ) {}
149 #endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/
150 
151 #if !defined( VULKAN_HPP_NO_UNION_SETTERS )
152     VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressConstKHR &
setDeviceAddress(VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_)153                             setDeviceAddress( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ ) VULKAN_HPP_NOEXCEPT
154     {
155       deviceAddress = deviceAddress_;
156       return *this;
157     }
158 
159     VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressConstKHR &
setHostAddress(const void * hostAddress_)160                             setHostAddress( const void * hostAddress_ ) VULKAN_HPP_NOEXCEPT
161     {
162       hostAddress = hostAddress_;
163       return *this;
164     }
165 #endif /*VULKAN_HPP_NO_UNION_SETTERS*/
166 
operator VkDeviceOrHostAddressConstKHR const&() const167     operator VkDeviceOrHostAddressConstKHR const &() const
168     {
169       return *reinterpret_cast<const VkDeviceOrHostAddressConstKHR *>( this );
170     }
171 
operator VkDeviceOrHostAddressConstKHR&()172     operator VkDeviceOrHostAddressConstKHR &()
173     {
174       return *reinterpret_cast<VkDeviceOrHostAddressConstKHR *>( this );
175     }
176 
177 #ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
178     VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress;
179     const void *                        hostAddress;
180 #else
181     VkDeviceAddress deviceAddress;
182     const void *    hostAddress;
183 #endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/
184   };
185 
186   struct AccelerationStructureGeometryTrianglesDataKHR
187   {
188     using NativeType = VkAccelerationStructureGeometryTrianglesDataKHR;
189 
190     static const bool                                  allowDuplicate = false;
191     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
192       StructureType::eAccelerationStructureGeometryTrianglesDataKHR;
193 
194 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureGeometryTrianglesDataKHRVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR195     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR(
196       VULKAN_HPP_NAMESPACE::Format                      vertexFormat_  = VULKAN_HPP_NAMESPACE::Format::eUndefined,
197       VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR vertexData_    = {},
198       VULKAN_HPP_NAMESPACE::DeviceSize                  vertexStride_  = {},
199       uint32_t                                          maxVertex_     = {},
200       VULKAN_HPP_NAMESPACE::IndexType                   indexType_     = VULKAN_HPP_NAMESPACE::IndexType::eUint16,
201       VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR indexData_     = {},
202       VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR transformData_ = {} ) VULKAN_HPP_NOEXCEPT
203       : vertexFormat( vertexFormat_ )
204       , vertexData( vertexData_ )
205       , vertexStride( vertexStride_ )
206       , maxVertex( maxVertex_ )
207       , indexType( indexType_ )
208       , indexData( indexData_ )
209       , transformData( transformData_ )
210     {}
211 
212     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR(
213       AccelerationStructureGeometryTrianglesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
214 
AccelerationStructureGeometryTrianglesDataKHRVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR215     AccelerationStructureGeometryTrianglesDataKHR( VkAccelerationStructureGeometryTrianglesDataKHR const & rhs )
216       VULKAN_HPP_NOEXCEPT
217       : AccelerationStructureGeometryTrianglesDataKHR(
218           *reinterpret_cast<AccelerationStructureGeometryTrianglesDataKHR const *>( &rhs ) )
219     {}
220 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
221 
222     AccelerationStructureGeometryTrianglesDataKHR &
223       operator=( AccelerationStructureGeometryTrianglesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
224 
225     AccelerationStructureGeometryTrianglesDataKHR &
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR226       operator=( VkAccelerationStructureGeometryTrianglesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT
227     {
228       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR const *>( &rhs );
229       return *this;
230     }
231 
232 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
233     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR &
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR234                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
235     {
236       pNext = pNext_;
237       return *this;
238     }
239 
240     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR &
setVertexFormatVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR241                             setVertexFormat( VULKAN_HPP_NAMESPACE::Format vertexFormat_ ) VULKAN_HPP_NOEXCEPT
242     {
243       vertexFormat = vertexFormat_;
244       return *this;
245     }
246 
247     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR &
setVertexDataVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR248       setVertexData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & vertexData_ ) VULKAN_HPP_NOEXCEPT
249     {
250       vertexData = vertexData_;
251       return *this;
252     }
253 
254     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR &
setVertexStrideVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR255                             setVertexStride( VULKAN_HPP_NAMESPACE::DeviceSize vertexStride_ ) VULKAN_HPP_NOEXCEPT
256     {
257       vertexStride = vertexStride_;
258       return *this;
259     }
260 
261     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR &
setMaxVertexVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR262                             setMaxVertex( uint32_t maxVertex_ ) VULKAN_HPP_NOEXCEPT
263     {
264       maxVertex = maxVertex_;
265       return *this;
266     }
267 
268     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR &
setIndexTypeVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR269                             setIndexType( VULKAN_HPP_NAMESPACE::IndexType indexType_ ) VULKAN_HPP_NOEXCEPT
270     {
271       indexType = indexType_;
272       return *this;
273     }
274 
275     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR &
setIndexDataVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR276       setIndexData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & indexData_ ) VULKAN_HPP_NOEXCEPT
277     {
278       indexData = indexData_;
279       return *this;
280     }
281 
282     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR &
setTransformDataVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR283       setTransformData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & transformData_ ) VULKAN_HPP_NOEXCEPT
284     {
285       transformData = transformData_;
286       return *this;
287     }
288 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
289 
operator VkAccelerationStructureGeometryTrianglesDataKHR const&VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR290     explicit operator VkAccelerationStructureGeometryTrianglesDataKHR const &() const VULKAN_HPP_NOEXCEPT
291     {
292       return *reinterpret_cast<const VkAccelerationStructureGeometryTrianglesDataKHR *>( this );
293     }
294 
operator VkAccelerationStructureGeometryTrianglesDataKHR&VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR295     explicit operator VkAccelerationStructureGeometryTrianglesDataKHR &() VULKAN_HPP_NOEXCEPT
296     {
297       return *reinterpret_cast<VkAccelerationStructureGeometryTrianglesDataKHR *>( this );
298     }
299 
300 #if 14 <= VULKAN_HPP_CPP_VERSION
301     auto
302 #else
303     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
304                const void * const &,
305                VULKAN_HPP_NAMESPACE::Format const &,
306                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const &,
307                VULKAN_HPP_NAMESPACE::DeviceSize const &,
308                uint32_t const &,
309                VULKAN_HPP_NAMESPACE::IndexType const &,
310                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const &,
311                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const &>
312 #endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR313       reflect() const VULKAN_HPP_NOEXCEPT
314     {
315       return std::tie(
316         sType, pNext, vertexFormat, vertexData, vertexStride, maxVertex, indexType, indexData, transformData );
317     }
318 
319   public:
320     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::eAccelerationStructureGeometryTrianglesDataKHR;
321     const void *                        pNext        = {};
322     VULKAN_HPP_NAMESPACE::Format        vertexFormat = VULKAN_HPP_NAMESPACE::Format::eUndefined;
323     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR vertexData    = {};
324     VULKAN_HPP_NAMESPACE::DeviceSize                  vertexStride  = {};
325     uint32_t                                          maxVertex     = {};
326     VULKAN_HPP_NAMESPACE::IndexType                   indexType     = VULKAN_HPP_NAMESPACE::IndexType::eUint16;
327     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR indexData     = {};
328     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR transformData = {};
329   };
330   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR ) ==
331                               sizeof( VkAccelerationStructureGeometryTrianglesDataKHR ),
332                             "struct and wrapper have different size!" );
333   VULKAN_HPP_STATIC_ASSERT(
334     std::is_standard_layout<VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR>::value,
335     "struct wrapper is not a standard layout!" );
336   VULKAN_HPP_STATIC_ASSERT(
337     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR>::value,
338     "AccelerationStructureGeometryTrianglesDataKHR is not nothrow_move_constructible!" );
339 
340   template <>
341   struct CppType<StructureType, StructureType::eAccelerationStructureGeometryTrianglesDataKHR>
342   {
343     using Type = AccelerationStructureGeometryTrianglesDataKHR;
344   };
345 
346   struct AccelerationStructureGeometryAabbsDataKHR
347   {
348     using NativeType = VkAccelerationStructureGeometryAabbsDataKHR;
349 
350     static const bool                                  allowDuplicate = false;
351     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
352       StructureType::eAccelerationStructureGeometryAabbsDataKHR;
353 
354 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
355     VULKAN_HPP_CONSTEXPR_14
AccelerationStructureGeometryAabbsDataKHRVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR356       AccelerationStructureGeometryAabbsDataKHR( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR data_ = {},
357                                                  VULKAN_HPP_NAMESPACE::DeviceSize stride_ = {} ) VULKAN_HPP_NOEXCEPT
358       : data( data_ )
359       , stride( stride_ )
360     {}
361 
362     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryAabbsDataKHR(
363       AccelerationStructureGeometryAabbsDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
364 
AccelerationStructureGeometryAabbsDataKHRVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR365     AccelerationStructureGeometryAabbsDataKHR( VkAccelerationStructureGeometryAabbsDataKHR const & rhs )
366       VULKAN_HPP_NOEXCEPT
367       : AccelerationStructureGeometryAabbsDataKHR(
368           *reinterpret_cast<AccelerationStructureGeometryAabbsDataKHR const *>( &rhs ) )
369     {}
370 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
371 
372     AccelerationStructureGeometryAabbsDataKHR &
373       operator=( AccelerationStructureGeometryAabbsDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
374 
375     AccelerationStructureGeometryAabbsDataKHR &
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR376       operator=( VkAccelerationStructureGeometryAabbsDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT
377     {
378       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR const *>( &rhs );
379       return *this;
380     }
381 
382 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
383     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryAabbsDataKHR &
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR384                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
385     {
386       pNext = pNext_;
387       return *this;
388     }
389 
390     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryAabbsDataKHR &
setDataVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR391       setData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & data_ ) VULKAN_HPP_NOEXCEPT
392     {
393       data = data_;
394       return *this;
395     }
396 
397     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryAabbsDataKHR &
setStrideVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR398                             setStride( VULKAN_HPP_NAMESPACE::DeviceSize stride_ ) VULKAN_HPP_NOEXCEPT
399     {
400       stride = stride_;
401       return *this;
402     }
403 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
404 
operator VkAccelerationStructureGeometryAabbsDataKHR const&VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR405     explicit operator VkAccelerationStructureGeometryAabbsDataKHR const &() const VULKAN_HPP_NOEXCEPT
406     {
407       return *reinterpret_cast<const VkAccelerationStructureGeometryAabbsDataKHR *>( this );
408     }
409 
operator VkAccelerationStructureGeometryAabbsDataKHR&VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR410     explicit operator VkAccelerationStructureGeometryAabbsDataKHR &() VULKAN_HPP_NOEXCEPT
411     {
412       return *reinterpret_cast<VkAccelerationStructureGeometryAabbsDataKHR *>( this );
413     }
414 
415 #if 14 <= VULKAN_HPP_CPP_VERSION
416     auto
417 #else
418     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
419                const void * const &,
420                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const &,
421                VULKAN_HPP_NAMESPACE::DeviceSize const &>
422 #endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR423       reflect() const VULKAN_HPP_NOEXCEPT
424     {
425       return std::tie( sType, pNext, data, stride );
426     }
427 
428   public:
429     VULKAN_HPP_NAMESPACE::StructureType               sType = StructureType::eAccelerationStructureGeometryAabbsDataKHR;
430     const void *                                      pNext = {};
431     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR data  = {};
432     VULKAN_HPP_NAMESPACE::DeviceSize                  stride = {};
433   };
434   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR ) ==
435                               sizeof( VkAccelerationStructureGeometryAabbsDataKHR ),
436                             "struct and wrapper have different size!" );
437   VULKAN_HPP_STATIC_ASSERT(
438     std::is_standard_layout<VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR>::value,
439     "struct wrapper is not a standard layout!" );
440   VULKAN_HPP_STATIC_ASSERT(
441     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR>::value,
442     "AccelerationStructureGeometryAabbsDataKHR is not nothrow_move_constructible!" );
443 
444   template <>
445   struct CppType<StructureType, StructureType::eAccelerationStructureGeometryAabbsDataKHR>
446   {
447     using Type = AccelerationStructureGeometryAabbsDataKHR;
448   };
449 
450   struct AccelerationStructureGeometryInstancesDataKHR
451   {
452     using NativeType = VkAccelerationStructureGeometryInstancesDataKHR;
453 
454     static const bool                                  allowDuplicate = false;
455     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
456       StructureType::eAccelerationStructureGeometryInstancesDataKHR;
457 
458 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureGeometryInstancesDataKHRVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR459     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryInstancesDataKHR(
460       VULKAN_HPP_NAMESPACE::Bool32                      arrayOfPointers_ = {},
461       VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR data_            = {} ) VULKAN_HPP_NOEXCEPT
462       : arrayOfPointers( arrayOfPointers_ )
463       , data( data_ )
464     {}
465 
466     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryInstancesDataKHR(
467       AccelerationStructureGeometryInstancesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
468 
AccelerationStructureGeometryInstancesDataKHRVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR469     AccelerationStructureGeometryInstancesDataKHR( VkAccelerationStructureGeometryInstancesDataKHR const & rhs )
470       VULKAN_HPP_NOEXCEPT
471       : AccelerationStructureGeometryInstancesDataKHR(
472           *reinterpret_cast<AccelerationStructureGeometryInstancesDataKHR const *>( &rhs ) )
473     {}
474 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
475 
476     AccelerationStructureGeometryInstancesDataKHR &
477       operator=( AccelerationStructureGeometryInstancesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
478 
479     AccelerationStructureGeometryInstancesDataKHR &
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR480       operator=( VkAccelerationStructureGeometryInstancesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT
481     {
482       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR const *>( &rhs );
483       return *this;
484     }
485 
486 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
487     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryInstancesDataKHR &
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR488                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
489     {
490       pNext = pNext_;
491       return *this;
492     }
493 
494     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryInstancesDataKHR &
setArrayOfPointersVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR495                             setArrayOfPointers( VULKAN_HPP_NAMESPACE::Bool32 arrayOfPointers_ ) VULKAN_HPP_NOEXCEPT
496     {
497       arrayOfPointers = arrayOfPointers_;
498       return *this;
499     }
500 
501     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryInstancesDataKHR &
setDataVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR502       setData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & data_ ) VULKAN_HPP_NOEXCEPT
503     {
504       data = data_;
505       return *this;
506     }
507 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
508 
operator VkAccelerationStructureGeometryInstancesDataKHR const&VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR509     explicit operator VkAccelerationStructureGeometryInstancesDataKHR const &() const VULKAN_HPP_NOEXCEPT
510     {
511       return *reinterpret_cast<const VkAccelerationStructureGeometryInstancesDataKHR *>( this );
512     }
513 
operator VkAccelerationStructureGeometryInstancesDataKHR&VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR514     explicit operator VkAccelerationStructureGeometryInstancesDataKHR &() VULKAN_HPP_NOEXCEPT
515     {
516       return *reinterpret_cast<VkAccelerationStructureGeometryInstancesDataKHR *>( this );
517     }
518 
519 #if 14 <= VULKAN_HPP_CPP_VERSION
520     auto
521 #else
522     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
523                const void * const &,
524                VULKAN_HPP_NAMESPACE::Bool32 const &,
525                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const &>
526 #endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR527       reflect() const VULKAN_HPP_NOEXCEPT
528     {
529       return std::tie( sType, pNext, arrayOfPointers, data );
530     }
531 
532   public:
533     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::eAccelerationStructureGeometryInstancesDataKHR;
534     const void *                        pNext           = {};
535     VULKAN_HPP_NAMESPACE::Bool32        arrayOfPointers = {};
536     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR data = {};
537   };
538   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR ) ==
539                               sizeof( VkAccelerationStructureGeometryInstancesDataKHR ),
540                             "struct and wrapper have different size!" );
541   VULKAN_HPP_STATIC_ASSERT(
542     std::is_standard_layout<VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR>::value,
543     "struct wrapper is not a standard layout!" );
544   VULKAN_HPP_STATIC_ASSERT(
545     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR>::value,
546     "AccelerationStructureGeometryInstancesDataKHR is not nothrow_move_constructible!" );
547 
548   template <>
549   struct CppType<StructureType, StructureType::eAccelerationStructureGeometryInstancesDataKHR>
550   {
551     using Type = AccelerationStructureGeometryInstancesDataKHR;
552   };
553 
554   union AccelerationStructureGeometryDataKHR
555   {
556     using NativeType = VkAccelerationStructureGeometryDataKHR;
557 #if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS )
558 
AccelerationStructureGeometryDataKHR(VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR triangles_={} )559     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryDataKHR(
560       VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR triangles_ = {} )
561       : triangles( triangles_ )
562     {}
563 
564     VULKAN_HPP_CONSTEXPR_14
AccelerationStructureGeometryDataKHR(VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR aabbs_)565       AccelerationStructureGeometryDataKHR( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR aabbs_ )
566       : aabbs( aabbs_ )
567     {}
568 
AccelerationStructureGeometryDataKHR(VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR instances_)569     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryDataKHR(
570       VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR instances_ )
571       : instances( instances_ )
572     {}
573 #endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/
574 
575 #if !defined( VULKAN_HPP_NO_UNION_SETTERS )
setTriangles(VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR const & triangles_)576     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryDataKHR & setTriangles(
577       VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR const & triangles_ ) VULKAN_HPP_NOEXCEPT
578     {
579       triangles = triangles_;
580       return *this;
581     }
582 
583     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryDataKHR &
setAabbs(VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR const & aabbs_)584       setAabbs( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR const & aabbs_ ) VULKAN_HPP_NOEXCEPT
585     {
586       aabbs = aabbs_;
587       return *this;
588     }
589 
setInstances(VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR const & instances_)590     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryDataKHR & setInstances(
591       VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR const & instances_ ) VULKAN_HPP_NOEXCEPT
592     {
593       instances = instances_;
594       return *this;
595     }
596 #endif /*VULKAN_HPP_NO_UNION_SETTERS*/
597 
operator VkAccelerationStructureGeometryDataKHR const&() const598     operator VkAccelerationStructureGeometryDataKHR const &() const
599     {
600       return *reinterpret_cast<const VkAccelerationStructureGeometryDataKHR *>( this );
601     }
602 
operator VkAccelerationStructureGeometryDataKHR&()603     operator VkAccelerationStructureGeometryDataKHR &()
604     {
605       return *reinterpret_cast<VkAccelerationStructureGeometryDataKHR *>( this );
606     }
607 
608 #ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
609     VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR triangles;
610     VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR     aabbs;
611     VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR instances;
612 #else
613     VkAccelerationStructureGeometryTrianglesDataKHR triangles;
614     VkAccelerationStructureGeometryAabbsDataKHR     aabbs;
615     VkAccelerationStructureGeometryInstancesDataKHR instances;
616 #endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/
617   };
618 
619   struct AccelerationStructureGeometryKHR
620   {
621     using NativeType = VkAccelerationStructureGeometryKHR;
622 
623     static const bool                                  allowDuplicate = false;
624     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAccelerationStructureGeometryKHR;
625 
626 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureGeometryKHRVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR627     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryKHR(
628       VULKAN_HPP_NAMESPACE::GeometryTypeKHR geometryType_ = VULKAN_HPP_NAMESPACE::GeometryTypeKHR::eTriangles,
629       VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryDataKHR geometry_ = {},
630       VULKAN_HPP_NAMESPACE::GeometryFlagsKHR                     flags_    = {} ) VULKAN_HPP_NOEXCEPT
631       : geometryType( geometryType_ )
632       , geometry( geometry_ )
633       , flags( flags_ )
634     {}
635 
636     VULKAN_HPP_CONSTEXPR_14
637       AccelerationStructureGeometryKHR( AccelerationStructureGeometryKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
638 
AccelerationStructureGeometryKHRVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR639     AccelerationStructureGeometryKHR( VkAccelerationStructureGeometryKHR const & rhs ) VULKAN_HPP_NOEXCEPT
640       : AccelerationStructureGeometryKHR( *reinterpret_cast<AccelerationStructureGeometryKHR const *>( &rhs ) )
641     {}
642 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
643 
644     AccelerationStructureGeometryKHR &
645       operator=( AccelerationStructureGeometryKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
646 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR647     AccelerationStructureGeometryKHR & operator=( VkAccelerationStructureGeometryKHR const & rhs ) VULKAN_HPP_NOEXCEPT
648     {
649       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR const *>( &rhs );
650       return *this;
651     }
652 
653 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR654     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
655     {
656       pNext = pNext_;
657       return *this;
658     }
659 
660     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryKHR &
setGeometryTypeVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR661                             setGeometryType( VULKAN_HPP_NAMESPACE::GeometryTypeKHR geometryType_ ) VULKAN_HPP_NOEXCEPT
662     {
663       geometryType = geometryType_;
664       return *this;
665     }
666 
667     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryKHR &
setGeometryVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR668       setGeometry( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryDataKHR const & geometry_ ) VULKAN_HPP_NOEXCEPT
669     {
670       geometry = geometry_;
671       return *this;
672     }
673 
674     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryKHR &
setFlagsVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR675                             setFlags( VULKAN_HPP_NAMESPACE::GeometryFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
676     {
677       flags = flags_;
678       return *this;
679     }
680 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
681 
operator VkAccelerationStructureGeometryKHR const&VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR682     explicit operator VkAccelerationStructureGeometryKHR const &() const VULKAN_HPP_NOEXCEPT
683     {
684       return *reinterpret_cast<const VkAccelerationStructureGeometryKHR *>( this );
685     }
686 
operator VkAccelerationStructureGeometryKHR&VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR687     explicit operator VkAccelerationStructureGeometryKHR &() VULKAN_HPP_NOEXCEPT
688     {
689       return *reinterpret_cast<VkAccelerationStructureGeometryKHR *>( this );
690     }
691 
692 #if 14 <= VULKAN_HPP_CPP_VERSION
693     auto
694 #else
695     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
696                const void * const &,
697                VULKAN_HPP_NAMESPACE::GeometryTypeKHR const &,
698                VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryDataKHR const &,
699                VULKAN_HPP_NAMESPACE::GeometryFlagsKHR const &>
700 #endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR701       reflect() const VULKAN_HPP_NOEXCEPT
702     {
703       return std::tie( sType, pNext, geometryType, geometry, flags );
704     }
705 
706   public:
707     VULKAN_HPP_NAMESPACE::StructureType   sType        = StructureType::eAccelerationStructureGeometryKHR;
708     const void *                          pNext        = {};
709     VULKAN_HPP_NAMESPACE::GeometryTypeKHR geometryType = VULKAN_HPP_NAMESPACE::GeometryTypeKHR::eTriangles;
710     VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryDataKHR geometry = {};
711     VULKAN_HPP_NAMESPACE::GeometryFlagsKHR                     flags    = {};
712   };
713   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR ) ==
714                               sizeof( VkAccelerationStructureGeometryKHR ),
715                             "struct and wrapper have different size!" );
716   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR>::value,
717                             "struct wrapper is not a standard layout!" );
718   VULKAN_HPP_STATIC_ASSERT(
719     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR>::value,
720     "AccelerationStructureGeometryKHR is not nothrow_move_constructible!" );
721 
722   template <>
723   struct CppType<StructureType, StructureType::eAccelerationStructureGeometryKHR>
724   {
725     using Type = AccelerationStructureGeometryKHR;
726   };
727 
728   union DeviceOrHostAddressKHR
729   {
730     using NativeType = VkDeviceOrHostAddressKHR;
731 #if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS )
732 
DeviceOrHostAddressKHR(VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_={} )733     VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressKHR( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ = {} )
734       : deviceAddress( deviceAddress_ )
735     {}
736 
DeviceOrHostAddressKHR(void * hostAddress_)737     VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressKHR( void * hostAddress_ ) : hostAddress( hostAddress_ ) {}
738 #endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/
739 
740 #if !defined( VULKAN_HPP_NO_UNION_SETTERS )
741     VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressKHR &
setDeviceAddress(VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_)742                             setDeviceAddress( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ ) VULKAN_HPP_NOEXCEPT
743     {
744       deviceAddress = deviceAddress_;
745       return *this;
746     }
747 
setHostAddress(void * hostAddress_)748     VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressKHR & setHostAddress( void * hostAddress_ ) VULKAN_HPP_NOEXCEPT
749     {
750       hostAddress = hostAddress_;
751       return *this;
752     }
753 #endif /*VULKAN_HPP_NO_UNION_SETTERS*/
754 
operator VkDeviceOrHostAddressKHR const&() const755     operator VkDeviceOrHostAddressKHR const &() const
756     {
757       return *reinterpret_cast<const VkDeviceOrHostAddressKHR *>( this );
758     }
759 
operator VkDeviceOrHostAddressKHR&()760     operator VkDeviceOrHostAddressKHR &()
761     {
762       return *reinterpret_cast<VkDeviceOrHostAddressKHR *>( this );
763     }
764 
765 #ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
766     VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress;
767     void *                              hostAddress;
768 #else
769     VkDeviceAddress deviceAddress;
770     void *          hostAddress;
771 #endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/
772   };
773 
774   struct AccelerationStructureBuildGeometryInfoKHR
775   {
776     using NativeType = VkAccelerationStructureBuildGeometryInfoKHR;
777 
778     static const bool                                  allowDuplicate = false;
779     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
780       StructureType::eAccelerationStructureBuildGeometryInfoKHR;
781 
782 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureBuildGeometryInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR783     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR(
784       VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR type_ =
785         VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR::eTopLevel,
786       VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsKHR flags_ = {},
787       VULKAN_HPP_NAMESPACE::BuildAccelerationStructureModeKHR  mode_ =
788         VULKAN_HPP_NAMESPACE::BuildAccelerationStructureModeKHR::eBuild,
789       VULKAN_HPP_NAMESPACE::AccelerationStructureKHR                         srcAccelerationStructure_ = {},
790       VULKAN_HPP_NAMESPACE::AccelerationStructureKHR                         dstAccelerationStructure_ = {},
791       uint32_t                                                               geometryCount_            = {},
792       const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR *         pGeometries_              = {},
793       const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR * const * ppGeometries_             = {},
794       VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR                           scratchData_ = {} ) VULKAN_HPP_NOEXCEPT
795       : type( type_ )
796       , flags( flags_ )
797       , mode( mode_ )
798       , srcAccelerationStructure( srcAccelerationStructure_ )
799       , dstAccelerationStructure( dstAccelerationStructure_ )
800       , geometryCount( geometryCount_ )
801       , pGeometries( pGeometries_ )
802       , ppGeometries( ppGeometries_ )
803       , scratchData( scratchData_ )
804     {}
805 
806     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR(
807       AccelerationStructureBuildGeometryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
808 
AccelerationStructureBuildGeometryInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR809     AccelerationStructureBuildGeometryInfoKHR( VkAccelerationStructureBuildGeometryInfoKHR const & rhs )
810       VULKAN_HPP_NOEXCEPT
811       : AccelerationStructureBuildGeometryInfoKHR(
812           *reinterpret_cast<AccelerationStructureBuildGeometryInfoKHR const *>( &rhs ) )
813     {}
814 
815 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
AccelerationStructureBuildGeometryInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR816     AccelerationStructureBuildGeometryInfoKHR(
817       VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR       type_,
818       VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsKHR flags_,
819       VULKAN_HPP_NAMESPACE::BuildAccelerationStructureModeKHR  mode_,
820       VULKAN_HPP_NAMESPACE::AccelerationStructureKHR           srcAccelerationStructure_,
821       VULKAN_HPP_NAMESPACE::AccelerationStructureKHR           dstAccelerationStructure_,
822       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<
823         const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR> const & geometries_,
824       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<
825         const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR * const> const & pGeometries_ = {},
826       VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR                                    scratchData_ = {} )
827       : type( type_ )
828       , flags( flags_ )
829       , mode( mode_ )
830       , srcAccelerationStructure( srcAccelerationStructure_ )
831       , dstAccelerationStructure( dstAccelerationStructure_ )
832       , geometryCount( static_cast<uint32_t>( !geometries_.empty() ? geometries_.size() : pGeometries_.size() ) )
833       , pGeometries( geometries_.data() )
834       , ppGeometries( pGeometries_.data() )
835       , scratchData( scratchData_ )
836     {
837 #    ifdef VULKAN_HPP_NO_EXCEPTIONS
838       VULKAN_HPP_ASSERT( ( !geometries_.empty() + !pGeometries_.empty() ) <= 1 );
839 #    else
840       if ( 1 < ( !geometries_.empty() + !pGeometries_.empty() ) )
841       {
842         throw LogicError(
843           VULKAN_HPP_NAMESPACE_STRING
844           "::AccelerationStructureBuildGeometryInfoKHR::AccelerationStructureBuildGeometryInfoKHR: 1 < ( !geometries_.empty() + !pGeometries_.empty() )" );
845       }
846 #    endif /*VULKAN_HPP_NO_EXCEPTIONS*/
847     }
848 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
849 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
850 
851     AccelerationStructureBuildGeometryInfoKHR &
852       operator=( AccelerationStructureBuildGeometryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
853 
854     AccelerationStructureBuildGeometryInfoKHR &
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR855       operator=( VkAccelerationStructureBuildGeometryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
856     {
857       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR const *>( &rhs );
858       return *this;
859     }
860 
861 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
862     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR &
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR863                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
864     {
865       pNext = pNext_;
866       return *this;
867     }
868 
869     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR &
setTypeVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR870                             setType( VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR type_ ) VULKAN_HPP_NOEXCEPT
871     {
872       type = type_;
873       return *this;
874     }
875 
876     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR &
setFlagsVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR877       setFlags( VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
878     {
879       flags = flags_;
880       return *this;
881     }
882 
883     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR &
setModeVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR884                             setMode( VULKAN_HPP_NAMESPACE::BuildAccelerationStructureModeKHR mode_ ) VULKAN_HPP_NOEXCEPT
885     {
886       mode = mode_;
887       return *this;
888     }
889 
setSrcAccelerationStructureVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR890     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR & setSrcAccelerationStructure(
891       VULKAN_HPP_NAMESPACE::AccelerationStructureKHR srcAccelerationStructure_ ) VULKAN_HPP_NOEXCEPT
892     {
893       srcAccelerationStructure = srcAccelerationStructure_;
894       return *this;
895     }
896 
setDstAccelerationStructureVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR897     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR & setDstAccelerationStructure(
898       VULKAN_HPP_NAMESPACE::AccelerationStructureKHR dstAccelerationStructure_ ) VULKAN_HPP_NOEXCEPT
899     {
900       dstAccelerationStructure = dstAccelerationStructure_;
901       return *this;
902     }
903 
904     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR &
setGeometryCountVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR905                             setGeometryCount( uint32_t geometryCount_ ) VULKAN_HPP_NOEXCEPT
906     {
907       geometryCount = geometryCount_;
908       return *this;
909     }
910 
911     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR &
setPGeometriesVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR912       setPGeometries( const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR * pGeometries_ ) VULKAN_HPP_NOEXCEPT
913     {
914       pGeometries = pGeometries_;
915       return *this;
916     }
917 
918 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setGeometriesVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR919     AccelerationStructureBuildGeometryInfoKHR & setGeometries(
920       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<
921         const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR> const & geometries_ ) VULKAN_HPP_NOEXCEPT
922     {
923       geometryCount = static_cast<uint32_t>( geometries_.size() );
924       pGeometries   = geometries_.data();
925       return *this;
926     }
927 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
928 
setPpGeometriesVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR929     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR & setPpGeometries(
930       const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR * const * ppGeometries_ ) VULKAN_HPP_NOEXCEPT
931     {
932       ppGeometries = ppGeometries_;
933       return *this;
934     }
935 
936 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPGeometriesVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR937     AccelerationStructureBuildGeometryInfoKHR & setPGeometries(
938       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<
939         const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR * const> const & pGeometries_ ) VULKAN_HPP_NOEXCEPT
940     {
941       geometryCount = static_cast<uint32_t>( pGeometries_.size() );
942       ppGeometries  = pGeometries_.data();
943       return *this;
944     }
945 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
946 
947     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR &
setScratchDataVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR948       setScratchData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR const & scratchData_ ) VULKAN_HPP_NOEXCEPT
949     {
950       scratchData = scratchData_;
951       return *this;
952     }
953 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
954 
operator VkAccelerationStructureBuildGeometryInfoKHR const&VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR955     explicit operator VkAccelerationStructureBuildGeometryInfoKHR const &() const VULKAN_HPP_NOEXCEPT
956     {
957       return *reinterpret_cast<const VkAccelerationStructureBuildGeometryInfoKHR *>( this );
958     }
959 
operator VkAccelerationStructureBuildGeometryInfoKHR&VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR960     explicit operator VkAccelerationStructureBuildGeometryInfoKHR &() VULKAN_HPP_NOEXCEPT
961     {
962       return *reinterpret_cast<VkAccelerationStructureBuildGeometryInfoKHR *>( this );
963     }
964 
965 #if 14 <= VULKAN_HPP_CPP_VERSION
966     auto
967 #else
968     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
969                const void * const &,
970                VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR const &,
971                VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsKHR const &,
972                VULKAN_HPP_NAMESPACE::BuildAccelerationStructureModeKHR const &,
973                VULKAN_HPP_NAMESPACE::AccelerationStructureKHR const &,
974                VULKAN_HPP_NAMESPACE::AccelerationStructureKHR const &,
975                uint32_t const &,
976                const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR * const &,
977                const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR * const * const &,
978                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR const &>
979 #endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR980       reflect() const VULKAN_HPP_NOEXCEPT
981     {
982       return std::tie( sType,
983                        pNext,
984                        type,
985                        flags,
986                        mode,
987                        srcAccelerationStructure,
988                        dstAccelerationStructure,
989                        geometryCount,
990                        pGeometries,
991                        ppGeometries,
992                        scratchData );
993     }
994 
995   public:
996     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureBuildGeometryInfoKHR;
997     const void *                        pNext = {};
998     VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR type =
999       VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR::eTopLevel;
1000     VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsKHR flags = {};
1001     VULKAN_HPP_NAMESPACE::BuildAccelerationStructureModeKHR  mode =
1002       VULKAN_HPP_NAMESPACE::BuildAccelerationStructureModeKHR::eBuild;
1003     VULKAN_HPP_NAMESPACE::AccelerationStructureKHR                         srcAccelerationStructure = {};
1004     VULKAN_HPP_NAMESPACE::AccelerationStructureKHR                         dstAccelerationStructure = {};
1005     uint32_t                                                               geometryCount            = {};
1006     const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR *         pGeometries              = {};
1007     const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR * const * ppGeometries             = {};
1008     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR                           scratchData              = {};
1009   };
1010   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR ) ==
1011                               sizeof( VkAccelerationStructureBuildGeometryInfoKHR ),
1012                             "struct and wrapper have different size!" );
1013   VULKAN_HPP_STATIC_ASSERT(
1014     std::is_standard_layout<VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR>::value,
1015     "struct wrapper is not a standard layout!" );
1016   VULKAN_HPP_STATIC_ASSERT(
1017     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR>::value,
1018     "AccelerationStructureBuildGeometryInfoKHR is not nothrow_move_constructible!" );
1019 
1020   template <>
1021   struct CppType<StructureType, StructureType::eAccelerationStructureBuildGeometryInfoKHR>
1022   {
1023     using Type = AccelerationStructureBuildGeometryInfoKHR;
1024   };
1025 
1026   struct AccelerationStructureBuildRangeInfoKHR
1027   {
1028     using NativeType = VkAccelerationStructureBuildRangeInfoKHR;
1029 
1030 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureBuildRangeInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR1031     VULKAN_HPP_CONSTEXPR AccelerationStructureBuildRangeInfoKHR( uint32_t primitiveCount_  = {},
1032                                                                  uint32_t primitiveOffset_ = {},
1033                                                                  uint32_t firstVertex_     = {},
1034                                                                  uint32_t transformOffset_ = {} ) VULKAN_HPP_NOEXCEPT
1035       : primitiveCount( primitiveCount_ )
1036       , primitiveOffset( primitiveOffset_ )
1037       , firstVertex( firstVertex_ )
1038       , transformOffset( transformOffset_ )
1039     {}
1040 
1041     VULKAN_HPP_CONSTEXPR AccelerationStructureBuildRangeInfoKHR( AccelerationStructureBuildRangeInfoKHR const & rhs )
1042       VULKAN_HPP_NOEXCEPT = default;
1043 
AccelerationStructureBuildRangeInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR1044     AccelerationStructureBuildRangeInfoKHR( VkAccelerationStructureBuildRangeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
1045       : AccelerationStructureBuildRangeInfoKHR(
1046           *reinterpret_cast<AccelerationStructureBuildRangeInfoKHR const *>( &rhs ) )
1047     {}
1048 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
1049 
1050     AccelerationStructureBuildRangeInfoKHR &
1051       operator=( AccelerationStructureBuildRangeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1052 
1053     AccelerationStructureBuildRangeInfoKHR &
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR1054       operator=( VkAccelerationStructureBuildRangeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
1055     {
1056       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR const *>( &rhs );
1057       return *this;
1058     }
1059 
1060 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
1061     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildRangeInfoKHR &
setPrimitiveCountVULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR1062                             setPrimitiveCount( uint32_t primitiveCount_ ) VULKAN_HPP_NOEXCEPT
1063     {
1064       primitiveCount = primitiveCount_;
1065       return *this;
1066     }
1067 
1068     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildRangeInfoKHR &
setPrimitiveOffsetVULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR1069                             setPrimitiveOffset( uint32_t primitiveOffset_ ) VULKAN_HPP_NOEXCEPT
1070     {
1071       primitiveOffset = primitiveOffset_;
1072       return *this;
1073     }
1074 
1075     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildRangeInfoKHR &
setFirstVertexVULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR1076                             setFirstVertex( uint32_t firstVertex_ ) VULKAN_HPP_NOEXCEPT
1077     {
1078       firstVertex = firstVertex_;
1079       return *this;
1080     }
1081 
1082     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildRangeInfoKHR &
setTransformOffsetVULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR1083                             setTransformOffset( uint32_t transformOffset_ ) VULKAN_HPP_NOEXCEPT
1084     {
1085       transformOffset = transformOffset_;
1086       return *this;
1087     }
1088 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
1089 
operator VkAccelerationStructureBuildRangeInfoKHR const&VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR1090     explicit operator VkAccelerationStructureBuildRangeInfoKHR const &() const VULKAN_HPP_NOEXCEPT
1091     {
1092       return *reinterpret_cast<const VkAccelerationStructureBuildRangeInfoKHR *>( this );
1093     }
1094 
operator VkAccelerationStructureBuildRangeInfoKHR&VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR1095     explicit operator VkAccelerationStructureBuildRangeInfoKHR &() VULKAN_HPP_NOEXCEPT
1096     {
1097       return *reinterpret_cast<VkAccelerationStructureBuildRangeInfoKHR *>( this );
1098     }
1099 
1100 #if 14 <= VULKAN_HPP_CPP_VERSION
1101     auto
1102 #else
1103     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &>
1104 #endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR1105       reflect() const VULKAN_HPP_NOEXCEPT
1106     {
1107       return std::tie( primitiveCount, primitiveOffset, firstVertex, transformOffset );
1108     }
1109 
1110 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
1111     auto operator<=>( AccelerationStructureBuildRangeInfoKHR const & ) const = default;
1112 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR1113     bool operator==( AccelerationStructureBuildRangeInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
1114     {
1115       return this->reflect() == rhs.reflect();
1116     }
1117 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR1118     bool operator!=( AccelerationStructureBuildRangeInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
1119     {
1120       return this->reflect() != rhs.reflect();
1121     }
1122 #endif
1123 
1124   public:
1125     uint32_t primitiveCount  = {};
1126     uint32_t primitiveOffset = {};
1127     uint32_t firstVertex     = {};
1128     uint32_t transformOffset = {};
1129   };
1130   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR ) ==
1131                               sizeof( VkAccelerationStructureBuildRangeInfoKHR ),
1132                             "struct and wrapper have different size!" );
1133   VULKAN_HPP_STATIC_ASSERT(
1134     std::is_standard_layout<VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR>::value,
1135     "struct wrapper is not a standard layout!" );
1136   VULKAN_HPP_STATIC_ASSERT(
1137     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR>::value,
1138     "AccelerationStructureBuildRangeInfoKHR is not nothrow_move_constructible!" );
1139 
1140   struct AccelerationStructureBuildSizesInfoKHR
1141   {
1142     using NativeType = VkAccelerationStructureBuildSizesInfoKHR;
1143 
1144     static const bool                                  allowDuplicate = false;
1145     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
1146       StructureType::eAccelerationStructureBuildSizesInfoKHR;
1147 
1148 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureBuildSizesInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR1149     VULKAN_HPP_CONSTEXPR AccelerationStructureBuildSizesInfoKHR(
1150       VULKAN_HPP_NAMESPACE::DeviceSize accelerationStructureSize_ = {},
1151       VULKAN_HPP_NAMESPACE::DeviceSize updateScratchSize_         = {},
1152       VULKAN_HPP_NAMESPACE::DeviceSize buildScratchSize_          = {} ) VULKAN_HPP_NOEXCEPT
1153       : accelerationStructureSize( accelerationStructureSize_ )
1154       , updateScratchSize( updateScratchSize_ )
1155       , buildScratchSize( buildScratchSize_ )
1156     {}
1157 
1158     VULKAN_HPP_CONSTEXPR AccelerationStructureBuildSizesInfoKHR( AccelerationStructureBuildSizesInfoKHR const & rhs )
1159       VULKAN_HPP_NOEXCEPT = default;
1160 
AccelerationStructureBuildSizesInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR1161     AccelerationStructureBuildSizesInfoKHR( VkAccelerationStructureBuildSizesInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
1162       : AccelerationStructureBuildSizesInfoKHR(
1163           *reinterpret_cast<AccelerationStructureBuildSizesInfoKHR const *>( &rhs ) )
1164     {}
1165 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
1166 
1167     AccelerationStructureBuildSizesInfoKHR &
1168       operator=( AccelerationStructureBuildSizesInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1169 
1170     AccelerationStructureBuildSizesInfoKHR &
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR1171       operator=( VkAccelerationStructureBuildSizesInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
1172     {
1173       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR const *>( &rhs );
1174       return *this;
1175     }
1176 
1177 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR1178     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildSizesInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
1179     {
1180       pNext = pNext_;
1181       return *this;
1182     }
1183 
1184     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildSizesInfoKHR &
setAccelerationStructureSizeVULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR1185       setAccelerationStructureSize( VULKAN_HPP_NAMESPACE::DeviceSize accelerationStructureSize_ ) VULKAN_HPP_NOEXCEPT
1186     {
1187       accelerationStructureSize = accelerationStructureSize_;
1188       return *this;
1189     }
1190 
1191     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildSizesInfoKHR &
setUpdateScratchSizeVULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR1192       setUpdateScratchSize( VULKAN_HPP_NAMESPACE::DeviceSize updateScratchSize_ ) VULKAN_HPP_NOEXCEPT
1193     {
1194       updateScratchSize = updateScratchSize_;
1195       return *this;
1196     }
1197 
1198     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildSizesInfoKHR &
setBuildScratchSizeVULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR1199       setBuildScratchSize( VULKAN_HPP_NAMESPACE::DeviceSize buildScratchSize_ ) VULKAN_HPP_NOEXCEPT
1200     {
1201       buildScratchSize = buildScratchSize_;
1202       return *this;
1203     }
1204 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
1205 
operator VkAccelerationStructureBuildSizesInfoKHR const&VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR1206     explicit operator VkAccelerationStructureBuildSizesInfoKHR const &() const VULKAN_HPP_NOEXCEPT
1207     {
1208       return *reinterpret_cast<const VkAccelerationStructureBuildSizesInfoKHR *>( this );
1209     }
1210 
operator VkAccelerationStructureBuildSizesInfoKHR&VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR1211     explicit operator VkAccelerationStructureBuildSizesInfoKHR &() VULKAN_HPP_NOEXCEPT
1212     {
1213       return *reinterpret_cast<VkAccelerationStructureBuildSizesInfoKHR *>( this );
1214     }
1215 
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::DeviceSize const &,
1222                VULKAN_HPP_NAMESPACE::DeviceSize const &,
1223                VULKAN_HPP_NAMESPACE::DeviceSize const &>
1224 #endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR1225       reflect() const VULKAN_HPP_NOEXCEPT
1226     {
1227       return std::tie( sType, pNext, accelerationStructureSize, updateScratchSize, buildScratchSize );
1228     }
1229 
1230 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
1231     auto operator<=>( AccelerationStructureBuildSizesInfoKHR const & ) const = default;
1232 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR1233     bool operator==( AccelerationStructureBuildSizesInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
1234     {
1235       return this->reflect() == rhs.reflect();
1236     }
1237 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR1238     bool operator!=( AccelerationStructureBuildSizesInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
1239     {
1240       return this->reflect() != rhs.reflect();
1241     }
1242 #endif
1243 
1244   public:
1245     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureBuildSizesInfoKHR;
1246     const void *                        pNext = {};
1247     VULKAN_HPP_NAMESPACE::DeviceSize    accelerationStructureSize = {};
1248     VULKAN_HPP_NAMESPACE::DeviceSize    updateScratchSize         = {};
1249     VULKAN_HPP_NAMESPACE::DeviceSize    buildScratchSize          = {};
1250   };
1251   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR ) ==
1252                               sizeof( VkAccelerationStructureBuildSizesInfoKHR ),
1253                             "struct and wrapper have different size!" );
1254   VULKAN_HPP_STATIC_ASSERT(
1255     std::is_standard_layout<VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR>::value,
1256     "struct wrapper is not a standard layout!" );
1257   VULKAN_HPP_STATIC_ASSERT(
1258     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR>::value,
1259     "AccelerationStructureBuildSizesInfoKHR is not nothrow_move_constructible!" );
1260 
1261   template <>
1262   struct CppType<StructureType, StructureType::eAccelerationStructureBuildSizesInfoKHR>
1263   {
1264     using Type = AccelerationStructureBuildSizesInfoKHR;
1265   };
1266 
1267   struct AccelerationStructureCreateInfoKHR
1268   {
1269     using NativeType = VkAccelerationStructureCreateInfoKHR;
1270 
1271     static const bool                                  allowDuplicate = false;
1272     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
1273       StructureType::eAccelerationStructureCreateInfoKHR;
1274 
1275 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
1276     VULKAN_HPP_CONSTEXPR
AccelerationStructureCreateInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1277       AccelerationStructureCreateInfoKHR( VULKAN_HPP_NAMESPACE::AccelerationStructureCreateFlagsKHR createFlags_ = {},
1278                                           VULKAN_HPP_NAMESPACE::Buffer                              buffer_      = {},
1279                                           VULKAN_HPP_NAMESPACE::DeviceSize                          offset_      = {},
1280                                           VULKAN_HPP_NAMESPACE::DeviceSize                          size_        = {},
1281                                           VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR        type_ =
1282                                             VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR::eTopLevel,
1283                                           VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ = {} ) VULKAN_HPP_NOEXCEPT
1284       : createFlags( createFlags_ )
1285       , buffer( buffer_ )
1286       , offset( offset_ )
1287       , size( size_ )
1288       , type( type_ )
1289       , deviceAddress( deviceAddress_ )
1290     {}
1291 
1292     VULKAN_HPP_CONSTEXPR AccelerationStructureCreateInfoKHR( AccelerationStructureCreateInfoKHR const & rhs )
1293       VULKAN_HPP_NOEXCEPT = default;
1294 
AccelerationStructureCreateInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1295     AccelerationStructureCreateInfoKHR( VkAccelerationStructureCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
1296       : AccelerationStructureCreateInfoKHR( *reinterpret_cast<AccelerationStructureCreateInfoKHR const *>( &rhs ) )
1297     {}
1298 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
1299 
1300     AccelerationStructureCreateInfoKHR &
1301       operator=( AccelerationStructureCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1302 
1303     AccelerationStructureCreateInfoKHR &
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1304       operator=( VkAccelerationStructureCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
1305     {
1306       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR const *>( &rhs );
1307       return *this;
1308     }
1309 
1310 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1311     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
1312     {
1313       pNext = pNext_;
1314       return *this;
1315     }
1316 
1317     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR &
setCreateFlagsVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1318       setCreateFlags( VULKAN_HPP_NAMESPACE::AccelerationStructureCreateFlagsKHR createFlags_ ) VULKAN_HPP_NOEXCEPT
1319     {
1320       createFlags = createFlags_;
1321       return *this;
1322     }
1323 
1324     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR &
setBufferVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1325                             setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
1326     {
1327       buffer = buffer_;
1328       return *this;
1329     }
1330 
1331     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR &
setOffsetVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1332                             setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
1333     {
1334       offset = offset_;
1335       return *this;
1336     }
1337 
1338     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR &
setSizeVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1339                             setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
1340     {
1341       size = size_;
1342       return *this;
1343     }
1344 
1345     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR &
setTypeVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1346                             setType( VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR type_ ) VULKAN_HPP_NOEXCEPT
1347     {
1348       type = type_;
1349       return *this;
1350     }
1351 
1352     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR &
setDeviceAddressVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1353                             setDeviceAddress( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ ) VULKAN_HPP_NOEXCEPT
1354     {
1355       deviceAddress = deviceAddress_;
1356       return *this;
1357     }
1358 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
1359 
operator VkAccelerationStructureCreateInfoKHR const&VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1360     explicit operator VkAccelerationStructureCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
1361     {
1362       return *reinterpret_cast<const VkAccelerationStructureCreateInfoKHR *>( this );
1363     }
1364 
operator VkAccelerationStructureCreateInfoKHR&VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1365     explicit operator VkAccelerationStructureCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
1366     {
1367       return *reinterpret_cast<VkAccelerationStructureCreateInfoKHR *>( this );
1368     }
1369 
1370 #if 14 <= VULKAN_HPP_CPP_VERSION
1371     auto
1372 #else
1373     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
1374                const void * const &,
1375                VULKAN_HPP_NAMESPACE::AccelerationStructureCreateFlagsKHR const &,
1376                VULKAN_HPP_NAMESPACE::Buffer const &,
1377                VULKAN_HPP_NAMESPACE::DeviceSize const &,
1378                VULKAN_HPP_NAMESPACE::DeviceSize const &,
1379                VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR const &,
1380                VULKAN_HPP_NAMESPACE::DeviceAddress const &>
1381 #endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1382       reflect() const VULKAN_HPP_NOEXCEPT
1383     {
1384       return std::tie( sType, pNext, createFlags, buffer, offset, size, type, deviceAddress );
1385     }
1386 
1387 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
1388     auto operator<=>( AccelerationStructureCreateInfoKHR const & ) const = default;
1389 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1390     bool operator==( AccelerationStructureCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
1391     {
1392       return this->reflect() == rhs.reflect();
1393     }
1394 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1395     bool operator!=( AccelerationStructureCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
1396     {
1397       return this->reflect() != rhs.reflect();
1398     }
1399 #endif
1400 
1401   public:
1402     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureCreateInfoKHR;
1403     const void *                        pNext = {};
1404     VULKAN_HPP_NAMESPACE::AccelerationStructureCreateFlagsKHR createFlags = {};
1405     VULKAN_HPP_NAMESPACE::Buffer                              buffer      = {};
1406     VULKAN_HPP_NAMESPACE::DeviceSize                          offset      = {};
1407     VULKAN_HPP_NAMESPACE::DeviceSize                          size        = {};
1408     VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR        type =
1409       VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR::eTopLevel;
1410     VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress = {};
1411   };
1412   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR ) ==
1413                               sizeof( VkAccelerationStructureCreateInfoKHR ),
1414                             "struct and wrapper have different size!" );
1415   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR>::value,
1416                             "struct wrapper is not a standard layout!" );
1417   VULKAN_HPP_STATIC_ASSERT(
1418     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR>::value,
1419     "AccelerationStructureCreateInfoKHR is not nothrow_move_constructible!" );
1420 
1421   template <>
1422   struct CppType<StructureType, StructureType::eAccelerationStructureCreateInfoKHR>
1423   {
1424     using Type = AccelerationStructureCreateInfoKHR;
1425   };
1426 
1427   struct GeometryTrianglesNV
1428   {
1429     using NativeType = VkGeometryTrianglesNV;
1430 
1431     static const bool                                  allowDuplicate = false;
1432     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eGeometryTrianglesNV;
1433 
1434 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
1435     VULKAN_HPP_CONSTEXPR
GeometryTrianglesNVVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1436       GeometryTrianglesNV( VULKAN_HPP_NAMESPACE::Buffer     vertexData_      = {},
1437                            VULKAN_HPP_NAMESPACE::DeviceSize vertexOffset_    = {},
1438                            uint32_t                         vertexCount_     = {},
1439                            VULKAN_HPP_NAMESPACE::DeviceSize vertexStride_    = {},
1440                            VULKAN_HPP_NAMESPACE::Format     vertexFormat_    = VULKAN_HPP_NAMESPACE::Format::eUndefined,
1441                            VULKAN_HPP_NAMESPACE::Buffer     indexData_       = {},
1442                            VULKAN_HPP_NAMESPACE::DeviceSize indexOffset_     = {},
1443                            uint32_t                         indexCount_      = {},
1444                            VULKAN_HPP_NAMESPACE::IndexType  indexType_       = VULKAN_HPP_NAMESPACE::IndexType::eUint16,
1445                            VULKAN_HPP_NAMESPACE::Buffer     transformData_   = {},
1446                            VULKAN_HPP_NAMESPACE::DeviceSize transformOffset_ = {} ) VULKAN_HPP_NOEXCEPT
1447       : vertexData( vertexData_ )
1448       , vertexOffset( vertexOffset_ )
1449       , vertexCount( vertexCount_ )
1450       , vertexStride( vertexStride_ )
1451       , vertexFormat( vertexFormat_ )
1452       , indexData( indexData_ )
1453       , indexOffset( indexOffset_ )
1454       , indexCount( indexCount_ )
1455       , indexType( indexType_ )
1456       , transformData( transformData_ )
1457       , transformOffset( transformOffset_ )
1458     {}
1459 
1460     VULKAN_HPP_CONSTEXPR GeometryTrianglesNV( GeometryTrianglesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1461 
GeometryTrianglesNVVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1462     GeometryTrianglesNV( VkGeometryTrianglesNV const & rhs ) VULKAN_HPP_NOEXCEPT
1463       : GeometryTrianglesNV( *reinterpret_cast<GeometryTrianglesNV const *>( &rhs ) )
1464     {}
1465 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
1466 
1467     GeometryTrianglesNV & operator=( GeometryTrianglesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1468 
operator =VULKAN_HPP_NAMESPACE::GeometryTrianglesNV1469     GeometryTrianglesNV & operator=( VkGeometryTrianglesNV const & rhs ) VULKAN_HPP_NOEXCEPT
1470     {
1471       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GeometryTrianglesNV const *>( &rhs );
1472       return *this;
1473     }
1474 
1475 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1476     VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
1477     {
1478       pNext = pNext_;
1479       return *this;
1480     }
1481 
1482     VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV &
setVertexDataVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1483                             setVertexData( VULKAN_HPP_NAMESPACE::Buffer vertexData_ ) VULKAN_HPP_NOEXCEPT
1484     {
1485       vertexData = vertexData_;
1486       return *this;
1487     }
1488 
1489     VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV &
setVertexOffsetVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1490                             setVertexOffset( VULKAN_HPP_NAMESPACE::DeviceSize vertexOffset_ ) VULKAN_HPP_NOEXCEPT
1491     {
1492       vertexOffset = vertexOffset_;
1493       return *this;
1494     }
1495 
setVertexCountVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1496     VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setVertexCount( uint32_t vertexCount_ ) VULKAN_HPP_NOEXCEPT
1497     {
1498       vertexCount = vertexCount_;
1499       return *this;
1500     }
1501 
1502     VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV &
setVertexStrideVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1503                             setVertexStride( VULKAN_HPP_NAMESPACE::DeviceSize vertexStride_ ) VULKAN_HPP_NOEXCEPT
1504     {
1505       vertexStride = vertexStride_;
1506       return *this;
1507     }
1508 
1509     VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV &
setVertexFormatVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1510                             setVertexFormat( VULKAN_HPP_NAMESPACE::Format vertexFormat_ ) VULKAN_HPP_NOEXCEPT
1511     {
1512       vertexFormat = vertexFormat_;
1513       return *this;
1514     }
1515 
1516     VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV &
setIndexDataVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1517                             setIndexData( VULKAN_HPP_NAMESPACE::Buffer indexData_ ) VULKAN_HPP_NOEXCEPT
1518     {
1519       indexData = indexData_;
1520       return *this;
1521     }
1522 
1523     VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV &
setIndexOffsetVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1524                             setIndexOffset( VULKAN_HPP_NAMESPACE::DeviceSize indexOffset_ ) VULKAN_HPP_NOEXCEPT
1525     {
1526       indexOffset = indexOffset_;
1527       return *this;
1528     }
1529 
setIndexCountVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1530     VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setIndexCount( uint32_t indexCount_ ) VULKAN_HPP_NOEXCEPT
1531     {
1532       indexCount = indexCount_;
1533       return *this;
1534     }
1535 
1536     VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV &
setIndexTypeVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1537                             setIndexType( VULKAN_HPP_NAMESPACE::IndexType indexType_ ) VULKAN_HPP_NOEXCEPT
1538     {
1539       indexType = indexType_;
1540       return *this;
1541     }
1542 
1543     VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV &
setTransformDataVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1544                             setTransformData( VULKAN_HPP_NAMESPACE::Buffer transformData_ ) VULKAN_HPP_NOEXCEPT
1545     {
1546       transformData = transformData_;
1547       return *this;
1548     }
1549 
1550     VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV &
setTransformOffsetVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1551                             setTransformOffset( VULKAN_HPP_NAMESPACE::DeviceSize transformOffset_ ) VULKAN_HPP_NOEXCEPT
1552     {
1553       transformOffset = transformOffset_;
1554       return *this;
1555     }
1556 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
1557 
operator VkGeometryTrianglesNV const&VULKAN_HPP_NAMESPACE::GeometryTrianglesNV1558     explicit operator VkGeometryTrianglesNV const &() const VULKAN_HPP_NOEXCEPT
1559     {
1560       return *reinterpret_cast<const VkGeometryTrianglesNV *>( this );
1561     }
1562 
operator VkGeometryTrianglesNV&VULKAN_HPP_NAMESPACE::GeometryTrianglesNV1563     explicit operator VkGeometryTrianglesNV &() VULKAN_HPP_NOEXCEPT
1564     {
1565       return *reinterpret_cast<VkGeometryTrianglesNV *>( this );
1566     }
1567 
1568 #if 14 <= VULKAN_HPP_CPP_VERSION
1569     auto
1570 #else
1571     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
1572                const void * const &,
1573                VULKAN_HPP_NAMESPACE::Buffer const &,
1574                VULKAN_HPP_NAMESPACE::DeviceSize const &,
1575                uint32_t const &,
1576                VULKAN_HPP_NAMESPACE::DeviceSize const &,
1577                VULKAN_HPP_NAMESPACE::Format const &,
1578                VULKAN_HPP_NAMESPACE::Buffer const &,
1579                VULKAN_HPP_NAMESPACE::DeviceSize const &,
1580                uint32_t const &,
1581                VULKAN_HPP_NAMESPACE::IndexType const &,
1582                VULKAN_HPP_NAMESPACE::Buffer const &,
1583                VULKAN_HPP_NAMESPACE::DeviceSize const &>
1584 #endif
reflectVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1585       reflect() const VULKAN_HPP_NOEXCEPT
1586     {
1587       return std::tie( sType,
1588                        pNext,
1589                        vertexData,
1590                        vertexOffset,
1591                        vertexCount,
1592                        vertexStride,
1593                        vertexFormat,
1594                        indexData,
1595                        indexOffset,
1596                        indexCount,
1597                        indexType,
1598                        transformData,
1599                        transformOffset );
1600     }
1601 
1602 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
1603     auto operator<=>( GeometryTrianglesNV const & ) const = default;
1604 #else
operator ==VULKAN_HPP_NAMESPACE::GeometryTrianglesNV1605     bool operator==( GeometryTrianglesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
1606     {
1607       return this->reflect() == rhs.reflect();
1608     }
1609 
operator !=VULKAN_HPP_NAMESPACE::GeometryTrianglesNV1610     bool operator!=( GeometryTrianglesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
1611     {
1612       return this->reflect() != rhs.reflect();
1613     }
1614 #endif
1615 
1616   public:
1617     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::eGeometryTrianglesNV;
1618     const void *                        pNext           = {};
1619     VULKAN_HPP_NAMESPACE::Buffer        vertexData      = {};
1620     VULKAN_HPP_NAMESPACE::DeviceSize    vertexOffset    = {};
1621     uint32_t                            vertexCount     = {};
1622     VULKAN_HPP_NAMESPACE::DeviceSize    vertexStride    = {};
1623     VULKAN_HPP_NAMESPACE::Format        vertexFormat    = VULKAN_HPP_NAMESPACE::Format::eUndefined;
1624     VULKAN_HPP_NAMESPACE::Buffer        indexData       = {};
1625     VULKAN_HPP_NAMESPACE::DeviceSize    indexOffset     = {};
1626     uint32_t                            indexCount      = {};
1627     VULKAN_HPP_NAMESPACE::IndexType     indexType       = VULKAN_HPP_NAMESPACE::IndexType::eUint16;
1628     VULKAN_HPP_NAMESPACE::Buffer        transformData   = {};
1629     VULKAN_HPP_NAMESPACE::DeviceSize    transformOffset = {};
1630   };
1631   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::GeometryTrianglesNV ) == sizeof( VkGeometryTrianglesNV ),
1632                             "struct and wrapper have different size!" );
1633   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::GeometryTrianglesNV>::value,
1634                             "struct wrapper is not a standard layout!" );
1635   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::GeometryTrianglesNV>::value,
1636                             "GeometryTrianglesNV is not nothrow_move_constructible!" );
1637 
1638   template <>
1639   struct CppType<StructureType, StructureType::eGeometryTrianglesNV>
1640   {
1641     using Type = GeometryTrianglesNV;
1642   };
1643 
1644   struct GeometryAABBNV
1645   {
1646     using NativeType = VkGeometryAABBNV;
1647 
1648     static const bool                                  allowDuplicate = false;
1649     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eGeometryAabbNV;
1650 
1651 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
GeometryAABBNVVULKAN_HPP_NAMESPACE::GeometryAABBNV1652     VULKAN_HPP_CONSTEXPR GeometryAABBNV( VULKAN_HPP_NAMESPACE::Buffer     aabbData_ = {},
1653                                          uint32_t                         numAABBs_ = {},
1654                                          uint32_t                         stride_   = {},
1655                                          VULKAN_HPP_NAMESPACE::DeviceSize offset_   = {} ) VULKAN_HPP_NOEXCEPT
1656       : aabbData( aabbData_ )
1657       , numAABBs( numAABBs_ )
1658       , stride( stride_ )
1659       , offset( offset_ )
1660     {}
1661 
1662     VULKAN_HPP_CONSTEXPR GeometryAABBNV( GeometryAABBNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1663 
GeometryAABBNVVULKAN_HPP_NAMESPACE::GeometryAABBNV1664     GeometryAABBNV( VkGeometryAABBNV const & rhs ) VULKAN_HPP_NOEXCEPT
1665       : GeometryAABBNV( *reinterpret_cast<GeometryAABBNV const *>( &rhs ) )
1666     {}
1667 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
1668 
1669     GeometryAABBNV & operator=( GeometryAABBNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1670 
operator =VULKAN_HPP_NAMESPACE::GeometryAABBNV1671     GeometryAABBNV & operator=( VkGeometryAABBNV const & rhs ) VULKAN_HPP_NOEXCEPT
1672     {
1673       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GeometryAABBNV const *>( &rhs );
1674       return *this;
1675     }
1676 
1677 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::GeometryAABBNV1678     VULKAN_HPP_CONSTEXPR_14 GeometryAABBNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
1679     {
1680       pNext = pNext_;
1681       return *this;
1682     }
1683 
setAabbDataVULKAN_HPP_NAMESPACE::GeometryAABBNV1684     VULKAN_HPP_CONSTEXPR_14 GeometryAABBNV & setAabbData( VULKAN_HPP_NAMESPACE::Buffer aabbData_ ) VULKAN_HPP_NOEXCEPT
1685     {
1686       aabbData = aabbData_;
1687       return *this;
1688     }
1689 
setNumAABBsVULKAN_HPP_NAMESPACE::GeometryAABBNV1690     VULKAN_HPP_CONSTEXPR_14 GeometryAABBNV & setNumAABBs( uint32_t numAABBs_ ) VULKAN_HPP_NOEXCEPT
1691     {
1692       numAABBs = numAABBs_;
1693       return *this;
1694     }
1695 
setStrideVULKAN_HPP_NAMESPACE::GeometryAABBNV1696     VULKAN_HPP_CONSTEXPR_14 GeometryAABBNV & setStride( uint32_t stride_ ) VULKAN_HPP_NOEXCEPT
1697     {
1698       stride = stride_;
1699       return *this;
1700     }
1701 
setOffsetVULKAN_HPP_NAMESPACE::GeometryAABBNV1702     VULKAN_HPP_CONSTEXPR_14 GeometryAABBNV & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
1703     {
1704       offset = offset_;
1705       return *this;
1706     }
1707 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
1708 
operator VkGeometryAABBNV const&VULKAN_HPP_NAMESPACE::GeometryAABBNV1709     explicit operator VkGeometryAABBNV const &() const VULKAN_HPP_NOEXCEPT
1710     {
1711       return *reinterpret_cast<const VkGeometryAABBNV *>( this );
1712     }
1713 
operator VkGeometryAABBNV&VULKAN_HPP_NAMESPACE::GeometryAABBNV1714     explicit operator VkGeometryAABBNV &() VULKAN_HPP_NOEXCEPT
1715     {
1716       return *reinterpret_cast<VkGeometryAABBNV *>( this );
1717     }
1718 
1719 #if 14 <= VULKAN_HPP_CPP_VERSION
1720     auto
1721 #else
1722     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
1723                const void * const &,
1724                VULKAN_HPP_NAMESPACE::Buffer const &,
1725                uint32_t const &,
1726                uint32_t const &,
1727                VULKAN_HPP_NAMESPACE::DeviceSize const &>
1728 #endif
reflectVULKAN_HPP_NAMESPACE::GeometryAABBNV1729       reflect() const VULKAN_HPP_NOEXCEPT
1730     {
1731       return std::tie( sType, pNext, aabbData, numAABBs, stride, offset );
1732     }
1733 
1734 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
1735     auto operator<=>( GeometryAABBNV const & ) const = default;
1736 #else
operator ==VULKAN_HPP_NAMESPACE::GeometryAABBNV1737     bool operator==( GeometryAABBNV const & rhs ) const VULKAN_HPP_NOEXCEPT
1738     {
1739       return this->reflect() == rhs.reflect();
1740     }
1741 
operator !=VULKAN_HPP_NAMESPACE::GeometryAABBNV1742     bool operator!=( GeometryAABBNV const & rhs ) const VULKAN_HPP_NOEXCEPT
1743     {
1744       return this->reflect() != rhs.reflect();
1745     }
1746 #endif
1747 
1748   public:
1749     VULKAN_HPP_NAMESPACE::StructureType sType    = StructureType::eGeometryAabbNV;
1750     const void *                        pNext    = {};
1751     VULKAN_HPP_NAMESPACE::Buffer        aabbData = {};
1752     uint32_t                            numAABBs = {};
1753     uint32_t                            stride   = {};
1754     VULKAN_HPP_NAMESPACE::DeviceSize    offset   = {};
1755   };
1756   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::GeometryAABBNV ) == sizeof( VkGeometryAABBNV ),
1757                             "struct and wrapper have different size!" );
1758   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::GeometryAABBNV>::value,
1759                             "struct wrapper is not a standard layout!" );
1760   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::GeometryAABBNV>::value,
1761                             "GeometryAABBNV is not nothrow_move_constructible!" );
1762 
1763   template <>
1764   struct CppType<StructureType, StructureType::eGeometryAabbNV>
1765   {
1766     using Type = GeometryAABBNV;
1767   };
1768 
1769   struct GeometryDataNV
1770   {
1771     using NativeType = VkGeometryDataNV;
1772 
1773 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
GeometryDataNVVULKAN_HPP_NAMESPACE::GeometryDataNV1774     VULKAN_HPP_CONSTEXPR GeometryDataNV( VULKAN_HPP_NAMESPACE::GeometryTrianglesNV triangles_ = {},
1775                                          VULKAN_HPP_NAMESPACE::GeometryAABBNV      aabbs_     = {} ) VULKAN_HPP_NOEXCEPT
1776       : triangles( triangles_ )
1777       , aabbs( aabbs_ )
1778     {}
1779 
1780     VULKAN_HPP_CONSTEXPR GeometryDataNV( GeometryDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1781 
GeometryDataNVVULKAN_HPP_NAMESPACE::GeometryDataNV1782     GeometryDataNV( VkGeometryDataNV const & rhs ) VULKAN_HPP_NOEXCEPT
1783       : GeometryDataNV( *reinterpret_cast<GeometryDataNV const *>( &rhs ) )
1784     {}
1785 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
1786 
1787     GeometryDataNV & operator=( GeometryDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1788 
operator =VULKAN_HPP_NAMESPACE::GeometryDataNV1789     GeometryDataNV & operator=( VkGeometryDataNV const & rhs ) VULKAN_HPP_NOEXCEPT
1790     {
1791       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GeometryDataNV const *>( &rhs );
1792       return *this;
1793     }
1794 
1795 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
1796     VULKAN_HPP_CONSTEXPR_14 GeometryDataNV &
setTrianglesVULKAN_HPP_NAMESPACE::GeometryDataNV1797       setTriangles( VULKAN_HPP_NAMESPACE::GeometryTrianglesNV const & triangles_ ) VULKAN_HPP_NOEXCEPT
1798     {
1799       triangles = triangles_;
1800       return *this;
1801     }
1802 
1803     VULKAN_HPP_CONSTEXPR_14 GeometryDataNV &
setAabbsVULKAN_HPP_NAMESPACE::GeometryDataNV1804                             setAabbs( VULKAN_HPP_NAMESPACE::GeometryAABBNV const & aabbs_ ) VULKAN_HPP_NOEXCEPT
1805     {
1806       aabbs = aabbs_;
1807       return *this;
1808     }
1809 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
1810 
operator VkGeometryDataNV const&VULKAN_HPP_NAMESPACE::GeometryDataNV1811     explicit operator VkGeometryDataNV const &() const VULKAN_HPP_NOEXCEPT
1812     {
1813       return *reinterpret_cast<const VkGeometryDataNV *>( this );
1814     }
1815 
operator VkGeometryDataNV&VULKAN_HPP_NAMESPACE::GeometryDataNV1816     explicit operator VkGeometryDataNV &() VULKAN_HPP_NOEXCEPT
1817     {
1818       return *reinterpret_cast<VkGeometryDataNV *>( this );
1819     }
1820 
1821 #if 14 <= VULKAN_HPP_CPP_VERSION
1822     auto
1823 #else
1824     std::tuple<VULKAN_HPP_NAMESPACE::GeometryTrianglesNV const &, VULKAN_HPP_NAMESPACE::GeometryAABBNV const &>
1825 #endif
reflectVULKAN_HPP_NAMESPACE::GeometryDataNV1826       reflect() const VULKAN_HPP_NOEXCEPT
1827     {
1828       return std::tie( triangles, aabbs );
1829     }
1830 
1831 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
1832     auto operator<=>( GeometryDataNV const & ) const = default;
1833 #else
operator ==VULKAN_HPP_NAMESPACE::GeometryDataNV1834     bool operator==( GeometryDataNV const & rhs ) const VULKAN_HPP_NOEXCEPT
1835     {
1836       return this->reflect() == rhs.reflect();
1837     }
1838 
operator !=VULKAN_HPP_NAMESPACE::GeometryDataNV1839     bool operator!=( GeometryDataNV const & rhs ) const VULKAN_HPP_NOEXCEPT
1840     {
1841       return this->reflect() != rhs.reflect();
1842     }
1843 #endif
1844 
1845   public:
1846     VULKAN_HPP_NAMESPACE::GeometryTrianglesNV triangles = {};
1847     VULKAN_HPP_NAMESPACE::GeometryAABBNV      aabbs     = {};
1848   };
1849   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::GeometryDataNV ) == sizeof( VkGeometryDataNV ),
1850                             "struct and wrapper have different size!" );
1851   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::GeometryDataNV>::value,
1852                             "struct wrapper is not a standard layout!" );
1853   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::GeometryDataNV>::value,
1854                             "GeometryDataNV is not nothrow_move_constructible!" );
1855 
1856   struct GeometryNV
1857   {
1858     using NativeType = VkGeometryNV;
1859 
1860     static const bool                                  allowDuplicate = false;
1861     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eGeometryNV;
1862 
1863 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
GeometryNVVULKAN_HPP_NAMESPACE::GeometryNV1864     VULKAN_HPP_CONSTEXPR GeometryNV(
1865       VULKAN_HPP_NAMESPACE::GeometryTypeKHR  geometryType_ = VULKAN_HPP_NAMESPACE::GeometryTypeKHR::eTriangles,
1866       VULKAN_HPP_NAMESPACE::GeometryDataNV   geometry_     = {},
1867       VULKAN_HPP_NAMESPACE::GeometryFlagsKHR flags_        = {} ) VULKAN_HPP_NOEXCEPT
1868       : geometryType( geometryType_ )
1869       , geometry( geometry_ )
1870       , flags( flags_ )
1871     {}
1872 
1873     VULKAN_HPP_CONSTEXPR GeometryNV( GeometryNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1874 
GeometryNVVULKAN_HPP_NAMESPACE::GeometryNV1875     GeometryNV( VkGeometryNV const & rhs ) VULKAN_HPP_NOEXCEPT
1876       : GeometryNV( *reinterpret_cast<GeometryNV const *>( &rhs ) )
1877     {}
1878 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
1879 
1880     GeometryNV & operator=( GeometryNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1881 
operator =VULKAN_HPP_NAMESPACE::GeometryNV1882     GeometryNV & operator=( VkGeometryNV const & rhs ) VULKAN_HPP_NOEXCEPT
1883     {
1884       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GeometryNV const *>( &rhs );
1885       return *this;
1886     }
1887 
1888 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::GeometryNV1889     VULKAN_HPP_CONSTEXPR_14 GeometryNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
1890     {
1891       pNext = pNext_;
1892       return *this;
1893     }
1894 
1895     VULKAN_HPP_CONSTEXPR_14 GeometryNV &
setGeometryTypeVULKAN_HPP_NAMESPACE::GeometryNV1896                             setGeometryType( VULKAN_HPP_NAMESPACE::GeometryTypeKHR geometryType_ ) VULKAN_HPP_NOEXCEPT
1897     {
1898       geometryType = geometryType_;
1899       return *this;
1900     }
1901 
1902     VULKAN_HPP_CONSTEXPR_14 GeometryNV &
setGeometryVULKAN_HPP_NAMESPACE::GeometryNV1903                             setGeometry( VULKAN_HPP_NAMESPACE::GeometryDataNV const & geometry_ ) VULKAN_HPP_NOEXCEPT
1904     {
1905       geometry = geometry_;
1906       return *this;
1907     }
1908 
setFlagsVULKAN_HPP_NAMESPACE::GeometryNV1909     VULKAN_HPP_CONSTEXPR_14 GeometryNV & setFlags( VULKAN_HPP_NAMESPACE::GeometryFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
1910     {
1911       flags = flags_;
1912       return *this;
1913     }
1914 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
1915 
operator VkGeometryNV const&VULKAN_HPP_NAMESPACE::GeometryNV1916     explicit operator VkGeometryNV const &() const VULKAN_HPP_NOEXCEPT
1917     {
1918       return *reinterpret_cast<const VkGeometryNV *>( this );
1919     }
1920 
operator VkGeometryNV&VULKAN_HPP_NAMESPACE::GeometryNV1921     explicit operator VkGeometryNV &() VULKAN_HPP_NOEXCEPT
1922     {
1923       return *reinterpret_cast<VkGeometryNV *>( this );
1924     }
1925 
1926 #if 14 <= VULKAN_HPP_CPP_VERSION
1927     auto
1928 #else
1929     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
1930                const void * const &,
1931                VULKAN_HPP_NAMESPACE::GeometryTypeKHR const &,
1932                VULKAN_HPP_NAMESPACE::GeometryDataNV const &,
1933                VULKAN_HPP_NAMESPACE::GeometryFlagsKHR const &>
1934 #endif
reflectVULKAN_HPP_NAMESPACE::GeometryNV1935       reflect() const VULKAN_HPP_NOEXCEPT
1936     {
1937       return std::tie( sType, pNext, geometryType, geometry, flags );
1938     }
1939 
1940 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
1941     auto operator<=>( GeometryNV const & ) const = default;
1942 #else
operator ==VULKAN_HPP_NAMESPACE::GeometryNV1943     bool operator==( GeometryNV const & rhs ) const VULKAN_HPP_NOEXCEPT
1944     {
1945       return this->reflect() == rhs.reflect();
1946     }
1947 
operator !=VULKAN_HPP_NAMESPACE::GeometryNV1948     bool operator!=( GeometryNV const & rhs ) const VULKAN_HPP_NOEXCEPT
1949     {
1950       return this->reflect() != rhs.reflect();
1951     }
1952 #endif
1953 
1954   public:
1955     VULKAN_HPP_NAMESPACE::StructureType    sType        = StructureType::eGeometryNV;
1956     const void *                           pNext        = {};
1957     VULKAN_HPP_NAMESPACE::GeometryTypeKHR  geometryType = VULKAN_HPP_NAMESPACE::GeometryTypeKHR::eTriangles;
1958     VULKAN_HPP_NAMESPACE::GeometryDataNV   geometry     = {};
1959     VULKAN_HPP_NAMESPACE::GeometryFlagsKHR flags        = {};
1960   };
1961   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::GeometryNV ) == sizeof( VkGeometryNV ),
1962                             "struct and wrapper have different size!" );
1963   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::GeometryNV>::value,
1964                             "struct wrapper is not a standard layout!" );
1965   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::GeometryNV>::value,
1966                             "GeometryNV is not nothrow_move_constructible!" );
1967 
1968   template <>
1969   struct CppType<StructureType, StructureType::eGeometryNV>
1970   {
1971     using Type = GeometryNV;
1972   };
1973 
1974   struct AccelerationStructureInfoNV
1975   {
1976     using NativeType = VkAccelerationStructureInfoNV;
1977 
1978     static const bool                                  allowDuplicate = false;
1979     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAccelerationStructureInfoNV;
1980 
1981 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
1982     VULKAN_HPP_CONSTEXPR
AccelerationStructureInfoNVVULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV1983       AccelerationStructureInfoNV( VULKAN_HPP_NAMESPACE::AccelerationStructureTypeNV       type_          = {},
1984                                    VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsNV flags_         = {},
1985                                    uint32_t                                                instanceCount_ = {},
1986                                    uint32_t                                                geometryCount_ = {},
1987                                    const VULKAN_HPP_NAMESPACE::GeometryNV * pGeometries_ = {} ) VULKAN_HPP_NOEXCEPT
1988       : type( type_ )
1989       , flags( flags_ )
1990       , instanceCount( instanceCount_ )
1991       , geometryCount( geometryCount_ )
1992       , pGeometries( pGeometries_ )
1993     {}
1994 
1995     VULKAN_HPP_CONSTEXPR
1996       AccelerationStructureInfoNV( AccelerationStructureInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1997 
AccelerationStructureInfoNVVULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV1998     AccelerationStructureInfoNV( VkAccelerationStructureInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
1999       : AccelerationStructureInfoNV( *reinterpret_cast<AccelerationStructureInfoNV const *>( &rhs ) )
2000     {}
2001 
2002 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
AccelerationStructureInfoNVVULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2003     AccelerationStructureInfoNV(
2004       VULKAN_HPP_NAMESPACE::AccelerationStructureTypeNV                                             type_,
2005       VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsNV                                       flags_,
2006       uint32_t                                                                                      instanceCount_,
2007       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::GeometryNV> const & geometries_ )
2008       : type( type_ )
2009       , flags( flags_ )
2010       , instanceCount( instanceCount_ )
2011       , geometryCount( static_cast<uint32_t>( geometries_.size() ) )
2012       , pGeometries( geometries_.data() )
2013     {}
2014 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
2015 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
2016 
2017     AccelerationStructureInfoNV & operator=( AccelerationStructureInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2018 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2019     AccelerationStructureInfoNV & operator=( VkAccelerationStructureInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
2020     {
2021       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV const *>( &rhs );
2022       return *this;
2023     }
2024 
2025 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2026     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
2027     {
2028       pNext = pNext_;
2029       return *this;
2030     }
2031 
2032     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV &
setTypeVULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2033                             setType( VULKAN_HPP_NAMESPACE::AccelerationStructureTypeNV type_ ) VULKAN_HPP_NOEXCEPT
2034     {
2035       type = type_;
2036       return *this;
2037     }
2038 
2039     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV &
setFlagsVULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2040       setFlags( VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT
2041     {
2042       flags = flags_;
2043       return *this;
2044     }
2045 
2046     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV &
setInstanceCountVULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2047                             setInstanceCount( uint32_t instanceCount_ ) VULKAN_HPP_NOEXCEPT
2048     {
2049       instanceCount = instanceCount_;
2050       return *this;
2051     }
2052 
2053     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV &
setGeometryCountVULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2054                             setGeometryCount( uint32_t geometryCount_ ) VULKAN_HPP_NOEXCEPT
2055     {
2056       geometryCount = geometryCount_;
2057       return *this;
2058     }
2059 
2060     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV &
setPGeometriesVULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2061                             setPGeometries( const VULKAN_HPP_NAMESPACE::GeometryNV * pGeometries_ ) VULKAN_HPP_NOEXCEPT
2062     {
2063       pGeometries = pGeometries_;
2064       return *this;
2065     }
2066 
2067 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setGeometriesVULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2068     AccelerationStructureInfoNV & setGeometries(
2069       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::GeometryNV> const & geometries_ )
2070       VULKAN_HPP_NOEXCEPT
2071     {
2072       geometryCount = static_cast<uint32_t>( geometries_.size() );
2073       pGeometries   = geometries_.data();
2074       return *this;
2075     }
2076 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
2077 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
2078 
operator VkAccelerationStructureInfoNV const&VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2079     explicit operator VkAccelerationStructureInfoNV const &() const VULKAN_HPP_NOEXCEPT
2080     {
2081       return *reinterpret_cast<const VkAccelerationStructureInfoNV *>( this );
2082     }
2083 
operator VkAccelerationStructureInfoNV&VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2084     explicit operator VkAccelerationStructureInfoNV &() VULKAN_HPP_NOEXCEPT
2085     {
2086       return *reinterpret_cast<VkAccelerationStructureInfoNV *>( this );
2087     }
2088 
2089 #if 14 <= VULKAN_HPP_CPP_VERSION
2090     auto
2091 #else
2092     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
2093                const void * const &,
2094                VULKAN_HPP_NAMESPACE::AccelerationStructureTypeNV const &,
2095                VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsNV const &,
2096                uint32_t const &,
2097                uint32_t const &,
2098                const VULKAN_HPP_NAMESPACE::GeometryNV * const &>
2099 #endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2100       reflect() const VULKAN_HPP_NOEXCEPT
2101     {
2102       return std::tie( sType, pNext, type, flags, instanceCount, geometryCount, pGeometries );
2103     }
2104 
2105 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
2106     auto operator<=>( AccelerationStructureInfoNV const & ) const = default;
2107 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2108     bool operator==( AccelerationStructureInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
2109     {
2110       return this->reflect() == rhs.reflect();
2111     }
2112 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2113     bool operator!=( AccelerationStructureInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
2114     {
2115       return this->reflect() != rhs.reflect();
2116     }
2117 #endif
2118 
2119   public:
2120     VULKAN_HPP_NAMESPACE::StructureType                     sType         = StructureType::eAccelerationStructureInfoNV;
2121     const void *                                            pNext         = {};
2122     VULKAN_HPP_NAMESPACE::AccelerationStructureTypeNV       type          = {};
2123     VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsNV flags         = {};
2124     uint32_t                                                instanceCount = {};
2125     uint32_t                                                geometryCount = {};
2126     const VULKAN_HPP_NAMESPACE::GeometryNV *                pGeometries   = {};
2127   };
2128   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV ) ==
2129                               sizeof( VkAccelerationStructureInfoNV ),
2130                             "struct and wrapper have different size!" );
2131   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV>::value,
2132                             "struct wrapper is not a standard layout!" );
2133   VULKAN_HPP_STATIC_ASSERT(
2134     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV>::value,
2135     "AccelerationStructureInfoNV is not nothrow_move_constructible!" );
2136 
2137   template <>
2138   struct CppType<StructureType, StructureType::eAccelerationStructureInfoNV>
2139   {
2140     using Type = AccelerationStructureInfoNV;
2141   };
2142 
2143   struct AccelerationStructureCreateInfoNV
2144   {
2145     using NativeType = VkAccelerationStructureCreateInfoNV;
2146 
2147     static const bool                                  allowDuplicate = false;
2148     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
2149       StructureType::eAccelerationStructureCreateInfoNV;
2150 
2151 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureCreateInfoNVVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV2152     VULKAN_HPP_CONSTEXPR AccelerationStructureCreateInfoNV(
2153       VULKAN_HPP_NAMESPACE::DeviceSize                  compactedSize_ = {},
2154       VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV info_          = {} ) VULKAN_HPP_NOEXCEPT
2155       : compactedSize( compactedSize_ )
2156       , info( info_ )
2157     {}
2158 
2159     VULKAN_HPP_CONSTEXPR
2160       AccelerationStructureCreateInfoNV( AccelerationStructureCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2161 
AccelerationStructureCreateInfoNVVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV2162     AccelerationStructureCreateInfoNV( VkAccelerationStructureCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
2163       : AccelerationStructureCreateInfoNV( *reinterpret_cast<AccelerationStructureCreateInfoNV const *>( &rhs ) )
2164     {}
2165 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
2166 
2167     AccelerationStructureCreateInfoNV &
2168       operator=( AccelerationStructureCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2169 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV2170     AccelerationStructureCreateInfoNV & operator=( VkAccelerationStructureCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
2171     {
2172       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV const *>( &rhs );
2173       return *this;
2174     }
2175 
2176 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV2177     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
2178     {
2179       pNext = pNext_;
2180       return *this;
2181     }
2182 
2183     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoNV &
setCompactedSizeVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV2184                             setCompactedSize( VULKAN_HPP_NAMESPACE::DeviceSize compactedSize_ ) VULKAN_HPP_NOEXCEPT
2185     {
2186       compactedSize = compactedSize_;
2187       return *this;
2188     }
2189 
2190     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoNV &
setInfoVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV2191       setInfo( VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV const & info_ ) VULKAN_HPP_NOEXCEPT
2192     {
2193       info = info_;
2194       return *this;
2195     }
2196 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
2197 
operator VkAccelerationStructureCreateInfoNV const&VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV2198     explicit operator VkAccelerationStructureCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
2199     {
2200       return *reinterpret_cast<const VkAccelerationStructureCreateInfoNV *>( this );
2201     }
2202 
operator VkAccelerationStructureCreateInfoNV&VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV2203     explicit operator VkAccelerationStructureCreateInfoNV &() VULKAN_HPP_NOEXCEPT
2204     {
2205       return *reinterpret_cast<VkAccelerationStructureCreateInfoNV *>( this );
2206     }
2207 
2208 #if 14 <= VULKAN_HPP_CPP_VERSION
2209     auto
2210 #else
2211     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
2212                const void * const &,
2213                VULKAN_HPP_NAMESPACE::DeviceSize const &,
2214                VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV const &>
2215 #endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV2216       reflect() const VULKAN_HPP_NOEXCEPT
2217     {
2218       return std::tie( sType, pNext, compactedSize, info );
2219     }
2220 
2221 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
2222     auto operator<=>( AccelerationStructureCreateInfoNV const & ) const = default;
2223 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV2224     bool operator==( AccelerationStructureCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
2225     {
2226       return this->reflect() == rhs.reflect();
2227     }
2228 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV2229     bool operator!=( AccelerationStructureCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
2230     {
2231       return this->reflect() != rhs.reflect();
2232     }
2233 #endif
2234 
2235   public:
2236     VULKAN_HPP_NAMESPACE::StructureType               sType         = StructureType::eAccelerationStructureCreateInfoNV;
2237     const void *                                      pNext         = {};
2238     VULKAN_HPP_NAMESPACE::DeviceSize                  compactedSize = {};
2239     VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV info          = {};
2240   };
2241   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV ) ==
2242                               sizeof( VkAccelerationStructureCreateInfoNV ),
2243                             "struct and wrapper have different size!" );
2244   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV>::value,
2245                             "struct wrapper is not a standard layout!" );
2246   VULKAN_HPP_STATIC_ASSERT(
2247     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV>::value,
2248     "AccelerationStructureCreateInfoNV is not nothrow_move_constructible!" );
2249 
2250   template <>
2251   struct CppType<StructureType, StructureType::eAccelerationStructureCreateInfoNV>
2252   {
2253     using Type = AccelerationStructureCreateInfoNV;
2254   };
2255 
2256   struct AccelerationStructureDeviceAddressInfoKHR
2257   {
2258     using NativeType = VkAccelerationStructureDeviceAddressInfoKHR;
2259 
2260     static const bool                                  allowDuplicate = false;
2261     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
2262       StructureType::eAccelerationStructureDeviceAddressInfoKHR;
2263 
2264 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureDeviceAddressInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR2265     VULKAN_HPP_CONSTEXPR AccelerationStructureDeviceAddressInfoKHR(
2266       VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure_ = {} ) VULKAN_HPP_NOEXCEPT
2267       : accelerationStructure( accelerationStructure_ )
2268     {}
2269 
2270     VULKAN_HPP_CONSTEXPR AccelerationStructureDeviceAddressInfoKHR(
2271       AccelerationStructureDeviceAddressInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2272 
AccelerationStructureDeviceAddressInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR2273     AccelerationStructureDeviceAddressInfoKHR( VkAccelerationStructureDeviceAddressInfoKHR const & rhs )
2274       VULKAN_HPP_NOEXCEPT
2275       : AccelerationStructureDeviceAddressInfoKHR(
2276           *reinterpret_cast<AccelerationStructureDeviceAddressInfoKHR const *>( &rhs ) )
2277     {}
2278 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
2279 
2280     AccelerationStructureDeviceAddressInfoKHR &
2281       operator=( AccelerationStructureDeviceAddressInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2282 
2283     AccelerationStructureDeviceAddressInfoKHR &
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR2284       operator=( VkAccelerationStructureDeviceAddressInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
2285     {
2286       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR const *>( &rhs );
2287       return *this;
2288     }
2289 
2290 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
2291     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureDeviceAddressInfoKHR &
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR2292                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
2293     {
2294       pNext = pNext_;
2295       return *this;
2296     }
2297 
setAccelerationStructureVULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR2298     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureDeviceAddressInfoKHR & setAccelerationStructure(
2299       VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure_ ) VULKAN_HPP_NOEXCEPT
2300     {
2301       accelerationStructure = accelerationStructure_;
2302       return *this;
2303     }
2304 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
2305 
operator VkAccelerationStructureDeviceAddressInfoKHR const&VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR2306     explicit operator VkAccelerationStructureDeviceAddressInfoKHR const &() const VULKAN_HPP_NOEXCEPT
2307     {
2308       return *reinterpret_cast<const VkAccelerationStructureDeviceAddressInfoKHR *>( this );
2309     }
2310 
operator VkAccelerationStructureDeviceAddressInfoKHR&VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR2311     explicit operator VkAccelerationStructureDeviceAddressInfoKHR &() VULKAN_HPP_NOEXCEPT
2312     {
2313       return *reinterpret_cast<VkAccelerationStructureDeviceAddressInfoKHR *>( this );
2314     }
2315 
2316 #if 14 <= VULKAN_HPP_CPP_VERSION
2317     auto
2318 #else
2319     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
2320                const void * const &,
2321                VULKAN_HPP_NAMESPACE::AccelerationStructureKHR const &>
2322 #endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR2323       reflect() const VULKAN_HPP_NOEXCEPT
2324     {
2325       return std::tie( sType, pNext, accelerationStructure );
2326     }
2327 
2328 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
2329     auto operator<=>( AccelerationStructureDeviceAddressInfoKHR const & ) const = default;
2330 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR2331     bool operator==( AccelerationStructureDeviceAddressInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
2332     {
2333       return this->reflect() == rhs.reflect();
2334     }
2335 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR2336     bool operator!=( AccelerationStructureDeviceAddressInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
2337     {
2338       return this->reflect() != rhs.reflect();
2339     }
2340 #endif
2341 
2342   public:
2343     VULKAN_HPP_NAMESPACE::StructureType            sType = StructureType::eAccelerationStructureDeviceAddressInfoKHR;
2344     const void *                                   pNext = {};
2345     VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure = {};
2346   };
2347   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR ) ==
2348                               sizeof( VkAccelerationStructureDeviceAddressInfoKHR ),
2349                             "struct and wrapper have different size!" );
2350   VULKAN_HPP_STATIC_ASSERT(
2351     std::is_standard_layout<VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR>::value,
2352     "struct wrapper is not a standard layout!" );
2353   VULKAN_HPP_STATIC_ASSERT(
2354     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR>::value,
2355     "AccelerationStructureDeviceAddressInfoKHR is not nothrow_move_constructible!" );
2356 
2357   template <>
2358   struct CppType<StructureType, StructureType::eAccelerationStructureDeviceAddressInfoKHR>
2359   {
2360     using Type = AccelerationStructureDeviceAddressInfoKHR;
2361   };
2362 
2363   struct AccelerationStructureGeometryMotionTrianglesDataNV
2364   {
2365     using NativeType = VkAccelerationStructureGeometryMotionTrianglesDataNV;
2366 
2367     static const bool                                  allowDuplicate = false;
2368     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
2369       StructureType::eAccelerationStructureGeometryMotionTrianglesDataNV;
2370 
2371 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureGeometryMotionTrianglesDataNVVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryMotionTrianglesDataNV2372     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryMotionTrianglesDataNV(
2373       VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR vertexData_ = {} ) VULKAN_HPP_NOEXCEPT
2374       : vertexData( vertexData_ )
2375     {}
2376 
2377     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryMotionTrianglesDataNV(
2378       AccelerationStructureGeometryMotionTrianglesDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2379 
AccelerationStructureGeometryMotionTrianglesDataNVVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryMotionTrianglesDataNV2380     AccelerationStructureGeometryMotionTrianglesDataNV(
2381       VkAccelerationStructureGeometryMotionTrianglesDataNV const & rhs ) VULKAN_HPP_NOEXCEPT
2382       : AccelerationStructureGeometryMotionTrianglesDataNV(
2383           *reinterpret_cast<AccelerationStructureGeometryMotionTrianglesDataNV const *>( &rhs ) )
2384     {}
2385 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
2386 
2387     AccelerationStructureGeometryMotionTrianglesDataNV &
2388       operator=( AccelerationStructureGeometryMotionTrianglesDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2389 
2390     AccelerationStructureGeometryMotionTrianglesDataNV &
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryMotionTrianglesDataNV2391       operator=( VkAccelerationStructureGeometryMotionTrianglesDataNV const & rhs ) VULKAN_HPP_NOEXCEPT
2392     {
2393       *this =
2394         *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryMotionTrianglesDataNV const *>( &rhs );
2395       return *this;
2396     }
2397 
2398 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
2399     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryMotionTrianglesDataNV &
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryMotionTrianglesDataNV2400                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
2401     {
2402       pNext = pNext_;
2403       return *this;
2404     }
2405 
2406     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryMotionTrianglesDataNV &
setVertexDataVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryMotionTrianglesDataNV2407       setVertexData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & vertexData_ ) VULKAN_HPP_NOEXCEPT
2408     {
2409       vertexData = vertexData_;
2410       return *this;
2411     }
2412 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
2413 
operator VkAccelerationStructureGeometryMotionTrianglesDataNV const&VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryMotionTrianglesDataNV2414     explicit operator VkAccelerationStructureGeometryMotionTrianglesDataNV const &() const VULKAN_HPP_NOEXCEPT
2415     {
2416       return *reinterpret_cast<const VkAccelerationStructureGeometryMotionTrianglesDataNV *>( this );
2417     }
2418 
operator VkAccelerationStructureGeometryMotionTrianglesDataNV&VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryMotionTrianglesDataNV2419     explicit operator VkAccelerationStructureGeometryMotionTrianglesDataNV &() VULKAN_HPP_NOEXCEPT
2420     {
2421       return *reinterpret_cast<VkAccelerationStructureGeometryMotionTrianglesDataNV *>( this );
2422     }
2423 
2424 #if 14 <= VULKAN_HPP_CPP_VERSION
2425     auto
2426 #else
2427     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
2428                const void * const &,
2429                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const &>
2430 #endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryMotionTrianglesDataNV2431       reflect() const VULKAN_HPP_NOEXCEPT
2432     {
2433       return std::tie( sType, pNext, vertexData );
2434     }
2435 
2436   public:
2437     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureGeometryMotionTrianglesDataNV;
2438     const void *                        pNext = {};
2439     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR vertexData = {};
2440   };
2441   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryMotionTrianglesDataNV ) ==
2442                               sizeof( VkAccelerationStructureGeometryMotionTrianglesDataNV ),
2443                             "struct and wrapper have different size!" );
2444   VULKAN_HPP_STATIC_ASSERT(
2445     std::is_standard_layout<VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryMotionTrianglesDataNV>::value,
2446     "struct wrapper is not a standard layout!" );
2447   VULKAN_HPP_STATIC_ASSERT(
2448     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryMotionTrianglesDataNV>::value,
2449     "AccelerationStructureGeometryMotionTrianglesDataNV is not nothrow_move_constructible!" );
2450 
2451   template <>
2452   struct CppType<StructureType, StructureType::eAccelerationStructureGeometryMotionTrianglesDataNV>
2453   {
2454     using Type = AccelerationStructureGeometryMotionTrianglesDataNV;
2455   };
2456 
2457   struct TransformMatrixKHR
2458   {
2459     using NativeType = VkTransformMatrixKHR;
2460 
2461 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
2462     VULKAN_HPP_CONSTEXPR_14
TransformMatrixKHRVULKAN_HPP_NAMESPACE::TransformMatrixKHR2463       TransformMatrixKHR( std::array<std::array<float, 4>, 3> const & matrix_ = {} ) VULKAN_HPP_NOEXCEPT
2464       : matrix( matrix_ )
2465     {}
2466 
2467     VULKAN_HPP_CONSTEXPR_14 TransformMatrixKHR( TransformMatrixKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2468 
TransformMatrixKHRVULKAN_HPP_NAMESPACE::TransformMatrixKHR2469     TransformMatrixKHR( VkTransformMatrixKHR const & rhs ) VULKAN_HPP_NOEXCEPT
2470       : TransformMatrixKHR( *reinterpret_cast<TransformMatrixKHR const *>( &rhs ) )
2471     {}
2472 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
2473 
2474     TransformMatrixKHR & operator=( TransformMatrixKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2475 
operator =VULKAN_HPP_NAMESPACE::TransformMatrixKHR2476     TransformMatrixKHR & operator=( VkTransformMatrixKHR const & rhs ) VULKAN_HPP_NOEXCEPT
2477     {
2478       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::TransformMatrixKHR const *>( &rhs );
2479       return *this;
2480     }
2481 
2482 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
2483     VULKAN_HPP_CONSTEXPR_14 TransformMatrixKHR &
setMatrixVULKAN_HPP_NAMESPACE::TransformMatrixKHR2484                             setMatrix( std::array<std::array<float, 4>, 3> matrix_ ) VULKAN_HPP_NOEXCEPT
2485     {
2486       matrix = matrix_;
2487       return *this;
2488     }
2489 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
2490 
operator VkTransformMatrixKHR const&VULKAN_HPP_NAMESPACE::TransformMatrixKHR2491     explicit operator VkTransformMatrixKHR const &() const VULKAN_HPP_NOEXCEPT
2492     {
2493       return *reinterpret_cast<const VkTransformMatrixKHR *>( this );
2494     }
2495 
operator VkTransformMatrixKHR&VULKAN_HPP_NAMESPACE::TransformMatrixKHR2496     explicit operator VkTransformMatrixKHR &() VULKAN_HPP_NOEXCEPT
2497     {
2498       return *reinterpret_cast<VkTransformMatrixKHR *>( this );
2499     }
2500 
2501 #if 14 <= VULKAN_HPP_CPP_VERSION
2502     auto
2503 #else
2504     std::tuple<VULKAN_HPP_NAMESPACE::ArrayWrapper2D<float, 3, 4> const &>
2505 #endif
reflectVULKAN_HPP_NAMESPACE::TransformMatrixKHR2506       reflect() const VULKAN_HPP_NOEXCEPT
2507     {
2508       return std::tie( matrix );
2509     }
2510 
2511 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
2512     auto operator<=>( TransformMatrixKHR const & ) const = default;
2513 #else
operator ==VULKAN_HPP_NAMESPACE::TransformMatrixKHR2514     bool operator==( TransformMatrixKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
2515     {
2516       return this->reflect() == rhs.reflect();
2517     }
2518 
operator !=VULKAN_HPP_NAMESPACE::TransformMatrixKHR2519     bool operator!=( TransformMatrixKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
2520     {
2521       return this->reflect() != rhs.reflect();
2522     }
2523 #endif
2524 
2525   public:
2526     VULKAN_HPP_NAMESPACE::ArrayWrapper2D<float, 3, 4> matrix = {};
2527   };
2528   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::TransformMatrixKHR ) == sizeof( VkTransformMatrixKHR ),
2529                             "struct and wrapper have different size!" );
2530   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::TransformMatrixKHR>::value,
2531                             "struct wrapper is not a standard layout!" );
2532   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::TransformMatrixKHR>::value,
2533                             "TransformMatrixKHR is not nothrow_move_constructible!" );
2534   using TransformMatrixNV = TransformMatrixKHR;
2535 
2536   struct AccelerationStructureInstanceKHR
2537   {
2538     using NativeType = VkAccelerationStructureInstanceKHR;
2539 
2540 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
2541     VULKAN_HPP_CONSTEXPR_14
AccelerationStructureInstanceKHRVULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2542       AccelerationStructureInstanceKHR( VULKAN_HPP_NAMESPACE::TransformMatrixKHR transform_           = {},
2543                                         uint32_t                                 instanceCustomIndex_ = {},
2544                                         uint32_t                                 mask_                = {},
2545                                         uint32_t instanceShaderBindingTableRecordOffset_              = {},
2546                                         VULKAN_HPP_NAMESPACE::GeometryInstanceFlagsKHR flags_         = {},
2547                                         uint64_t accelerationStructureReference_ = {} ) VULKAN_HPP_NOEXCEPT
2548       : transform( transform_ )
2549       , instanceCustomIndex( instanceCustomIndex_ )
2550       , mask( mask_ )
2551       , instanceShaderBindingTableRecordOffset( instanceShaderBindingTableRecordOffset_ )
2552       , flags( flags_ )
2553       , accelerationStructureReference( accelerationStructureReference_ )
2554     {}
2555 
2556     VULKAN_HPP_CONSTEXPR_14
2557       AccelerationStructureInstanceKHR( AccelerationStructureInstanceKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2558 
AccelerationStructureInstanceKHRVULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2559     AccelerationStructureInstanceKHR( VkAccelerationStructureInstanceKHR const & rhs ) VULKAN_HPP_NOEXCEPT
2560       : AccelerationStructureInstanceKHR( *reinterpret_cast<AccelerationStructureInstanceKHR const *>( &rhs ) )
2561     {}
2562 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
2563 
2564     AccelerationStructureInstanceKHR &
2565       operator=( AccelerationStructureInstanceKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2566 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2567     AccelerationStructureInstanceKHR & operator=( VkAccelerationStructureInstanceKHR const & rhs ) VULKAN_HPP_NOEXCEPT
2568     {
2569       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR const *>( &rhs );
2570       return *this;
2571     }
2572 
2573 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
2574     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR &
setTransformVULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2575       setTransform( VULKAN_HPP_NAMESPACE::TransformMatrixKHR const & transform_ ) VULKAN_HPP_NOEXCEPT
2576     {
2577       transform = transform_;
2578       return *this;
2579     }
2580 
2581     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR &
setInstanceCustomIndexVULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2582                             setInstanceCustomIndex( uint32_t instanceCustomIndex_ ) VULKAN_HPP_NOEXCEPT
2583     {
2584       instanceCustomIndex = instanceCustomIndex_;
2585       return *this;
2586     }
2587 
setMaskVULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2588     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR & setMask( uint32_t mask_ ) VULKAN_HPP_NOEXCEPT
2589     {
2590       mask = mask_;
2591       return *this;
2592     }
2593 
2594     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR &
setInstanceShaderBindingTableRecordOffsetVULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2595       setInstanceShaderBindingTableRecordOffset( uint32_t instanceShaderBindingTableRecordOffset_ ) VULKAN_HPP_NOEXCEPT
2596     {
2597       instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset_;
2598       return *this;
2599     }
2600 
2601     AccelerationStructureInstanceKHR &
setFlagsVULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2602       setFlags( VULKAN_HPP_NAMESPACE::GeometryInstanceFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
2603     {
2604       flags = *reinterpret_cast<VkGeometryInstanceFlagsKHR *>( &flags_ );
2605       return *this;
2606     }
2607 
2608     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR &
setAccelerationStructureReferenceVULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2609       setAccelerationStructureReference( uint64_t accelerationStructureReference_ ) VULKAN_HPP_NOEXCEPT
2610     {
2611       accelerationStructureReference = accelerationStructureReference_;
2612       return *this;
2613     }
2614 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
2615 
operator VkAccelerationStructureInstanceKHR const&VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2616     explicit operator VkAccelerationStructureInstanceKHR const &() const VULKAN_HPP_NOEXCEPT
2617     {
2618       return *reinterpret_cast<const VkAccelerationStructureInstanceKHR *>( this );
2619     }
2620 
operator VkAccelerationStructureInstanceKHR&VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2621     explicit operator VkAccelerationStructureInstanceKHR &() VULKAN_HPP_NOEXCEPT
2622     {
2623       return *reinterpret_cast<VkAccelerationStructureInstanceKHR *>( this );
2624     }
2625 
2626 #if 14 <= VULKAN_HPP_CPP_VERSION
2627     auto
2628 #else
2629     std::tuple<VULKAN_HPP_NAMESPACE::TransformMatrixKHR const &,
2630                uint32_t const &,
2631                uint32_t const &,
2632                uint32_t const &,
2633                VkGeometryInstanceFlagsKHR const &,
2634                uint64_t const &>
2635 #endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2636       reflect() const VULKAN_HPP_NOEXCEPT
2637     {
2638       return std::tie( transform,
2639                        instanceCustomIndex,
2640                        mask,
2641                        instanceShaderBindingTableRecordOffset,
2642                        flags,
2643                        accelerationStructureReference );
2644     }
2645 
2646 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
2647     auto operator<=>( AccelerationStructureInstanceKHR const & ) const = default;
2648 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2649     bool operator==( AccelerationStructureInstanceKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
2650     {
2651       return this->reflect() == rhs.reflect();
2652     }
2653 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2654     bool operator!=( AccelerationStructureInstanceKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
2655     {
2656       return this->reflect() != rhs.reflect();
2657     }
2658 #endif
2659 
2660   public:
2661     VULKAN_HPP_NAMESPACE::TransformMatrixKHR transform = {};
2662     uint32_t                                 instanceCustomIndex : 24;
2663     uint32_t                                 mask : 8;
2664     uint32_t                                 instanceShaderBindingTableRecordOffset : 24;
2665     VkGeometryInstanceFlagsKHR               flags : 8;
2666     uint64_t                                 accelerationStructureReference = {};
2667   };
2668   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR ) ==
2669                               sizeof( VkAccelerationStructureInstanceKHR ),
2670                             "struct and wrapper have different size!" );
2671   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR>::value,
2672                             "struct wrapper is not a standard layout!" );
2673   VULKAN_HPP_STATIC_ASSERT(
2674     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR>::value,
2675     "AccelerationStructureInstanceKHR is not nothrow_move_constructible!" );
2676   using AccelerationStructureInstanceNV = AccelerationStructureInstanceKHR;
2677 
2678   struct AccelerationStructureMatrixMotionInstanceNV
2679   {
2680     using NativeType = VkAccelerationStructureMatrixMotionInstanceNV;
2681 
2682 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
2683     VULKAN_HPP_CONSTEXPR_14
AccelerationStructureMatrixMotionInstanceNVVULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2684       AccelerationStructureMatrixMotionInstanceNV( VULKAN_HPP_NAMESPACE::TransformMatrixKHR transformT0_         = {},
2685                                                    VULKAN_HPP_NAMESPACE::TransformMatrixKHR transformT1_         = {},
2686                                                    uint32_t                                 instanceCustomIndex_ = {},
2687                                                    uint32_t                                 mask_                = {},
2688                                                    uint32_t instanceShaderBindingTableRecordOffset_              = {},
2689                                                    VULKAN_HPP_NAMESPACE::GeometryInstanceFlagsKHR flags_         = {},
2690                                                    uint64_t accelerationStructureReference_ = {} ) VULKAN_HPP_NOEXCEPT
2691       : transformT0( transformT0_ )
2692       , transformT1( transformT1_ )
2693       , instanceCustomIndex( instanceCustomIndex_ )
2694       , mask( mask_ )
2695       , instanceShaderBindingTableRecordOffset( instanceShaderBindingTableRecordOffset_ )
2696       , flags( flags_ )
2697       , accelerationStructureReference( accelerationStructureReference_ )
2698     {}
2699 
2700     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV(
2701       AccelerationStructureMatrixMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2702 
AccelerationStructureMatrixMotionInstanceNVVULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2703     AccelerationStructureMatrixMotionInstanceNV( VkAccelerationStructureMatrixMotionInstanceNV const & rhs )
2704       VULKAN_HPP_NOEXCEPT
2705       : AccelerationStructureMatrixMotionInstanceNV(
2706           *reinterpret_cast<AccelerationStructureMatrixMotionInstanceNV const *>( &rhs ) )
2707     {}
2708 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
2709 
2710     AccelerationStructureMatrixMotionInstanceNV &
2711       operator=( AccelerationStructureMatrixMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2712 
2713     AccelerationStructureMatrixMotionInstanceNV &
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2714       operator=( VkAccelerationStructureMatrixMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT
2715     {
2716       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV const *>( &rhs );
2717       return *this;
2718     }
2719 
2720 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
2721     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV &
setTransformT0VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2722       setTransformT0( VULKAN_HPP_NAMESPACE::TransformMatrixKHR const & transformT0_ ) VULKAN_HPP_NOEXCEPT
2723     {
2724       transformT0 = transformT0_;
2725       return *this;
2726     }
2727 
2728     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV &
setTransformT1VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2729       setTransformT1( VULKAN_HPP_NAMESPACE::TransformMatrixKHR const & transformT1_ ) VULKAN_HPP_NOEXCEPT
2730     {
2731       transformT1 = transformT1_;
2732       return *this;
2733     }
2734 
2735     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV &
setInstanceCustomIndexVULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2736                             setInstanceCustomIndex( uint32_t instanceCustomIndex_ ) VULKAN_HPP_NOEXCEPT
2737     {
2738       instanceCustomIndex = instanceCustomIndex_;
2739       return *this;
2740     }
2741 
setMaskVULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2742     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV & setMask( uint32_t mask_ ) VULKAN_HPP_NOEXCEPT
2743     {
2744       mask = mask_;
2745       return *this;
2746     }
2747 
2748     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV &
setInstanceShaderBindingTableRecordOffsetVULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2749       setInstanceShaderBindingTableRecordOffset( uint32_t instanceShaderBindingTableRecordOffset_ ) VULKAN_HPP_NOEXCEPT
2750     {
2751       instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset_;
2752       return *this;
2753     }
2754 
2755     AccelerationStructureMatrixMotionInstanceNV &
setFlagsVULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2756       setFlags( VULKAN_HPP_NAMESPACE::GeometryInstanceFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
2757     {
2758       flags = *reinterpret_cast<VkGeometryInstanceFlagsKHR *>( &flags_ );
2759       return *this;
2760     }
2761 
2762     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV &
setAccelerationStructureReferenceVULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2763       setAccelerationStructureReference( uint64_t accelerationStructureReference_ ) VULKAN_HPP_NOEXCEPT
2764     {
2765       accelerationStructureReference = accelerationStructureReference_;
2766       return *this;
2767     }
2768 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
2769 
operator VkAccelerationStructureMatrixMotionInstanceNV const&VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2770     explicit operator VkAccelerationStructureMatrixMotionInstanceNV const &() const VULKAN_HPP_NOEXCEPT
2771     {
2772       return *reinterpret_cast<const VkAccelerationStructureMatrixMotionInstanceNV *>( this );
2773     }
2774 
operator VkAccelerationStructureMatrixMotionInstanceNV&VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2775     explicit operator VkAccelerationStructureMatrixMotionInstanceNV &() VULKAN_HPP_NOEXCEPT
2776     {
2777       return *reinterpret_cast<VkAccelerationStructureMatrixMotionInstanceNV *>( this );
2778     }
2779 
2780 #if 14 <= VULKAN_HPP_CPP_VERSION
2781     auto
2782 #else
2783     std::tuple<VULKAN_HPP_NAMESPACE::TransformMatrixKHR const &,
2784                VULKAN_HPP_NAMESPACE::TransformMatrixKHR const &,
2785                uint32_t const &,
2786                uint32_t const &,
2787                uint32_t const &,
2788                VkGeometryInstanceFlagsKHR const &,
2789                uint64_t const &>
2790 #endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2791       reflect() const VULKAN_HPP_NOEXCEPT
2792     {
2793       return std::tie( transformT0,
2794                        transformT1,
2795                        instanceCustomIndex,
2796                        mask,
2797                        instanceShaderBindingTableRecordOffset,
2798                        flags,
2799                        accelerationStructureReference );
2800     }
2801 
2802 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
2803     auto operator<=>( AccelerationStructureMatrixMotionInstanceNV const & ) const = default;
2804 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2805     bool operator==( AccelerationStructureMatrixMotionInstanceNV const & rhs ) const VULKAN_HPP_NOEXCEPT
2806     {
2807       return this->reflect() == rhs.reflect();
2808     }
2809 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2810     bool operator!=( AccelerationStructureMatrixMotionInstanceNV const & rhs ) const VULKAN_HPP_NOEXCEPT
2811     {
2812       return this->reflect() != rhs.reflect();
2813     }
2814 #endif
2815 
2816   public:
2817     VULKAN_HPP_NAMESPACE::TransformMatrixKHR transformT0 = {};
2818     VULKAN_HPP_NAMESPACE::TransformMatrixKHR transformT1 = {};
2819     uint32_t                                 instanceCustomIndex : 24;
2820     uint32_t                                 mask : 8;
2821     uint32_t                                 instanceShaderBindingTableRecordOffset : 24;
2822     VkGeometryInstanceFlagsKHR               flags : 8;
2823     uint64_t                                 accelerationStructureReference = {};
2824   };
2825   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV ) ==
2826                               sizeof( VkAccelerationStructureMatrixMotionInstanceNV ),
2827                             "struct and wrapper have different size!" );
2828   VULKAN_HPP_STATIC_ASSERT(
2829     std::is_standard_layout<VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV>::value,
2830     "struct wrapper is not a standard layout!" );
2831   VULKAN_HPP_STATIC_ASSERT(
2832     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV>::value,
2833     "AccelerationStructureMatrixMotionInstanceNV is not nothrow_move_constructible!" );
2834 
2835   struct AccelerationStructureMemoryRequirementsInfoNV
2836   {
2837     using NativeType = VkAccelerationStructureMemoryRequirementsInfoNV;
2838 
2839     static const bool                                  allowDuplicate = false;
2840     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
2841       StructureType::eAccelerationStructureMemoryRequirementsInfoNV;
2842 
2843 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureMemoryRequirementsInfoNVVULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV2844     VULKAN_HPP_CONSTEXPR AccelerationStructureMemoryRequirementsInfoNV(
2845       VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsTypeNV type_ =
2846         VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsTypeNV::eObject,
2847       VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure_ = {} ) VULKAN_HPP_NOEXCEPT
2848       : type( type_ )
2849       , accelerationStructure( accelerationStructure_ )
2850     {}
2851 
2852     VULKAN_HPP_CONSTEXPR AccelerationStructureMemoryRequirementsInfoNV(
2853       AccelerationStructureMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2854 
AccelerationStructureMemoryRequirementsInfoNVVULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV2855     AccelerationStructureMemoryRequirementsInfoNV( VkAccelerationStructureMemoryRequirementsInfoNV const & rhs )
2856       VULKAN_HPP_NOEXCEPT
2857       : AccelerationStructureMemoryRequirementsInfoNV(
2858           *reinterpret_cast<AccelerationStructureMemoryRequirementsInfoNV const *>( &rhs ) )
2859     {}
2860 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
2861 
2862     AccelerationStructureMemoryRequirementsInfoNV &
2863       operator=( AccelerationStructureMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2864 
2865     AccelerationStructureMemoryRequirementsInfoNV &
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV2866       operator=( VkAccelerationStructureMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
2867     {
2868       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV const *>( &rhs );
2869       return *this;
2870     }
2871 
2872 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
2873     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMemoryRequirementsInfoNV &
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV2874                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
2875     {
2876       pNext = pNext_;
2877       return *this;
2878     }
2879 
2880     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMemoryRequirementsInfoNV &
setTypeVULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV2881       setType( VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsTypeNV type_ ) VULKAN_HPP_NOEXCEPT
2882     {
2883       type = type_;
2884       return *this;
2885     }
2886 
setAccelerationStructureVULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV2887     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMemoryRequirementsInfoNV & setAccelerationStructure(
2888       VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure_ ) VULKAN_HPP_NOEXCEPT
2889     {
2890       accelerationStructure = accelerationStructure_;
2891       return *this;
2892     }
2893 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
2894 
operator VkAccelerationStructureMemoryRequirementsInfoNV const&VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV2895     explicit operator VkAccelerationStructureMemoryRequirementsInfoNV const &() const VULKAN_HPP_NOEXCEPT
2896     {
2897       return *reinterpret_cast<const VkAccelerationStructureMemoryRequirementsInfoNV *>( this );
2898     }
2899 
operator VkAccelerationStructureMemoryRequirementsInfoNV&VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV2900     explicit operator VkAccelerationStructureMemoryRequirementsInfoNV &() VULKAN_HPP_NOEXCEPT
2901     {
2902       return *reinterpret_cast<VkAccelerationStructureMemoryRequirementsInfoNV *>( this );
2903     }
2904 
2905 #if 14 <= VULKAN_HPP_CPP_VERSION
2906     auto
2907 #else
2908     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
2909                const void * const &,
2910                VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsTypeNV const &,
2911                VULKAN_HPP_NAMESPACE::AccelerationStructureNV const &>
2912 #endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV2913       reflect() const VULKAN_HPP_NOEXCEPT
2914     {
2915       return std::tie( sType, pNext, type, accelerationStructure );
2916     }
2917 
2918 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
2919     auto operator<=>( AccelerationStructureMemoryRequirementsInfoNV const & ) const = default;
2920 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV2921     bool operator==( AccelerationStructureMemoryRequirementsInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
2922     {
2923       return this->reflect() == rhs.reflect();
2924     }
2925 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV2926     bool operator!=( AccelerationStructureMemoryRequirementsInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
2927     {
2928       return this->reflect() != rhs.reflect();
2929     }
2930 #endif
2931 
2932   public:
2933     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureMemoryRequirementsInfoNV;
2934     const void *                        pNext = {};
2935     VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsTypeNV type =
2936       VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsTypeNV::eObject;
2937     VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure = {};
2938   };
2939   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV ) ==
2940                               sizeof( VkAccelerationStructureMemoryRequirementsInfoNV ),
2941                             "struct and wrapper have different size!" );
2942   VULKAN_HPP_STATIC_ASSERT(
2943     std::is_standard_layout<VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV>::value,
2944     "struct wrapper is not a standard layout!" );
2945   VULKAN_HPP_STATIC_ASSERT(
2946     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV>::value,
2947     "AccelerationStructureMemoryRequirementsInfoNV is not nothrow_move_constructible!" );
2948 
2949   template <>
2950   struct CppType<StructureType, StructureType::eAccelerationStructureMemoryRequirementsInfoNV>
2951   {
2952     using Type = AccelerationStructureMemoryRequirementsInfoNV;
2953   };
2954 
2955   struct AccelerationStructureMotionInfoNV
2956   {
2957     using NativeType = VkAccelerationStructureMotionInfoNV;
2958 
2959     static const bool                                  allowDuplicate = false;
2960     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
2961       StructureType::eAccelerationStructureMotionInfoNV;
2962 
2963 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureMotionInfoNVVULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV2964     VULKAN_HPP_CONSTEXPR AccelerationStructureMotionInfoNV(
2965       uint32_t                                                     maxInstances_ = {},
2966       VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoFlagsNV flags_        = {} ) VULKAN_HPP_NOEXCEPT
2967       : maxInstances( maxInstances_ )
2968       , flags( flags_ )
2969     {}
2970 
2971     VULKAN_HPP_CONSTEXPR
2972       AccelerationStructureMotionInfoNV( AccelerationStructureMotionInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2973 
AccelerationStructureMotionInfoNVVULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV2974     AccelerationStructureMotionInfoNV( VkAccelerationStructureMotionInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
2975       : AccelerationStructureMotionInfoNV( *reinterpret_cast<AccelerationStructureMotionInfoNV const *>( &rhs ) )
2976     {}
2977 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
2978 
2979     AccelerationStructureMotionInfoNV &
2980       operator=( AccelerationStructureMotionInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2981 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV2982     AccelerationStructureMotionInfoNV & operator=( VkAccelerationStructureMotionInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
2983     {
2984       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV const *>( &rhs );
2985       return *this;
2986     }
2987 
2988 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV2989     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
2990     {
2991       pNext = pNext_;
2992       return *this;
2993     }
2994 
2995     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInfoNV &
setMaxInstancesVULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV2996                             setMaxInstances( uint32_t maxInstances_ ) VULKAN_HPP_NOEXCEPT
2997     {
2998       maxInstances = maxInstances_;
2999       return *this;
3000     }
3001 
3002     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInfoNV &
setFlagsVULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV3003       setFlags( VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT
3004     {
3005       flags = flags_;
3006       return *this;
3007     }
3008 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
3009 
operator VkAccelerationStructureMotionInfoNV const&VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV3010     explicit operator VkAccelerationStructureMotionInfoNV const &() const VULKAN_HPP_NOEXCEPT
3011     {
3012       return *reinterpret_cast<const VkAccelerationStructureMotionInfoNV *>( this );
3013     }
3014 
operator VkAccelerationStructureMotionInfoNV&VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV3015     explicit operator VkAccelerationStructureMotionInfoNV &() VULKAN_HPP_NOEXCEPT
3016     {
3017       return *reinterpret_cast<VkAccelerationStructureMotionInfoNV *>( this );
3018     }
3019 
3020 #if 14 <= VULKAN_HPP_CPP_VERSION
3021     auto
3022 #else
3023     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
3024                const void * const &,
3025                uint32_t const &,
3026                VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoFlagsNV const &>
3027 #endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV3028       reflect() const VULKAN_HPP_NOEXCEPT
3029     {
3030       return std::tie( sType, pNext, maxInstances, flags );
3031     }
3032 
3033 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
3034     auto operator<=>( AccelerationStructureMotionInfoNV const & ) const = default;
3035 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV3036     bool operator==( AccelerationStructureMotionInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
3037     {
3038       return this->reflect() == rhs.reflect();
3039     }
3040 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV3041     bool operator!=( AccelerationStructureMotionInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
3042     {
3043       return this->reflect() != rhs.reflect();
3044     }
3045 #endif
3046 
3047   public:
3048     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::eAccelerationStructureMotionInfoNV;
3049     const void *                        pNext        = {};
3050     uint32_t                            maxInstances = {};
3051     VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoFlagsNV flags = {};
3052   };
3053   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV ) ==
3054                               sizeof( VkAccelerationStructureMotionInfoNV ),
3055                             "struct and wrapper have different size!" );
3056   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV>::value,
3057                             "struct wrapper is not a standard layout!" );
3058   VULKAN_HPP_STATIC_ASSERT(
3059     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV>::value,
3060     "AccelerationStructureMotionInfoNV is not nothrow_move_constructible!" );
3061 
3062   template <>
3063   struct CppType<StructureType, StructureType::eAccelerationStructureMotionInfoNV>
3064   {
3065     using Type = AccelerationStructureMotionInfoNV;
3066   };
3067 
3068   struct SRTDataNV
3069   {
3070     using NativeType = VkSRTDataNV;
3071 
3072 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SRTDataNVVULKAN_HPP_NAMESPACE::SRTDataNV3073     VULKAN_HPP_CONSTEXPR SRTDataNV( float sx_  = {},
3074                                     float a_   = {},
3075                                     float b_   = {},
3076                                     float pvx_ = {},
3077                                     float sy_  = {},
3078                                     float c_   = {},
3079                                     float pvy_ = {},
3080                                     float sz_  = {},
3081                                     float pvz_ = {},
3082                                     float qx_  = {},
3083                                     float qy_  = {},
3084                                     float qz_  = {},
3085                                     float qw_  = {},
3086                                     float tx_  = {},
3087                                     float ty_  = {},
3088                                     float tz_  = {} ) VULKAN_HPP_NOEXCEPT
3089       : sx( sx_ )
3090       , a( a_ )
3091       , b( b_ )
3092       , pvx( pvx_ )
3093       , sy( sy_ )
3094       , c( c_ )
3095       , pvy( pvy_ )
3096       , sz( sz_ )
3097       , pvz( pvz_ )
3098       , qx( qx_ )
3099       , qy( qy_ )
3100       , qz( qz_ )
3101       , qw( qw_ )
3102       , tx( tx_ )
3103       , ty( ty_ )
3104       , tz( tz_ )
3105     {}
3106 
3107     VULKAN_HPP_CONSTEXPR SRTDataNV( SRTDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3108 
SRTDataNVVULKAN_HPP_NAMESPACE::SRTDataNV3109     SRTDataNV( VkSRTDataNV const & rhs ) VULKAN_HPP_NOEXCEPT : SRTDataNV( *reinterpret_cast<SRTDataNV const *>( &rhs ) )
3110     {}
3111 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
3112 
3113     SRTDataNV & operator=( SRTDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3114 
operator =VULKAN_HPP_NAMESPACE::SRTDataNV3115     SRTDataNV & operator=( VkSRTDataNV const & rhs ) VULKAN_HPP_NOEXCEPT
3116     {
3117       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SRTDataNV const *>( &rhs );
3118       return *this;
3119     }
3120 
3121 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSxVULKAN_HPP_NAMESPACE::SRTDataNV3122     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setSx( float sx_ ) VULKAN_HPP_NOEXCEPT
3123     {
3124       sx = sx_;
3125       return *this;
3126     }
3127 
setAVULKAN_HPP_NAMESPACE::SRTDataNV3128     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setA( float a_ ) VULKAN_HPP_NOEXCEPT
3129     {
3130       a = a_;
3131       return *this;
3132     }
3133 
setBVULKAN_HPP_NAMESPACE::SRTDataNV3134     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setB( float b_ ) VULKAN_HPP_NOEXCEPT
3135     {
3136       b = b_;
3137       return *this;
3138     }
3139 
setPvxVULKAN_HPP_NAMESPACE::SRTDataNV3140     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setPvx( float pvx_ ) VULKAN_HPP_NOEXCEPT
3141     {
3142       pvx = pvx_;
3143       return *this;
3144     }
3145 
setSyVULKAN_HPP_NAMESPACE::SRTDataNV3146     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setSy( float sy_ ) VULKAN_HPP_NOEXCEPT
3147     {
3148       sy = sy_;
3149       return *this;
3150     }
3151 
setCVULKAN_HPP_NAMESPACE::SRTDataNV3152     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setC( float c_ ) VULKAN_HPP_NOEXCEPT
3153     {
3154       c = c_;
3155       return *this;
3156     }
3157 
setPvyVULKAN_HPP_NAMESPACE::SRTDataNV3158     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setPvy( float pvy_ ) VULKAN_HPP_NOEXCEPT
3159     {
3160       pvy = pvy_;
3161       return *this;
3162     }
3163 
setSzVULKAN_HPP_NAMESPACE::SRTDataNV3164     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setSz( float sz_ ) VULKAN_HPP_NOEXCEPT
3165     {
3166       sz = sz_;
3167       return *this;
3168     }
3169 
setPvzVULKAN_HPP_NAMESPACE::SRTDataNV3170     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setPvz( float pvz_ ) VULKAN_HPP_NOEXCEPT
3171     {
3172       pvz = pvz_;
3173       return *this;
3174     }
3175 
setQxVULKAN_HPP_NAMESPACE::SRTDataNV3176     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setQx( float qx_ ) VULKAN_HPP_NOEXCEPT
3177     {
3178       qx = qx_;
3179       return *this;
3180     }
3181 
setQyVULKAN_HPP_NAMESPACE::SRTDataNV3182     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setQy( float qy_ ) VULKAN_HPP_NOEXCEPT
3183     {
3184       qy = qy_;
3185       return *this;
3186     }
3187 
setQzVULKAN_HPP_NAMESPACE::SRTDataNV3188     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setQz( float qz_ ) VULKAN_HPP_NOEXCEPT
3189     {
3190       qz = qz_;
3191       return *this;
3192     }
3193 
setQwVULKAN_HPP_NAMESPACE::SRTDataNV3194     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setQw( float qw_ ) VULKAN_HPP_NOEXCEPT
3195     {
3196       qw = qw_;
3197       return *this;
3198     }
3199 
setTxVULKAN_HPP_NAMESPACE::SRTDataNV3200     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setTx( float tx_ ) VULKAN_HPP_NOEXCEPT
3201     {
3202       tx = tx_;
3203       return *this;
3204     }
3205 
setTyVULKAN_HPP_NAMESPACE::SRTDataNV3206     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setTy( float ty_ ) VULKAN_HPP_NOEXCEPT
3207     {
3208       ty = ty_;
3209       return *this;
3210     }
3211 
setTzVULKAN_HPP_NAMESPACE::SRTDataNV3212     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setTz( float tz_ ) VULKAN_HPP_NOEXCEPT
3213     {
3214       tz = tz_;
3215       return *this;
3216     }
3217 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
3218 
operator VkSRTDataNV const&VULKAN_HPP_NAMESPACE::SRTDataNV3219     explicit operator VkSRTDataNV const &() const VULKAN_HPP_NOEXCEPT
3220     {
3221       return *reinterpret_cast<const VkSRTDataNV *>( this );
3222     }
3223 
operator VkSRTDataNV&VULKAN_HPP_NAMESPACE::SRTDataNV3224     explicit operator VkSRTDataNV &() VULKAN_HPP_NOEXCEPT
3225     {
3226       return *reinterpret_cast<VkSRTDataNV *>( this );
3227     }
3228 
3229 #if 14 <= VULKAN_HPP_CPP_VERSION
3230     auto
3231 #else
3232     std::tuple<float const &,
3233                float const &,
3234                float const &,
3235                float const &,
3236                float const &,
3237                float const &,
3238                float const &,
3239                float const &,
3240                float const &,
3241                float const &,
3242                float const &,
3243                float const &,
3244                float const &,
3245                float const &,
3246                float const &,
3247                float const &>
3248 #endif
reflectVULKAN_HPP_NAMESPACE::SRTDataNV3249       reflect() const VULKAN_HPP_NOEXCEPT
3250     {
3251       return std::tie( sx, a, b, pvx, sy, c, pvy, sz, pvz, qx, qy, qz, qw, tx, ty, tz );
3252     }
3253 
3254 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
3255     auto operator<=>( SRTDataNV const & ) const = default;
3256 #else
operator ==VULKAN_HPP_NAMESPACE::SRTDataNV3257     bool operator==( SRTDataNV const & rhs ) const VULKAN_HPP_NOEXCEPT
3258     {
3259       return this->reflect() == rhs.reflect();
3260     }
3261 
operator !=VULKAN_HPP_NAMESPACE::SRTDataNV3262     bool operator!=( SRTDataNV const & rhs ) const VULKAN_HPP_NOEXCEPT
3263     {
3264       return this->reflect() != rhs.reflect();
3265     }
3266 #endif
3267 
3268   public:
3269     float sx  = {};
3270     float a   = {};
3271     float b   = {};
3272     float pvx = {};
3273     float sy  = {};
3274     float c   = {};
3275     float pvy = {};
3276     float sz  = {};
3277     float pvz = {};
3278     float qx  = {};
3279     float qy  = {};
3280     float qz  = {};
3281     float qw  = {};
3282     float tx  = {};
3283     float ty  = {};
3284     float tz  = {};
3285   };
3286   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SRTDataNV ) == sizeof( VkSRTDataNV ),
3287                             "struct and wrapper have different size!" );
3288   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SRTDataNV>::value,
3289                             "struct wrapper is not a standard layout!" );
3290   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SRTDataNV>::value,
3291                             "SRTDataNV is not nothrow_move_constructible!" );
3292 
3293   struct AccelerationStructureSRTMotionInstanceNV
3294   {
3295     using NativeType = VkAccelerationStructureSRTMotionInstanceNV;
3296 
3297 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
3298     VULKAN_HPP_CONSTEXPR
AccelerationStructureSRTMotionInstanceNVVULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3299       AccelerationStructureSRTMotionInstanceNV( VULKAN_HPP_NAMESPACE::SRTDataNV transformT0_          = {},
3300                                                 VULKAN_HPP_NAMESPACE::SRTDataNV transformT1_          = {},
3301                                                 uint32_t                        instanceCustomIndex_  = {},
3302                                                 uint32_t                        mask_                 = {},
3303                                                 uint32_t instanceShaderBindingTableRecordOffset_      = {},
3304                                                 VULKAN_HPP_NAMESPACE::GeometryInstanceFlagsKHR flags_ = {},
3305                                                 uint64_t accelerationStructureReference_ = {} ) VULKAN_HPP_NOEXCEPT
3306       : transformT0( transformT0_ )
3307       , transformT1( transformT1_ )
3308       , instanceCustomIndex( instanceCustomIndex_ )
3309       , mask( mask_ )
3310       , instanceShaderBindingTableRecordOffset( instanceShaderBindingTableRecordOffset_ )
3311       , flags( flags_ )
3312       , accelerationStructureReference( accelerationStructureReference_ )
3313     {}
3314 
3315     VULKAN_HPP_CONSTEXPR AccelerationStructureSRTMotionInstanceNV(
3316       AccelerationStructureSRTMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3317 
AccelerationStructureSRTMotionInstanceNVVULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3318     AccelerationStructureSRTMotionInstanceNV( VkAccelerationStructureSRTMotionInstanceNV const & rhs )
3319       VULKAN_HPP_NOEXCEPT
3320       : AccelerationStructureSRTMotionInstanceNV(
3321           *reinterpret_cast<AccelerationStructureSRTMotionInstanceNV const *>( &rhs ) )
3322     {}
3323 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
3324 
3325     AccelerationStructureSRTMotionInstanceNV &
3326       operator=( AccelerationStructureSRTMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3327 
3328     AccelerationStructureSRTMotionInstanceNV &
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3329       operator=( VkAccelerationStructureSRTMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT
3330     {
3331       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV const *>( &rhs );
3332       return *this;
3333     }
3334 
3335 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
3336     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureSRTMotionInstanceNV &
setTransformT0VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3337                             setTransformT0( VULKAN_HPP_NAMESPACE::SRTDataNV const & transformT0_ ) VULKAN_HPP_NOEXCEPT
3338     {
3339       transformT0 = transformT0_;
3340       return *this;
3341     }
3342 
3343     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureSRTMotionInstanceNV &
setTransformT1VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3344                             setTransformT1( VULKAN_HPP_NAMESPACE::SRTDataNV const & transformT1_ ) VULKAN_HPP_NOEXCEPT
3345     {
3346       transformT1 = transformT1_;
3347       return *this;
3348     }
3349 
3350     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureSRTMotionInstanceNV &
setInstanceCustomIndexVULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3351                             setInstanceCustomIndex( uint32_t instanceCustomIndex_ ) VULKAN_HPP_NOEXCEPT
3352     {
3353       instanceCustomIndex = instanceCustomIndex_;
3354       return *this;
3355     }
3356 
setMaskVULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3357     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureSRTMotionInstanceNV & setMask( uint32_t mask_ ) VULKAN_HPP_NOEXCEPT
3358     {
3359       mask = mask_;
3360       return *this;
3361     }
3362 
3363     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureSRTMotionInstanceNV &
setInstanceShaderBindingTableRecordOffsetVULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3364       setInstanceShaderBindingTableRecordOffset( uint32_t instanceShaderBindingTableRecordOffset_ ) VULKAN_HPP_NOEXCEPT
3365     {
3366       instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset_;
3367       return *this;
3368     }
3369 
3370     AccelerationStructureSRTMotionInstanceNV &
setFlagsVULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3371       setFlags( VULKAN_HPP_NAMESPACE::GeometryInstanceFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
3372     {
3373       flags = *reinterpret_cast<VkGeometryInstanceFlagsKHR *>( &flags_ );
3374       return *this;
3375     }
3376 
3377     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureSRTMotionInstanceNV &
setAccelerationStructureReferenceVULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3378       setAccelerationStructureReference( uint64_t accelerationStructureReference_ ) VULKAN_HPP_NOEXCEPT
3379     {
3380       accelerationStructureReference = accelerationStructureReference_;
3381       return *this;
3382     }
3383 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
3384 
operator VkAccelerationStructureSRTMotionInstanceNV const&VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3385     explicit operator VkAccelerationStructureSRTMotionInstanceNV const &() const VULKAN_HPP_NOEXCEPT
3386     {
3387       return *reinterpret_cast<const VkAccelerationStructureSRTMotionInstanceNV *>( this );
3388     }
3389 
operator VkAccelerationStructureSRTMotionInstanceNV&VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3390     explicit operator VkAccelerationStructureSRTMotionInstanceNV &() VULKAN_HPP_NOEXCEPT
3391     {
3392       return *reinterpret_cast<VkAccelerationStructureSRTMotionInstanceNV *>( this );
3393     }
3394 
3395 #if 14 <= VULKAN_HPP_CPP_VERSION
3396     auto
3397 #else
3398     std::tuple<VULKAN_HPP_NAMESPACE::SRTDataNV const &,
3399                VULKAN_HPP_NAMESPACE::SRTDataNV const &,
3400                uint32_t const &,
3401                uint32_t const &,
3402                uint32_t const &,
3403                VkGeometryInstanceFlagsKHR const &,
3404                uint64_t const &>
3405 #endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3406       reflect() const VULKAN_HPP_NOEXCEPT
3407     {
3408       return std::tie( transformT0,
3409                        transformT1,
3410                        instanceCustomIndex,
3411                        mask,
3412                        instanceShaderBindingTableRecordOffset,
3413                        flags,
3414                        accelerationStructureReference );
3415     }
3416 
3417 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
3418     auto operator<=>( AccelerationStructureSRTMotionInstanceNV const & ) const = default;
3419 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3420     bool operator==( AccelerationStructureSRTMotionInstanceNV const & rhs ) const VULKAN_HPP_NOEXCEPT
3421     {
3422       return this->reflect() == rhs.reflect();
3423     }
3424 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3425     bool operator!=( AccelerationStructureSRTMotionInstanceNV const & rhs ) const VULKAN_HPP_NOEXCEPT
3426     {
3427       return this->reflect() != rhs.reflect();
3428     }
3429 #endif
3430 
3431   public:
3432     VULKAN_HPP_NAMESPACE::SRTDataNV transformT0 = {};
3433     VULKAN_HPP_NAMESPACE::SRTDataNV transformT1 = {};
3434     uint32_t                        instanceCustomIndex : 24;
3435     uint32_t                        mask : 8;
3436     uint32_t                        instanceShaderBindingTableRecordOffset : 24;
3437     VkGeometryInstanceFlagsKHR      flags : 8;
3438     uint64_t                        accelerationStructureReference = {};
3439   };
3440   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV ) ==
3441                               sizeof( VkAccelerationStructureSRTMotionInstanceNV ),
3442                             "struct and wrapper have different size!" );
3443   VULKAN_HPP_STATIC_ASSERT(
3444     std::is_standard_layout<VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV>::value,
3445     "struct wrapper is not a standard layout!" );
3446   VULKAN_HPP_STATIC_ASSERT(
3447     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV>::value,
3448     "AccelerationStructureSRTMotionInstanceNV is not nothrow_move_constructible!" );
3449 
3450   union AccelerationStructureMotionInstanceDataNV
3451   {
3452     using NativeType = VkAccelerationStructureMotionInstanceDataNV;
3453 #if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS )
3454 
AccelerationStructureMotionInstanceDataNV(VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR staticInstance_={} )3455     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceDataNV(
3456       VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR staticInstance_ = {} )
3457       : staticInstance( staticInstance_ )
3458     {}
3459 
AccelerationStructureMotionInstanceDataNV(VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV matrixMotionInstance_)3460     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceDataNV(
3461       VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV matrixMotionInstance_ )
3462       : matrixMotionInstance( matrixMotionInstance_ )
3463     {}
3464 
AccelerationStructureMotionInstanceDataNV(VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV srtMotionInstance_)3465     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceDataNV(
3466       VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV srtMotionInstance_ )
3467       : srtMotionInstance( srtMotionInstance_ )
3468     {}
3469 #endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/
3470 
3471 #if !defined( VULKAN_HPP_NO_UNION_SETTERS )
setStaticInstance(VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR const & staticInstance_)3472     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceDataNV & setStaticInstance(
3473       VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR const & staticInstance_ ) VULKAN_HPP_NOEXCEPT
3474     {
3475       staticInstance = staticInstance_;
3476       return *this;
3477     }
3478 
setMatrixMotionInstance(VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV const & matrixMotionInstance_)3479     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceDataNV & setMatrixMotionInstance(
3480       VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV const & matrixMotionInstance_ )
3481       VULKAN_HPP_NOEXCEPT
3482     {
3483       matrixMotionInstance = matrixMotionInstance_;
3484       return *this;
3485     }
3486 
setSrtMotionInstance(VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV const & srtMotionInstance_)3487     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceDataNV & setSrtMotionInstance(
3488       VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV const & srtMotionInstance_ ) VULKAN_HPP_NOEXCEPT
3489     {
3490       srtMotionInstance = srtMotionInstance_;
3491       return *this;
3492     }
3493 #endif /*VULKAN_HPP_NO_UNION_SETTERS*/
3494 
operator VkAccelerationStructureMotionInstanceDataNV const&() const3495     operator VkAccelerationStructureMotionInstanceDataNV const &() const
3496     {
3497       return *reinterpret_cast<const VkAccelerationStructureMotionInstanceDataNV *>( this );
3498     }
3499 
operator VkAccelerationStructureMotionInstanceDataNV&()3500     operator VkAccelerationStructureMotionInstanceDataNV &()
3501     {
3502       return *reinterpret_cast<VkAccelerationStructureMotionInstanceDataNV *>( this );
3503     }
3504 
3505 #ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
3506     VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR            staticInstance;
3507     VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV matrixMotionInstance;
3508     VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV    srtMotionInstance;
3509 #else
3510     VkAccelerationStructureInstanceKHR            staticInstance;
3511     VkAccelerationStructureMatrixMotionInstanceNV matrixMotionInstance;
3512     VkAccelerationStructureSRTMotionInstanceNV    srtMotionInstance;
3513 #endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/
3514   };
3515 
3516   struct AccelerationStructureMotionInstanceNV
3517   {
3518     using NativeType = VkAccelerationStructureMotionInstanceNV;
3519 
3520 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureMotionInstanceNVVULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceNV3521     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceNV(
3522       VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceTypeNV type_ =
3523         VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceTypeNV::eStatic,
3524       VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceFlagsNV flags_ = {},
3525       VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceDataNV  data_  = {} ) VULKAN_HPP_NOEXCEPT
3526       : type( type_ )
3527       , flags( flags_ )
3528       , data( data_ )
3529     {}
3530 
3531     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceNV( AccelerationStructureMotionInstanceNV const & rhs )
3532       VULKAN_HPP_NOEXCEPT = default;
3533 
AccelerationStructureMotionInstanceNVVULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceNV3534     AccelerationStructureMotionInstanceNV( VkAccelerationStructureMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT
3535       : AccelerationStructureMotionInstanceNV(
3536           *reinterpret_cast<AccelerationStructureMotionInstanceNV const *>( &rhs ) )
3537     {}
3538 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
3539 
3540     AccelerationStructureMotionInstanceNV &
3541       operator=( AccelerationStructureMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3542 
3543     AccelerationStructureMotionInstanceNV &
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceNV3544       operator=( VkAccelerationStructureMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT
3545     {
3546       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceNV const *>( &rhs );
3547       return *this;
3548     }
3549 
3550 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
3551     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceNV &
setTypeVULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceNV3552       setType( VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceTypeNV type_ ) VULKAN_HPP_NOEXCEPT
3553     {
3554       type = type_;
3555       return *this;
3556     }
3557 
3558     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceNV &
setFlagsVULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceNV3559       setFlags( VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT
3560     {
3561       flags = flags_;
3562       return *this;
3563     }
3564 
3565     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceNV &
setDataVULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceNV3566       setData( VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceDataNV const & data_ ) VULKAN_HPP_NOEXCEPT
3567     {
3568       data = data_;
3569       return *this;
3570     }
3571 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
3572 
operator VkAccelerationStructureMotionInstanceNV const&VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceNV3573     explicit operator VkAccelerationStructureMotionInstanceNV const &() const VULKAN_HPP_NOEXCEPT
3574     {
3575       return *reinterpret_cast<const VkAccelerationStructureMotionInstanceNV *>( this );
3576     }
3577 
operator VkAccelerationStructureMotionInstanceNV&VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceNV3578     explicit operator VkAccelerationStructureMotionInstanceNV &() VULKAN_HPP_NOEXCEPT
3579     {
3580       return *reinterpret_cast<VkAccelerationStructureMotionInstanceNV *>( this );
3581     }
3582 
3583 #if 14 <= VULKAN_HPP_CPP_VERSION
3584     auto
3585 #else
3586     std::tuple<VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceTypeNV const &,
3587                VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceFlagsNV const &,
3588                VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceDataNV const &>
3589 #endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceNV3590       reflect() const VULKAN_HPP_NOEXCEPT
3591     {
3592       return std::tie( type, flags, data );
3593     }
3594 
3595   public:
3596     VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceTypeNV type =
3597       VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceTypeNV::eStatic;
3598     VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceFlagsNV flags = {};
3599     VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceDataNV  data  = {};
3600   };
3601   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceNV ) ==
3602                               sizeof( VkAccelerationStructureMotionInstanceNV ),
3603                             "struct and wrapper have different size!" );
3604   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceNV>::value,
3605                             "struct wrapper is not a standard layout!" );
3606   VULKAN_HPP_STATIC_ASSERT(
3607     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceNV>::value,
3608     "AccelerationStructureMotionInstanceNV is not nothrow_move_constructible!" );
3609 
3610   struct AccelerationStructureVersionInfoKHR
3611   {
3612     using NativeType = VkAccelerationStructureVersionInfoKHR;
3613 
3614     static const bool                                  allowDuplicate = false;
3615     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
3616       StructureType::eAccelerationStructureVersionInfoKHR;
3617 
3618 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureVersionInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR3619     VULKAN_HPP_CONSTEXPR AccelerationStructureVersionInfoKHR( const uint8_t * pVersionData_ = {} ) VULKAN_HPP_NOEXCEPT
3620       : pVersionData( pVersionData_ )
3621     {}
3622 
3623     VULKAN_HPP_CONSTEXPR AccelerationStructureVersionInfoKHR( AccelerationStructureVersionInfoKHR const & rhs )
3624       VULKAN_HPP_NOEXCEPT = default;
3625 
AccelerationStructureVersionInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR3626     AccelerationStructureVersionInfoKHR( VkAccelerationStructureVersionInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
3627       : AccelerationStructureVersionInfoKHR( *reinterpret_cast<AccelerationStructureVersionInfoKHR const *>( &rhs ) )
3628     {}
3629 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
3630 
3631     AccelerationStructureVersionInfoKHR &
3632       operator=( AccelerationStructureVersionInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3633 
3634     AccelerationStructureVersionInfoKHR &
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR3635       operator=( VkAccelerationStructureVersionInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
3636     {
3637       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR const *>( &rhs );
3638       return *this;
3639     }
3640 
3641 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR3642     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureVersionInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
3643     {
3644       pNext = pNext_;
3645       return *this;
3646     }
3647 
3648     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureVersionInfoKHR &
setPVersionDataVULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR3649                             setPVersionData( const uint8_t * pVersionData_ ) VULKAN_HPP_NOEXCEPT
3650     {
3651       pVersionData = pVersionData_;
3652       return *this;
3653     }
3654 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
3655 
operator VkAccelerationStructureVersionInfoKHR const&VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR3656     explicit operator VkAccelerationStructureVersionInfoKHR const &() const VULKAN_HPP_NOEXCEPT
3657     {
3658       return *reinterpret_cast<const VkAccelerationStructureVersionInfoKHR *>( this );
3659     }
3660 
operator VkAccelerationStructureVersionInfoKHR&VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR3661     explicit operator VkAccelerationStructureVersionInfoKHR &() VULKAN_HPP_NOEXCEPT
3662     {
3663       return *reinterpret_cast<VkAccelerationStructureVersionInfoKHR *>( this );
3664     }
3665 
3666 #if 14 <= VULKAN_HPP_CPP_VERSION
3667     auto
3668 #else
3669     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const uint8_t * const &>
3670 #endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR3671       reflect() const VULKAN_HPP_NOEXCEPT
3672     {
3673       return std::tie( sType, pNext, pVersionData );
3674     }
3675 
3676 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
3677     auto operator<=>( AccelerationStructureVersionInfoKHR const & ) const = default;
3678 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR3679     bool operator==( AccelerationStructureVersionInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
3680     {
3681       return this->reflect() == rhs.reflect();
3682     }
3683 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR3684     bool operator!=( AccelerationStructureVersionInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
3685     {
3686       return this->reflect() != rhs.reflect();
3687     }
3688 #endif
3689 
3690   public:
3691     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::eAccelerationStructureVersionInfoKHR;
3692     const void *                        pNext        = {};
3693     const uint8_t *                     pVersionData = {};
3694   };
3695   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR ) ==
3696                               sizeof( VkAccelerationStructureVersionInfoKHR ),
3697                             "struct and wrapper have different size!" );
3698   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR>::value,
3699                             "struct wrapper is not a standard layout!" );
3700   VULKAN_HPP_STATIC_ASSERT(
3701     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR>::value,
3702     "AccelerationStructureVersionInfoKHR is not nothrow_move_constructible!" );
3703 
3704   template <>
3705   struct CppType<StructureType, StructureType::eAccelerationStructureVersionInfoKHR>
3706   {
3707     using Type = AccelerationStructureVersionInfoKHR;
3708   };
3709 
3710   struct AcquireNextImageInfoKHR
3711   {
3712     using NativeType = VkAcquireNextImageInfoKHR;
3713 
3714     static const bool                                  allowDuplicate = false;
3715     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAcquireNextImageInfoKHR;
3716 
3717 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AcquireNextImageInfoKHRVULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR3718     VULKAN_HPP_CONSTEXPR AcquireNextImageInfoKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_ = {},
3719                                                   uint64_t                           timeout_   = {},
3720                                                   VULKAN_HPP_NAMESPACE::Semaphore    semaphore_ = {},
3721                                                   VULKAN_HPP_NAMESPACE::Fence        fence_     = {},
3722                                                   uint32_t deviceMask_ = {} ) VULKAN_HPP_NOEXCEPT
3723       : swapchain( swapchain_ )
3724       , timeout( timeout_ )
3725       , semaphore( semaphore_ )
3726       , fence( fence_ )
3727       , deviceMask( deviceMask_ )
3728     {}
3729 
3730     VULKAN_HPP_CONSTEXPR AcquireNextImageInfoKHR( AcquireNextImageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3731 
AcquireNextImageInfoKHRVULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR3732     AcquireNextImageInfoKHR( VkAcquireNextImageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
3733       : AcquireNextImageInfoKHR( *reinterpret_cast<AcquireNextImageInfoKHR const *>( &rhs ) )
3734     {}
3735 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
3736 
3737     AcquireNextImageInfoKHR & operator=( AcquireNextImageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3738 
operator =VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR3739     AcquireNextImageInfoKHR & operator=( VkAcquireNextImageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
3740     {
3741       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR const *>( &rhs );
3742       return *this;
3743     }
3744 
3745 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR3746     VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
3747     {
3748       pNext = pNext_;
3749       return *this;
3750     }
3751 
3752     VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR &
setSwapchainVULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR3753                             setSwapchain( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_ ) VULKAN_HPP_NOEXCEPT
3754     {
3755       swapchain = swapchain_;
3756       return *this;
3757     }
3758 
setTimeoutVULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR3759     VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR & setTimeout( uint64_t timeout_ ) VULKAN_HPP_NOEXCEPT
3760     {
3761       timeout = timeout_;
3762       return *this;
3763     }
3764 
3765     VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR &
setSemaphoreVULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR3766                             setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
3767     {
3768       semaphore = semaphore_;
3769       return *this;
3770     }
3771 
setFenceVULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR3772     VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR & setFence( VULKAN_HPP_NAMESPACE::Fence fence_ ) VULKAN_HPP_NOEXCEPT
3773     {
3774       fence = fence_;
3775       return *this;
3776     }
3777 
setDeviceMaskVULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR3778     VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR & setDeviceMask( uint32_t deviceMask_ ) VULKAN_HPP_NOEXCEPT
3779     {
3780       deviceMask = deviceMask_;
3781       return *this;
3782     }
3783 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
3784 
operator VkAcquireNextImageInfoKHR const&VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR3785     explicit operator VkAcquireNextImageInfoKHR const &() const VULKAN_HPP_NOEXCEPT
3786     {
3787       return *reinterpret_cast<const VkAcquireNextImageInfoKHR *>( this );
3788     }
3789 
operator VkAcquireNextImageInfoKHR&VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR3790     explicit operator VkAcquireNextImageInfoKHR &() VULKAN_HPP_NOEXCEPT
3791     {
3792       return *reinterpret_cast<VkAcquireNextImageInfoKHR *>( this );
3793     }
3794 
3795 #if 14 <= VULKAN_HPP_CPP_VERSION
3796     auto
3797 #else
3798     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
3799                const void * const &,
3800                VULKAN_HPP_NAMESPACE::SwapchainKHR const &,
3801                uint64_t const &,
3802                VULKAN_HPP_NAMESPACE::Semaphore const &,
3803                VULKAN_HPP_NAMESPACE::Fence const &,
3804                uint32_t const &>
3805 #endif
reflectVULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR3806       reflect() const VULKAN_HPP_NOEXCEPT
3807     {
3808       return std::tie( sType, pNext, swapchain, timeout, semaphore, fence, deviceMask );
3809     }
3810 
3811 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
3812     auto operator<=>( AcquireNextImageInfoKHR const & ) const = default;
3813 #else
operator ==VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR3814     bool operator==( AcquireNextImageInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
3815     {
3816       return this->reflect() == rhs.reflect();
3817     }
3818 
operator !=VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR3819     bool operator!=( AcquireNextImageInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
3820     {
3821       return this->reflect() != rhs.reflect();
3822     }
3823 #endif
3824 
3825   public:
3826     VULKAN_HPP_NAMESPACE::StructureType sType      = StructureType::eAcquireNextImageInfoKHR;
3827     const void *                        pNext      = {};
3828     VULKAN_HPP_NAMESPACE::SwapchainKHR  swapchain  = {};
3829     uint64_t                            timeout    = {};
3830     VULKAN_HPP_NAMESPACE::Semaphore     semaphore  = {};
3831     VULKAN_HPP_NAMESPACE::Fence         fence      = {};
3832     uint32_t                            deviceMask = {};
3833   };
3834   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR ) ==
3835                               sizeof( VkAcquireNextImageInfoKHR ),
3836                             "struct and wrapper have different size!" );
3837   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR>::value,
3838                             "struct wrapper is not a standard layout!" );
3839   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR>::value,
3840                             "AcquireNextImageInfoKHR is not nothrow_move_constructible!" );
3841 
3842   template <>
3843   struct CppType<StructureType, StructureType::eAcquireNextImageInfoKHR>
3844   {
3845     using Type = AcquireNextImageInfoKHR;
3846   };
3847 
3848   struct AcquireProfilingLockInfoKHR
3849   {
3850     using NativeType = VkAcquireProfilingLockInfoKHR;
3851 
3852     static const bool                                  allowDuplicate = false;
3853     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAcquireProfilingLockInfoKHR;
3854 
3855 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AcquireProfilingLockInfoKHRVULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR3856     VULKAN_HPP_CONSTEXPR AcquireProfilingLockInfoKHR( VULKAN_HPP_NAMESPACE::AcquireProfilingLockFlagsKHR flags_ = {},
3857                                                       uint64_t timeout_ = {} ) VULKAN_HPP_NOEXCEPT
3858       : flags( flags_ )
3859       , timeout( timeout_ )
3860     {}
3861 
3862     VULKAN_HPP_CONSTEXPR
3863       AcquireProfilingLockInfoKHR( AcquireProfilingLockInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3864 
AcquireProfilingLockInfoKHRVULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR3865     AcquireProfilingLockInfoKHR( VkAcquireProfilingLockInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
3866       : AcquireProfilingLockInfoKHR( *reinterpret_cast<AcquireProfilingLockInfoKHR const *>( &rhs ) )
3867     {}
3868 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
3869 
3870     AcquireProfilingLockInfoKHR & operator=( AcquireProfilingLockInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3871 
operator =VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR3872     AcquireProfilingLockInfoKHR & operator=( VkAcquireProfilingLockInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
3873     {
3874       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR const *>( &rhs );
3875       return *this;
3876     }
3877 
3878 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR3879     VULKAN_HPP_CONSTEXPR_14 AcquireProfilingLockInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
3880     {
3881       pNext = pNext_;
3882       return *this;
3883     }
3884 
3885     VULKAN_HPP_CONSTEXPR_14 AcquireProfilingLockInfoKHR &
setFlagsVULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR3886                             setFlags( VULKAN_HPP_NAMESPACE::AcquireProfilingLockFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
3887     {
3888       flags = flags_;
3889       return *this;
3890     }
3891 
setTimeoutVULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR3892     VULKAN_HPP_CONSTEXPR_14 AcquireProfilingLockInfoKHR & setTimeout( uint64_t timeout_ ) VULKAN_HPP_NOEXCEPT
3893     {
3894       timeout = timeout_;
3895       return *this;
3896     }
3897 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
3898 
operator VkAcquireProfilingLockInfoKHR const&VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR3899     explicit operator VkAcquireProfilingLockInfoKHR const &() const VULKAN_HPP_NOEXCEPT
3900     {
3901       return *reinterpret_cast<const VkAcquireProfilingLockInfoKHR *>( this );
3902     }
3903 
operator VkAcquireProfilingLockInfoKHR&VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR3904     explicit operator VkAcquireProfilingLockInfoKHR &() VULKAN_HPP_NOEXCEPT
3905     {
3906       return *reinterpret_cast<VkAcquireProfilingLockInfoKHR *>( this );
3907     }
3908 
3909 #if 14 <= VULKAN_HPP_CPP_VERSION
3910     auto
3911 #else
3912     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
3913                const void * const &,
3914                VULKAN_HPP_NAMESPACE::AcquireProfilingLockFlagsKHR const &,
3915                uint64_t const &>
3916 #endif
reflectVULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR3917       reflect() const VULKAN_HPP_NOEXCEPT
3918     {
3919       return std::tie( sType, pNext, flags, timeout );
3920     }
3921 
3922 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
3923     auto operator<=>( AcquireProfilingLockInfoKHR const & ) const = default;
3924 #else
operator ==VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR3925     bool operator==( AcquireProfilingLockInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
3926     {
3927       return this->reflect() == rhs.reflect();
3928     }
3929 
operator !=VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR3930     bool operator!=( AcquireProfilingLockInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
3931     {
3932       return this->reflect() != rhs.reflect();
3933     }
3934 #endif
3935 
3936   public:
3937     VULKAN_HPP_NAMESPACE::StructureType                sType   = StructureType::eAcquireProfilingLockInfoKHR;
3938     const void *                                       pNext   = {};
3939     VULKAN_HPP_NAMESPACE::AcquireProfilingLockFlagsKHR flags   = {};
3940     uint64_t                                           timeout = {};
3941   };
3942   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR ) ==
3943                               sizeof( VkAcquireProfilingLockInfoKHR ),
3944                             "struct and wrapper have different size!" );
3945   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR>::value,
3946                             "struct wrapper is not a standard layout!" );
3947   VULKAN_HPP_STATIC_ASSERT(
3948     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR>::value,
3949     "AcquireProfilingLockInfoKHR is not nothrow_move_constructible!" );
3950 
3951   template <>
3952   struct CppType<StructureType, StructureType::eAcquireProfilingLockInfoKHR>
3953   {
3954     using Type = AcquireProfilingLockInfoKHR;
3955   };
3956 
3957   struct AllocationCallbacks
3958   {
3959     using NativeType = VkAllocationCallbacks;
3960 
3961 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AllocationCallbacksVULKAN_HPP_NAMESPACE::AllocationCallbacks3962     VULKAN_HPP_CONSTEXPR AllocationCallbacks( void *                               pUserData_             = {},
3963                                               PFN_vkAllocationFunction             pfnAllocation_         = {},
3964                                               PFN_vkReallocationFunction           pfnReallocation_       = {},
3965                                               PFN_vkFreeFunction                   pfnFree_               = {},
3966                                               PFN_vkInternalAllocationNotification pfnInternalAllocation_ = {},
3967                                               PFN_vkInternalFreeNotification pfnInternalFree_ = {} ) VULKAN_HPP_NOEXCEPT
3968       : pUserData( pUserData_ )
3969       , pfnAllocation( pfnAllocation_ )
3970       , pfnReallocation( pfnReallocation_ )
3971       , pfnFree( pfnFree_ )
3972       , pfnInternalAllocation( pfnInternalAllocation_ )
3973       , pfnInternalFree( pfnInternalFree_ )
3974     {}
3975 
3976     VULKAN_HPP_CONSTEXPR AllocationCallbacks( AllocationCallbacks const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3977 
AllocationCallbacksVULKAN_HPP_NAMESPACE::AllocationCallbacks3978     AllocationCallbacks( VkAllocationCallbacks const & rhs ) VULKAN_HPP_NOEXCEPT
3979       : AllocationCallbacks( *reinterpret_cast<AllocationCallbacks const *>( &rhs ) )
3980     {}
3981 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
3982 
3983     AllocationCallbacks & operator=( AllocationCallbacks const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3984 
operator =VULKAN_HPP_NAMESPACE::AllocationCallbacks3985     AllocationCallbacks & operator=( VkAllocationCallbacks const & rhs ) VULKAN_HPP_NOEXCEPT
3986     {
3987       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AllocationCallbacks const *>( &rhs );
3988       return *this;
3989     }
3990 
3991 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPUserDataVULKAN_HPP_NAMESPACE::AllocationCallbacks3992     VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks & setPUserData( void * pUserData_ ) VULKAN_HPP_NOEXCEPT
3993     {
3994       pUserData = pUserData_;
3995       return *this;
3996     }
3997 
3998     VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks &
setPfnAllocationVULKAN_HPP_NAMESPACE::AllocationCallbacks3999                             setPfnAllocation( PFN_vkAllocationFunction pfnAllocation_ ) VULKAN_HPP_NOEXCEPT
4000     {
4001       pfnAllocation = pfnAllocation_;
4002       return *this;
4003     }
4004 
4005     VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks &
setPfnReallocationVULKAN_HPP_NAMESPACE::AllocationCallbacks4006                             setPfnReallocation( PFN_vkReallocationFunction pfnReallocation_ ) VULKAN_HPP_NOEXCEPT
4007     {
4008       pfnReallocation = pfnReallocation_;
4009       return *this;
4010     }
4011 
setPfnFreeVULKAN_HPP_NAMESPACE::AllocationCallbacks4012     VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks & setPfnFree( PFN_vkFreeFunction pfnFree_ ) VULKAN_HPP_NOEXCEPT
4013     {
4014       pfnFree = pfnFree_;
4015       return *this;
4016     }
4017 
4018     VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks &
setPfnInternalAllocationVULKAN_HPP_NAMESPACE::AllocationCallbacks4019       setPfnInternalAllocation( PFN_vkInternalAllocationNotification pfnInternalAllocation_ ) VULKAN_HPP_NOEXCEPT
4020     {
4021       pfnInternalAllocation = pfnInternalAllocation_;
4022       return *this;
4023     }
4024 
4025     VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks &
setPfnInternalFreeVULKAN_HPP_NAMESPACE::AllocationCallbacks4026                             setPfnInternalFree( PFN_vkInternalFreeNotification pfnInternalFree_ ) VULKAN_HPP_NOEXCEPT
4027     {
4028       pfnInternalFree = pfnInternalFree_;
4029       return *this;
4030     }
4031 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
4032 
operator VkAllocationCallbacks const&VULKAN_HPP_NAMESPACE::AllocationCallbacks4033     explicit operator VkAllocationCallbacks const &() const VULKAN_HPP_NOEXCEPT
4034     {
4035       return *reinterpret_cast<const VkAllocationCallbacks *>( this );
4036     }
4037 
operator VkAllocationCallbacks&VULKAN_HPP_NAMESPACE::AllocationCallbacks4038     explicit operator VkAllocationCallbacks &() VULKAN_HPP_NOEXCEPT
4039     {
4040       return *reinterpret_cast<VkAllocationCallbacks *>( this );
4041     }
4042 
4043 #if 14 <= VULKAN_HPP_CPP_VERSION
4044     auto
4045 #else
4046     std::tuple<void * const &,
4047                PFN_vkAllocationFunction const &,
4048                PFN_vkReallocationFunction const &,
4049                PFN_vkFreeFunction const &,
4050                PFN_vkInternalAllocationNotification const &,
4051                PFN_vkInternalFreeNotification const &>
4052 #endif
reflectVULKAN_HPP_NAMESPACE::AllocationCallbacks4053       reflect() const VULKAN_HPP_NOEXCEPT
4054     {
4055       return std::tie( pUserData, pfnAllocation, pfnReallocation, pfnFree, pfnInternalAllocation, pfnInternalFree );
4056     }
4057 
4058 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
4059     auto operator<=>( AllocationCallbacks const & ) const = default;
4060 #else
operator ==VULKAN_HPP_NAMESPACE::AllocationCallbacks4061     bool operator==( AllocationCallbacks const & rhs ) const VULKAN_HPP_NOEXCEPT
4062     {
4063       return this->reflect() == rhs.reflect();
4064     }
4065 
operator !=VULKAN_HPP_NAMESPACE::AllocationCallbacks4066     bool operator!=( AllocationCallbacks const & rhs ) const VULKAN_HPP_NOEXCEPT
4067     {
4068       return this->reflect() != rhs.reflect();
4069     }
4070 #endif
4071 
4072   public:
4073     void *                               pUserData             = {};
4074     PFN_vkAllocationFunction             pfnAllocation         = {};
4075     PFN_vkReallocationFunction           pfnReallocation       = {};
4076     PFN_vkFreeFunction                   pfnFree               = {};
4077     PFN_vkInternalAllocationNotification pfnInternalAllocation = {};
4078     PFN_vkInternalFreeNotification       pfnInternalFree       = {};
4079   };
4080   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AllocationCallbacks ) == sizeof( VkAllocationCallbacks ),
4081                             "struct and wrapper have different size!" );
4082   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::AllocationCallbacks>::value,
4083                             "struct wrapper is not a standard layout!" );
4084   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::AllocationCallbacks>::value,
4085                             "AllocationCallbacks is not nothrow_move_constructible!" );
4086 
4087   struct ComponentMapping
4088   {
4089     using NativeType = VkComponentMapping;
4090 
4091 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
4092     VULKAN_HPP_CONSTEXPR
ComponentMappingVULKAN_HPP_NAMESPACE::ComponentMapping4093       ComponentMapping( VULKAN_HPP_NAMESPACE::ComponentSwizzle r_ = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity,
4094                         VULKAN_HPP_NAMESPACE::ComponentSwizzle g_ = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity,
4095                         VULKAN_HPP_NAMESPACE::ComponentSwizzle b_ = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity,
4096                         VULKAN_HPP_NAMESPACE::ComponentSwizzle a_ = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity )
4097         VULKAN_HPP_NOEXCEPT
4098       : r( r_ )
4099       , g( g_ )
4100       , b( b_ )
4101       , a( a_ )
4102     {}
4103 
4104     VULKAN_HPP_CONSTEXPR ComponentMapping( ComponentMapping const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4105 
ComponentMappingVULKAN_HPP_NAMESPACE::ComponentMapping4106     ComponentMapping( VkComponentMapping const & rhs ) VULKAN_HPP_NOEXCEPT
4107       : ComponentMapping( *reinterpret_cast<ComponentMapping const *>( &rhs ) )
4108     {}
4109 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
4110 
4111     ComponentMapping & operator=( ComponentMapping const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4112 
operator =VULKAN_HPP_NAMESPACE::ComponentMapping4113     ComponentMapping & operator=( VkComponentMapping const & rhs ) VULKAN_HPP_NOEXCEPT
4114     {
4115       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ComponentMapping const *>( &rhs );
4116       return *this;
4117     }
4118 
4119 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setRVULKAN_HPP_NAMESPACE::ComponentMapping4120     VULKAN_HPP_CONSTEXPR_14 ComponentMapping & setR( VULKAN_HPP_NAMESPACE::ComponentSwizzle r_ ) VULKAN_HPP_NOEXCEPT
4121     {
4122       r = r_;
4123       return *this;
4124     }
4125 
setGVULKAN_HPP_NAMESPACE::ComponentMapping4126     VULKAN_HPP_CONSTEXPR_14 ComponentMapping & setG( VULKAN_HPP_NAMESPACE::ComponentSwizzle g_ ) VULKAN_HPP_NOEXCEPT
4127     {
4128       g = g_;
4129       return *this;
4130     }
4131 
setBVULKAN_HPP_NAMESPACE::ComponentMapping4132     VULKAN_HPP_CONSTEXPR_14 ComponentMapping & setB( VULKAN_HPP_NAMESPACE::ComponentSwizzle b_ ) VULKAN_HPP_NOEXCEPT
4133     {
4134       b = b_;
4135       return *this;
4136     }
4137 
setAVULKAN_HPP_NAMESPACE::ComponentMapping4138     VULKAN_HPP_CONSTEXPR_14 ComponentMapping & setA( VULKAN_HPP_NAMESPACE::ComponentSwizzle a_ ) VULKAN_HPP_NOEXCEPT
4139     {
4140       a = a_;
4141       return *this;
4142     }
4143 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
4144 
operator VkComponentMapping const&VULKAN_HPP_NAMESPACE::ComponentMapping4145     explicit operator VkComponentMapping const &() const VULKAN_HPP_NOEXCEPT
4146     {
4147       return *reinterpret_cast<const VkComponentMapping *>( this );
4148     }
4149 
operator VkComponentMapping&VULKAN_HPP_NAMESPACE::ComponentMapping4150     explicit operator VkComponentMapping &() VULKAN_HPP_NOEXCEPT
4151     {
4152       return *reinterpret_cast<VkComponentMapping *>( this );
4153     }
4154 
4155 #if 14 <= VULKAN_HPP_CPP_VERSION
4156     auto
4157 #else
4158     std::tuple<VULKAN_HPP_NAMESPACE::ComponentSwizzle const &,
4159                VULKAN_HPP_NAMESPACE::ComponentSwizzle const &,
4160                VULKAN_HPP_NAMESPACE::ComponentSwizzle const &,
4161                VULKAN_HPP_NAMESPACE::ComponentSwizzle const &>
4162 #endif
reflectVULKAN_HPP_NAMESPACE::ComponentMapping4163       reflect() const VULKAN_HPP_NOEXCEPT
4164     {
4165       return std::tie( r, g, b, a );
4166     }
4167 
4168 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
4169     auto operator<=>( ComponentMapping const & ) const = default;
4170 #else
operator ==VULKAN_HPP_NAMESPACE::ComponentMapping4171     bool operator==( ComponentMapping const & rhs ) const VULKAN_HPP_NOEXCEPT
4172     {
4173       return this->reflect() == rhs.reflect();
4174     }
4175 
operator !=VULKAN_HPP_NAMESPACE::ComponentMapping4176     bool operator!=( ComponentMapping const & rhs ) const VULKAN_HPP_NOEXCEPT
4177     {
4178       return this->reflect() != rhs.reflect();
4179     }
4180 #endif
4181 
4182   public:
4183     VULKAN_HPP_NAMESPACE::ComponentSwizzle r = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity;
4184     VULKAN_HPP_NAMESPACE::ComponentSwizzle g = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity;
4185     VULKAN_HPP_NAMESPACE::ComponentSwizzle b = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity;
4186     VULKAN_HPP_NAMESPACE::ComponentSwizzle a = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity;
4187   };
4188   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ComponentMapping ) == sizeof( VkComponentMapping ),
4189                             "struct and wrapper have different size!" );
4190   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ComponentMapping>::value,
4191                             "struct wrapper is not a standard layout!" );
4192   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ComponentMapping>::value,
4193                             "ComponentMapping is not nothrow_move_constructible!" );
4194 
4195 #if defined( VK_USE_PLATFORM_ANDROID_KHR )
4196   struct AndroidHardwareBufferFormatProperties2ANDROID
4197   {
4198     using NativeType = VkAndroidHardwareBufferFormatProperties2ANDROID;
4199 
4200     static const bool                                  allowDuplicate = false;
4201     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
4202       StructureType::eAndroidHardwareBufferFormatProperties2ANDROID;
4203 
4204 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AndroidHardwareBufferFormatProperties2ANDROIDVULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatProperties2ANDROID4205     VULKAN_HPP_CONSTEXPR AndroidHardwareBufferFormatProperties2ANDROID(
4206       VULKAN_HPP_NAMESPACE::Format                      format_         = VULKAN_HPP_NAMESPACE::Format::eUndefined,
4207       uint64_t                                          externalFormat_ = {},
4208       VULKAN_HPP_NAMESPACE::FormatFeatureFlags2KHR      formatFeatures_ = {},
4209       VULKAN_HPP_NAMESPACE::ComponentMapping            samplerYcbcrConversionComponents_ = {},
4210       VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion suggestedYcbcrModel_ =
4211         VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity,
4212       VULKAN_HPP_NAMESPACE::SamplerYcbcrRange suggestedYcbcrRange_ = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull,
4213       VULKAN_HPP_NAMESPACE::ChromaLocation suggestedXChromaOffset_ = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven,
4214       VULKAN_HPP_NAMESPACE::ChromaLocation suggestedYChromaOffset_ =
4215         VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven ) VULKAN_HPP_NOEXCEPT
4216       : format( format_ )
4217       , externalFormat( externalFormat_ )
4218       , formatFeatures( formatFeatures_ )
4219       , samplerYcbcrConversionComponents( samplerYcbcrConversionComponents_ )
4220       , suggestedYcbcrModel( suggestedYcbcrModel_ )
4221       , suggestedYcbcrRange( suggestedYcbcrRange_ )
4222       , suggestedXChromaOffset( suggestedXChromaOffset_ )
4223       , suggestedYChromaOffset( suggestedYChromaOffset_ )
4224     {}
4225 
4226     VULKAN_HPP_CONSTEXPR AndroidHardwareBufferFormatProperties2ANDROID(
4227       AndroidHardwareBufferFormatProperties2ANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4228 
AndroidHardwareBufferFormatProperties2ANDROIDVULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatProperties2ANDROID4229     AndroidHardwareBufferFormatProperties2ANDROID( VkAndroidHardwareBufferFormatProperties2ANDROID const & rhs )
4230       VULKAN_HPP_NOEXCEPT
4231       : AndroidHardwareBufferFormatProperties2ANDROID(
4232           *reinterpret_cast<AndroidHardwareBufferFormatProperties2ANDROID const *>( &rhs ) )
4233     {}
4234 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
4235 
4236     AndroidHardwareBufferFormatProperties2ANDROID &
4237       operator=( AndroidHardwareBufferFormatProperties2ANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4238 
4239     AndroidHardwareBufferFormatProperties2ANDROID &
operator =VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatProperties2ANDROID4240       operator=( VkAndroidHardwareBufferFormatProperties2ANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
4241     {
4242       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatProperties2ANDROID const *>( &rhs );
4243       return *this;
4244     }
4245 
operator VkAndroidHardwareBufferFormatProperties2ANDROID const&VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatProperties2ANDROID4246     explicit operator VkAndroidHardwareBufferFormatProperties2ANDROID const &() const VULKAN_HPP_NOEXCEPT
4247     {
4248       return *reinterpret_cast<const VkAndroidHardwareBufferFormatProperties2ANDROID *>( this );
4249     }
4250 
operator VkAndroidHardwareBufferFormatProperties2ANDROID&VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatProperties2ANDROID4251     explicit operator VkAndroidHardwareBufferFormatProperties2ANDROID &() VULKAN_HPP_NOEXCEPT
4252     {
4253       return *reinterpret_cast<VkAndroidHardwareBufferFormatProperties2ANDROID *>( this );
4254     }
4255 
4256 #  if 14 <= VULKAN_HPP_CPP_VERSION
4257     auto
4258 #  else
4259     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
4260                void * const &,
4261                VULKAN_HPP_NAMESPACE::Format const &,
4262                uint64_t const &,
4263                VULKAN_HPP_NAMESPACE::FormatFeatureFlags2KHR const &,
4264                VULKAN_HPP_NAMESPACE::ComponentMapping const &,
4265                VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion const &,
4266                VULKAN_HPP_NAMESPACE::SamplerYcbcrRange const &,
4267                VULKAN_HPP_NAMESPACE::ChromaLocation const &,
4268                VULKAN_HPP_NAMESPACE::ChromaLocation const &>
4269 #  endif
reflectVULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatProperties2ANDROID4270       reflect() const VULKAN_HPP_NOEXCEPT
4271     {
4272       return std::tie( sType,
4273                        pNext,
4274                        format,
4275                        externalFormat,
4276                        formatFeatures,
4277                        samplerYcbcrConversionComponents,
4278                        suggestedYcbcrModel,
4279                        suggestedYcbcrRange,
4280                        suggestedXChromaOffset,
4281                        suggestedYChromaOffset );
4282     }
4283 
4284 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
4285     auto operator<=>( AndroidHardwareBufferFormatProperties2ANDROID const & ) const = default;
4286 #  else
operator ==VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatProperties2ANDROID4287     bool operator==( AndroidHardwareBufferFormatProperties2ANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
4288     {
4289       return this->reflect() == rhs.reflect();
4290     }
4291 
operator !=VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatProperties2ANDROID4292     bool operator!=( AndroidHardwareBufferFormatProperties2ANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
4293     {
4294       return this->reflect() != rhs.reflect();
4295     }
4296 #  endif
4297 
4298   public:
4299     VULKAN_HPP_NAMESPACE::StructureType          sType  = StructureType::eAndroidHardwareBufferFormatProperties2ANDROID;
4300     void *                                       pNext  = {};
4301     VULKAN_HPP_NAMESPACE::Format                 format = VULKAN_HPP_NAMESPACE::Format::eUndefined;
4302     uint64_t                                     externalFormat                   = {};
4303     VULKAN_HPP_NAMESPACE::FormatFeatureFlags2KHR formatFeatures                   = {};
4304     VULKAN_HPP_NAMESPACE::ComponentMapping       samplerYcbcrConversionComponents = {};
4305     VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion suggestedYcbcrModel =
4306       VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity;
4307     VULKAN_HPP_NAMESPACE::SamplerYcbcrRange suggestedYcbcrRange    = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull;
4308     VULKAN_HPP_NAMESPACE::ChromaLocation    suggestedXChromaOffset = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven;
4309     VULKAN_HPP_NAMESPACE::ChromaLocation    suggestedYChromaOffset = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven;
4310   };
4311   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatProperties2ANDROID ) ==
4312                               sizeof( VkAndroidHardwareBufferFormatProperties2ANDROID ),
4313                             "struct and wrapper have different size!" );
4314   VULKAN_HPP_STATIC_ASSERT(
4315     std::is_standard_layout<VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatProperties2ANDROID>::value,
4316     "struct wrapper is not a standard layout!" );
4317   VULKAN_HPP_STATIC_ASSERT(
4318     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatProperties2ANDROID>::value,
4319     "AndroidHardwareBufferFormatProperties2ANDROID is not nothrow_move_constructible!" );
4320 
4321   template <>
4322   struct CppType<StructureType, StructureType::eAndroidHardwareBufferFormatProperties2ANDROID>
4323   {
4324     using Type = AndroidHardwareBufferFormatProperties2ANDROID;
4325   };
4326 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
4327 
4328 #if defined( VK_USE_PLATFORM_ANDROID_KHR )
4329   struct AndroidHardwareBufferFormatPropertiesANDROID
4330   {
4331     using NativeType = VkAndroidHardwareBufferFormatPropertiesANDROID;
4332 
4333     static const bool                                  allowDuplicate = false;
4334     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
4335       StructureType::eAndroidHardwareBufferFormatPropertiesANDROID;
4336 
4337 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AndroidHardwareBufferFormatPropertiesANDROIDVULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatPropertiesANDROID4338     VULKAN_HPP_CONSTEXPR AndroidHardwareBufferFormatPropertiesANDROID(
4339       VULKAN_HPP_NAMESPACE::Format                      format_         = VULKAN_HPP_NAMESPACE::Format::eUndefined,
4340       uint64_t                                          externalFormat_ = {},
4341       VULKAN_HPP_NAMESPACE::FormatFeatureFlags          formatFeatures_ = {},
4342       VULKAN_HPP_NAMESPACE::ComponentMapping            samplerYcbcrConversionComponents_ = {},
4343       VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion suggestedYcbcrModel_ =
4344         VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity,
4345       VULKAN_HPP_NAMESPACE::SamplerYcbcrRange suggestedYcbcrRange_ = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull,
4346       VULKAN_HPP_NAMESPACE::ChromaLocation suggestedXChromaOffset_ = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven,
4347       VULKAN_HPP_NAMESPACE::ChromaLocation suggestedYChromaOffset_ =
4348         VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven ) VULKAN_HPP_NOEXCEPT
4349       : format( format_ )
4350       , externalFormat( externalFormat_ )
4351       , formatFeatures( formatFeatures_ )
4352       , samplerYcbcrConversionComponents( samplerYcbcrConversionComponents_ )
4353       , suggestedYcbcrModel( suggestedYcbcrModel_ )
4354       , suggestedYcbcrRange( suggestedYcbcrRange_ )
4355       , suggestedXChromaOffset( suggestedXChromaOffset_ )
4356       , suggestedYChromaOffset( suggestedYChromaOffset_ )
4357     {}
4358 
4359     VULKAN_HPP_CONSTEXPR AndroidHardwareBufferFormatPropertiesANDROID(
4360       AndroidHardwareBufferFormatPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4361 
AndroidHardwareBufferFormatPropertiesANDROIDVULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatPropertiesANDROID4362     AndroidHardwareBufferFormatPropertiesANDROID( VkAndroidHardwareBufferFormatPropertiesANDROID const & rhs )
4363       VULKAN_HPP_NOEXCEPT
4364       : AndroidHardwareBufferFormatPropertiesANDROID(
4365           *reinterpret_cast<AndroidHardwareBufferFormatPropertiesANDROID const *>( &rhs ) )
4366     {}
4367 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
4368 
4369     AndroidHardwareBufferFormatPropertiesANDROID &
4370       operator=( AndroidHardwareBufferFormatPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4371 
4372     AndroidHardwareBufferFormatPropertiesANDROID &
operator =VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatPropertiesANDROID4373       operator=( VkAndroidHardwareBufferFormatPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
4374     {
4375       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatPropertiesANDROID const *>( &rhs );
4376       return *this;
4377     }
4378 
operator VkAndroidHardwareBufferFormatPropertiesANDROID const&VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatPropertiesANDROID4379     explicit operator VkAndroidHardwareBufferFormatPropertiesANDROID const &() const VULKAN_HPP_NOEXCEPT
4380     {
4381       return *reinterpret_cast<const VkAndroidHardwareBufferFormatPropertiesANDROID *>( this );
4382     }
4383 
operator VkAndroidHardwareBufferFormatPropertiesANDROID&VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatPropertiesANDROID4384     explicit operator VkAndroidHardwareBufferFormatPropertiesANDROID &() VULKAN_HPP_NOEXCEPT
4385     {
4386       return *reinterpret_cast<VkAndroidHardwareBufferFormatPropertiesANDROID *>( this );
4387     }
4388 
4389 #  if 14 <= VULKAN_HPP_CPP_VERSION
4390     auto
4391 #  else
4392     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
4393                void * const &,
4394                VULKAN_HPP_NAMESPACE::Format const &,
4395                uint64_t const &,
4396                VULKAN_HPP_NAMESPACE::FormatFeatureFlags const &,
4397                VULKAN_HPP_NAMESPACE::ComponentMapping const &,
4398                VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion const &,
4399                VULKAN_HPP_NAMESPACE::SamplerYcbcrRange const &,
4400                VULKAN_HPP_NAMESPACE::ChromaLocation const &,
4401                VULKAN_HPP_NAMESPACE::ChromaLocation const &>
4402 #  endif
reflectVULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatPropertiesANDROID4403       reflect() const VULKAN_HPP_NOEXCEPT
4404     {
4405       return std::tie( sType,
4406                        pNext,
4407                        format,
4408                        externalFormat,
4409                        formatFeatures,
4410                        samplerYcbcrConversionComponents,
4411                        suggestedYcbcrModel,
4412                        suggestedYcbcrRange,
4413                        suggestedXChromaOffset,
4414                        suggestedYChromaOffset );
4415     }
4416 
4417 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
4418     auto operator<=>( AndroidHardwareBufferFormatPropertiesANDROID const & ) const = default;
4419 #  else
operator ==VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatPropertiesANDROID4420     bool operator==( AndroidHardwareBufferFormatPropertiesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
4421     {
4422       return this->reflect() == rhs.reflect();
4423     }
4424 
operator !=VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatPropertiesANDROID4425     bool operator!=( AndroidHardwareBufferFormatPropertiesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
4426     {
4427       return this->reflect() != rhs.reflect();
4428     }
4429 #  endif
4430 
4431   public:
4432     VULKAN_HPP_NAMESPACE::StructureType      sType  = StructureType::eAndroidHardwareBufferFormatPropertiesANDROID;
4433     void *                                   pNext  = {};
4434     VULKAN_HPP_NAMESPACE::Format             format = VULKAN_HPP_NAMESPACE::Format::eUndefined;
4435     uint64_t                                 externalFormat                   = {};
4436     VULKAN_HPP_NAMESPACE::FormatFeatureFlags formatFeatures                   = {};
4437     VULKAN_HPP_NAMESPACE::ComponentMapping   samplerYcbcrConversionComponents = {};
4438     VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion suggestedYcbcrModel =
4439       VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity;
4440     VULKAN_HPP_NAMESPACE::SamplerYcbcrRange suggestedYcbcrRange    = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull;
4441     VULKAN_HPP_NAMESPACE::ChromaLocation    suggestedXChromaOffset = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven;
4442     VULKAN_HPP_NAMESPACE::ChromaLocation    suggestedYChromaOffset = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven;
4443   };
4444   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatPropertiesANDROID ) ==
4445                               sizeof( VkAndroidHardwareBufferFormatPropertiesANDROID ),
4446                             "struct and wrapper have different size!" );
4447   VULKAN_HPP_STATIC_ASSERT(
4448     std::is_standard_layout<VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatPropertiesANDROID>::value,
4449     "struct wrapper is not a standard layout!" );
4450   VULKAN_HPP_STATIC_ASSERT(
4451     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatPropertiesANDROID>::value,
4452     "AndroidHardwareBufferFormatPropertiesANDROID is not nothrow_move_constructible!" );
4453 
4454   template <>
4455   struct CppType<StructureType, StructureType::eAndroidHardwareBufferFormatPropertiesANDROID>
4456   {
4457     using Type = AndroidHardwareBufferFormatPropertiesANDROID;
4458   };
4459 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
4460 
4461 #if defined( VK_USE_PLATFORM_ANDROID_KHR )
4462   struct AndroidHardwareBufferPropertiesANDROID
4463   {
4464     using NativeType = VkAndroidHardwareBufferPropertiesANDROID;
4465 
4466     static const bool                                  allowDuplicate = false;
4467     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
4468       StructureType::eAndroidHardwareBufferPropertiesANDROID;
4469 
4470 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AndroidHardwareBufferPropertiesANDROIDVULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID4471     VULKAN_HPP_CONSTEXPR AndroidHardwareBufferPropertiesANDROID( VULKAN_HPP_NAMESPACE::DeviceSize allocationSize_ = {},
4472                                                                  uint32_t memoryTypeBits_ = {} ) VULKAN_HPP_NOEXCEPT
4473       : allocationSize( allocationSize_ )
4474       , memoryTypeBits( memoryTypeBits_ )
4475     {}
4476 
4477     VULKAN_HPP_CONSTEXPR AndroidHardwareBufferPropertiesANDROID( AndroidHardwareBufferPropertiesANDROID const & rhs )
4478       VULKAN_HPP_NOEXCEPT = default;
4479 
AndroidHardwareBufferPropertiesANDROIDVULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID4480     AndroidHardwareBufferPropertiesANDROID( VkAndroidHardwareBufferPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
4481       : AndroidHardwareBufferPropertiesANDROID(
4482           *reinterpret_cast<AndroidHardwareBufferPropertiesANDROID const *>( &rhs ) )
4483     {}
4484 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
4485 
4486     AndroidHardwareBufferPropertiesANDROID &
4487       operator=( AndroidHardwareBufferPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4488 
4489     AndroidHardwareBufferPropertiesANDROID &
operator =VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID4490       operator=( VkAndroidHardwareBufferPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
4491     {
4492       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID const *>( &rhs );
4493       return *this;
4494     }
4495 
operator VkAndroidHardwareBufferPropertiesANDROID const&VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID4496     explicit operator VkAndroidHardwareBufferPropertiesANDROID const &() const VULKAN_HPP_NOEXCEPT
4497     {
4498       return *reinterpret_cast<const VkAndroidHardwareBufferPropertiesANDROID *>( this );
4499     }
4500 
operator VkAndroidHardwareBufferPropertiesANDROID&VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID4501     explicit operator VkAndroidHardwareBufferPropertiesANDROID &() VULKAN_HPP_NOEXCEPT
4502     {
4503       return *reinterpret_cast<VkAndroidHardwareBufferPropertiesANDROID *>( this );
4504     }
4505 
4506 #  if 14 <= VULKAN_HPP_CPP_VERSION
4507     auto
4508 #  else
4509     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
4510                void * const &,
4511                VULKAN_HPP_NAMESPACE::DeviceSize const &,
4512                uint32_t const &>
4513 #  endif
reflectVULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID4514       reflect() const VULKAN_HPP_NOEXCEPT
4515     {
4516       return std::tie( sType, pNext, allocationSize, memoryTypeBits );
4517     }
4518 
4519 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
4520     auto operator<=>( AndroidHardwareBufferPropertiesANDROID const & ) const = default;
4521 #  else
operator ==VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID4522     bool operator==( AndroidHardwareBufferPropertiesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
4523     {
4524       return this->reflect() == rhs.reflect();
4525     }
4526 
operator !=VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID4527     bool operator!=( AndroidHardwareBufferPropertiesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
4528     {
4529       return this->reflect() != rhs.reflect();
4530     }
4531 #  endif
4532 
4533   public:
4534     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eAndroidHardwareBufferPropertiesANDROID;
4535     void *                              pNext          = {};
4536     VULKAN_HPP_NAMESPACE::DeviceSize    allocationSize = {};
4537     uint32_t                            memoryTypeBits = {};
4538   };
4539   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID ) ==
4540                               sizeof( VkAndroidHardwareBufferPropertiesANDROID ),
4541                             "struct and wrapper have different size!" );
4542   VULKAN_HPP_STATIC_ASSERT(
4543     std::is_standard_layout<VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID>::value,
4544     "struct wrapper is not a standard layout!" );
4545   VULKAN_HPP_STATIC_ASSERT(
4546     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID>::value,
4547     "AndroidHardwareBufferPropertiesANDROID is not nothrow_move_constructible!" );
4548 
4549   template <>
4550   struct CppType<StructureType, StructureType::eAndroidHardwareBufferPropertiesANDROID>
4551   {
4552     using Type = AndroidHardwareBufferPropertiesANDROID;
4553   };
4554 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
4555 
4556 #if defined( VK_USE_PLATFORM_ANDROID_KHR )
4557   struct AndroidHardwareBufferUsageANDROID
4558   {
4559     using NativeType = VkAndroidHardwareBufferUsageANDROID;
4560 
4561     static const bool                                  allowDuplicate = false;
4562     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
4563       StructureType::eAndroidHardwareBufferUsageANDROID;
4564 
4565 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
4566     VULKAN_HPP_CONSTEXPR
AndroidHardwareBufferUsageANDROIDVULKAN_HPP_NAMESPACE::AndroidHardwareBufferUsageANDROID4567       AndroidHardwareBufferUsageANDROID( uint64_t androidHardwareBufferUsage_ = {} ) VULKAN_HPP_NOEXCEPT
4568       : androidHardwareBufferUsage( androidHardwareBufferUsage_ )
4569     {}
4570 
4571     VULKAN_HPP_CONSTEXPR
4572       AndroidHardwareBufferUsageANDROID( AndroidHardwareBufferUsageANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4573 
AndroidHardwareBufferUsageANDROIDVULKAN_HPP_NAMESPACE::AndroidHardwareBufferUsageANDROID4574     AndroidHardwareBufferUsageANDROID( VkAndroidHardwareBufferUsageANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
4575       : AndroidHardwareBufferUsageANDROID( *reinterpret_cast<AndroidHardwareBufferUsageANDROID const *>( &rhs ) )
4576     {}
4577 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
4578 
4579     AndroidHardwareBufferUsageANDROID &
4580       operator=( AndroidHardwareBufferUsageANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4581 
operator =VULKAN_HPP_NAMESPACE::AndroidHardwareBufferUsageANDROID4582     AndroidHardwareBufferUsageANDROID & operator=( VkAndroidHardwareBufferUsageANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
4583     {
4584       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AndroidHardwareBufferUsageANDROID const *>( &rhs );
4585       return *this;
4586     }
4587 
operator VkAndroidHardwareBufferUsageANDROID const&VULKAN_HPP_NAMESPACE::AndroidHardwareBufferUsageANDROID4588     explicit operator VkAndroidHardwareBufferUsageANDROID const &() const VULKAN_HPP_NOEXCEPT
4589     {
4590       return *reinterpret_cast<const VkAndroidHardwareBufferUsageANDROID *>( this );
4591     }
4592 
operator VkAndroidHardwareBufferUsageANDROID&VULKAN_HPP_NAMESPACE::AndroidHardwareBufferUsageANDROID4593     explicit operator VkAndroidHardwareBufferUsageANDROID &() VULKAN_HPP_NOEXCEPT
4594     {
4595       return *reinterpret_cast<VkAndroidHardwareBufferUsageANDROID *>( this );
4596     }
4597 
4598 #  if 14 <= VULKAN_HPP_CPP_VERSION
4599     auto
4600 #  else
4601     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint64_t const &>
4602 #  endif
reflectVULKAN_HPP_NAMESPACE::AndroidHardwareBufferUsageANDROID4603       reflect() const VULKAN_HPP_NOEXCEPT
4604     {
4605       return std::tie( sType, pNext, androidHardwareBufferUsage );
4606     }
4607 
4608 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
4609     auto operator<=>( AndroidHardwareBufferUsageANDROID const & ) const = default;
4610 #  else
operator ==VULKAN_HPP_NAMESPACE::AndroidHardwareBufferUsageANDROID4611     bool operator==( AndroidHardwareBufferUsageANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
4612     {
4613       return this->reflect() == rhs.reflect();
4614     }
4615 
operator !=VULKAN_HPP_NAMESPACE::AndroidHardwareBufferUsageANDROID4616     bool operator!=( AndroidHardwareBufferUsageANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
4617     {
4618       return this->reflect() != rhs.reflect();
4619     }
4620 #  endif
4621 
4622   public:
4623     VULKAN_HPP_NAMESPACE::StructureType sType                      = StructureType::eAndroidHardwareBufferUsageANDROID;
4624     void *                              pNext                      = {};
4625     uint64_t                            androidHardwareBufferUsage = {};
4626   };
4627   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AndroidHardwareBufferUsageANDROID ) ==
4628                               sizeof( VkAndroidHardwareBufferUsageANDROID ),
4629                             "struct and wrapper have different size!" );
4630   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::AndroidHardwareBufferUsageANDROID>::value,
4631                             "struct wrapper is not a standard layout!" );
4632   VULKAN_HPP_STATIC_ASSERT(
4633     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::AndroidHardwareBufferUsageANDROID>::value,
4634     "AndroidHardwareBufferUsageANDROID is not nothrow_move_constructible!" );
4635 
4636   template <>
4637   struct CppType<StructureType, StructureType::eAndroidHardwareBufferUsageANDROID>
4638   {
4639     using Type = AndroidHardwareBufferUsageANDROID;
4640   };
4641 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
4642 
4643 #if defined( VK_USE_PLATFORM_ANDROID_KHR )
4644   struct AndroidSurfaceCreateInfoKHR
4645   {
4646     using NativeType = VkAndroidSurfaceCreateInfoKHR;
4647 
4648     static const bool                                  allowDuplicate = false;
4649     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAndroidSurfaceCreateInfoKHR;
4650 
4651 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AndroidSurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR4652     VULKAN_HPP_CONSTEXPR AndroidSurfaceCreateInfoKHR( VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateFlagsKHR flags_ = {},
4653                                                       struct ANativeWindow * window_ = {} ) VULKAN_HPP_NOEXCEPT
4654       : flags( flags_ )
4655       , window( window_ )
4656     {}
4657 
4658     VULKAN_HPP_CONSTEXPR
4659       AndroidSurfaceCreateInfoKHR( AndroidSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4660 
AndroidSurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR4661     AndroidSurfaceCreateInfoKHR( VkAndroidSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
4662       : AndroidSurfaceCreateInfoKHR( *reinterpret_cast<AndroidSurfaceCreateInfoKHR const *>( &rhs ) )
4663     {}
4664 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
4665 
4666     AndroidSurfaceCreateInfoKHR & operator=( AndroidSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4667 
operator =VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR4668     AndroidSurfaceCreateInfoKHR & operator=( VkAndroidSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
4669     {
4670       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR const *>( &rhs );
4671       return *this;
4672     }
4673 
4674 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR4675     VULKAN_HPP_CONSTEXPR_14 AndroidSurfaceCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
4676     {
4677       pNext = pNext_;
4678       return *this;
4679     }
4680 
4681     VULKAN_HPP_CONSTEXPR_14 AndroidSurfaceCreateInfoKHR &
setFlagsVULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR4682                             setFlags( VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
4683     {
4684       flags = flags_;
4685       return *this;
4686     }
4687 
4688     VULKAN_HPP_CONSTEXPR_14 AndroidSurfaceCreateInfoKHR &
setWindowVULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR4689                             setWindow( struct ANativeWindow * window_ ) VULKAN_HPP_NOEXCEPT
4690     {
4691       window = window_;
4692       return *this;
4693     }
4694 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
4695 
operator VkAndroidSurfaceCreateInfoKHR const&VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR4696     explicit operator VkAndroidSurfaceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
4697     {
4698       return *reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR *>( this );
4699     }
4700 
operator VkAndroidSurfaceCreateInfoKHR&VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR4701     explicit operator VkAndroidSurfaceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
4702     {
4703       return *reinterpret_cast<VkAndroidSurfaceCreateInfoKHR *>( this );
4704     }
4705 
4706 #  if 14 <= VULKAN_HPP_CPP_VERSION
4707     auto
4708 #  else
4709     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
4710                const void * const &,
4711                VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateFlagsKHR const &,
4712                struct ANativeWindow * const &>
4713 #  endif
reflectVULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR4714       reflect() const VULKAN_HPP_NOEXCEPT
4715     {
4716       return std::tie( sType, pNext, flags, window );
4717     }
4718 
4719 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
4720     auto operator<=>( AndroidSurfaceCreateInfoKHR const & ) const = default;
4721 #  else
operator ==VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR4722     bool operator==( AndroidSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
4723     {
4724       return this->reflect() == rhs.reflect();
4725     }
4726 
operator !=VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR4727     bool operator!=( AndroidSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
4728     {
4729       return this->reflect() != rhs.reflect();
4730     }
4731 #  endif
4732 
4733   public:
4734     VULKAN_HPP_NAMESPACE::StructureType                sType  = StructureType::eAndroidSurfaceCreateInfoKHR;
4735     const void *                                       pNext  = {};
4736     VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateFlagsKHR flags  = {};
4737     struct ANativeWindow *                             window = {};
4738   };
4739   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR ) ==
4740                               sizeof( VkAndroidSurfaceCreateInfoKHR ),
4741                             "struct and wrapper have different size!" );
4742   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR>::value,
4743                             "struct wrapper is not a standard layout!" );
4744   VULKAN_HPP_STATIC_ASSERT(
4745     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR>::value,
4746     "AndroidSurfaceCreateInfoKHR is not nothrow_move_constructible!" );
4747 
4748   template <>
4749   struct CppType<StructureType, StructureType::eAndroidSurfaceCreateInfoKHR>
4750   {
4751     using Type = AndroidSurfaceCreateInfoKHR;
4752   };
4753 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
4754 
4755   struct ApplicationInfo
4756   {
4757     using NativeType = VkApplicationInfo;
4758 
4759     static const bool                                  allowDuplicate = false;
4760     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eApplicationInfo;
4761 
4762 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ApplicationInfoVULKAN_HPP_NAMESPACE::ApplicationInfo4763     VULKAN_HPP_CONSTEXPR ApplicationInfo( const char * pApplicationName_   = {},
4764                                           uint32_t     applicationVersion_ = {},
4765                                           const char * pEngineName_        = {},
4766                                           uint32_t     engineVersion_      = {},
4767                                           uint32_t     apiVersion_         = {} ) VULKAN_HPP_NOEXCEPT
4768       : pApplicationName( pApplicationName_ )
4769       , applicationVersion( applicationVersion_ )
4770       , pEngineName( pEngineName_ )
4771       , engineVersion( engineVersion_ )
4772       , apiVersion( apiVersion_ )
4773     {}
4774 
4775     VULKAN_HPP_CONSTEXPR ApplicationInfo( ApplicationInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4776 
ApplicationInfoVULKAN_HPP_NAMESPACE::ApplicationInfo4777     ApplicationInfo( VkApplicationInfo const & rhs ) VULKAN_HPP_NOEXCEPT
4778       : ApplicationInfo( *reinterpret_cast<ApplicationInfo const *>( &rhs ) )
4779     {}
4780 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
4781 
4782     ApplicationInfo & operator=( ApplicationInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4783 
operator =VULKAN_HPP_NAMESPACE::ApplicationInfo4784     ApplicationInfo & operator=( VkApplicationInfo const & rhs ) VULKAN_HPP_NOEXCEPT
4785     {
4786       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ApplicationInfo const *>( &rhs );
4787       return *this;
4788     }
4789 
4790 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ApplicationInfo4791     VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
4792     {
4793       pNext = pNext_;
4794       return *this;
4795     }
4796 
setPApplicationNameVULKAN_HPP_NAMESPACE::ApplicationInfo4797     VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & setPApplicationName( const char * pApplicationName_ ) VULKAN_HPP_NOEXCEPT
4798     {
4799       pApplicationName = pApplicationName_;
4800       return *this;
4801     }
4802 
setApplicationVersionVULKAN_HPP_NAMESPACE::ApplicationInfo4803     VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & setApplicationVersion( uint32_t applicationVersion_ ) VULKAN_HPP_NOEXCEPT
4804     {
4805       applicationVersion = applicationVersion_;
4806       return *this;
4807     }
4808 
setPEngineNameVULKAN_HPP_NAMESPACE::ApplicationInfo4809     VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & setPEngineName( const char * pEngineName_ ) VULKAN_HPP_NOEXCEPT
4810     {
4811       pEngineName = pEngineName_;
4812       return *this;
4813     }
4814 
setEngineVersionVULKAN_HPP_NAMESPACE::ApplicationInfo4815     VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & setEngineVersion( uint32_t engineVersion_ ) VULKAN_HPP_NOEXCEPT
4816     {
4817       engineVersion = engineVersion_;
4818       return *this;
4819     }
4820 
setApiVersionVULKAN_HPP_NAMESPACE::ApplicationInfo4821     VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & setApiVersion( uint32_t apiVersion_ ) VULKAN_HPP_NOEXCEPT
4822     {
4823       apiVersion = apiVersion_;
4824       return *this;
4825     }
4826 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
4827 
operator VkApplicationInfo const&VULKAN_HPP_NAMESPACE::ApplicationInfo4828     explicit operator VkApplicationInfo const &() const VULKAN_HPP_NOEXCEPT
4829     {
4830       return *reinterpret_cast<const VkApplicationInfo *>( this );
4831     }
4832 
operator VkApplicationInfo&VULKAN_HPP_NAMESPACE::ApplicationInfo4833     explicit operator VkApplicationInfo &() VULKAN_HPP_NOEXCEPT
4834     {
4835       return *reinterpret_cast<VkApplicationInfo *>( this );
4836     }
4837 
4838 #if 14 <= VULKAN_HPP_CPP_VERSION
4839     auto
4840 #else
4841     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
4842                const void * const &,
4843                const char * const &,
4844                uint32_t const &,
4845                const char * const &,
4846                uint32_t const &,
4847                uint32_t const &>
4848 #endif
reflectVULKAN_HPP_NAMESPACE::ApplicationInfo4849       reflect() const VULKAN_HPP_NOEXCEPT
4850     {
4851       return std::tie( sType, pNext, pApplicationName, applicationVersion, pEngineName, engineVersion, apiVersion );
4852     }
4853 
4854 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
4855     auto operator<=>( ApplicationInfo const & ) const = default;
4856 #else
operator ==VULKAN_HPP_NAMESPACE::ApplicationInfo4857     bool operator==( ApplicationInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
4858     {
4859       return this->reflect() == rhs.reflect();
4860     }
4861 
operator !=VULKAN_HPP_NAMESPACE::ApplicationInfo4862     bool operator!=( ApplicationInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
4863     {
4864       return this->reflect() != rhs.reflect();
4865     }
4866 #endif
4867 
4868   public:
4869     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::eApplicationInfo;
4870     const void *                        pNext              = {};
4871     const char *                        pApplicationName   = {};
4872     uint32_t                            applicationVersion = {};
4873     const char *                        pEngineName        = {};
4874     uint32_t                            engineVersion      = {};
4875     uint32_t                            apiVersion         = {};
4876   };
4877   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ApplicationInfo ) == sizeof( VkApplicationInfo ),
4878                             "struct and wrapper have different size!" );
4879   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ApplicationInfo>::value,
4880                             "struct wrapper is not a standard layout!" );
4881   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ApplicationInfo>::value,
4882                             "ApplicationInfo is not nothrow_move_constructible!" );
4883 
4884   template <>
4885   struct CppType<StructureType, StructureType::eApplicationInfo>
4886   {
4887     using Type = ApplicationInfo;
4888   };
4889 
4890   struct AttachmentDescription
4891   {
4892     using NativeType = VkAttachmentDescription;
4893 
4894 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AttachmentDescriptionVULKAN_HPP_NAMESPACE::AttachmentDescription4895     VULKAN_HPP_CONSTEXPR AttachmentDescription(
4896       VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags_         = {},
4897       VULKAN_HPP_NAMESPACE::Format                     format_        = VULKAN_HPP_NAMESPACE::Format::eUndefined,
4898       VULKAN_HPP_NAMESPACE::SampleCountFlagBits        samples_       = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1,
4899       VULKAN_HPP_NAMESPACE::AttachmentLoadOp           loadOp_        = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad,
4900       VULKAN_HPP_NAMESPACE::AttachmentStoreOp          storeOp_       = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore,
4901       VULKAN_HPP_NAMESPACE::AttachmentLoadOp           stencilLoadOp_ = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad,
4902       VULKAN_HPP_NAMESPACE::AttachmentStoreOp stencilStoreOp_         = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore,
4903       VULKAN_HPP_NAMESPACE::ImageLayout       initialLayout_          = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
4904       VULKAN_HPP_NAMESPACE::ImageLayout       finalLayout_            = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined )
4905       VULKAN_HPP_NOEXCEPT
4906       : flags( flags_ )
4907       , format( format_ )
4908       , samples( samples_ )
4909       , loadOp( loadOp_ )
4910       , storeOp( storeOp_ )
4911       , stencilLoadOp( stencilLoadOp_ )
4912       , stencilStoreOp( stencilStoreOp_ )
4913       , initialLayout( initialLayout_ )
4914       , finalLayout( finalLayout_ )
4915     {}
4916 
4917     VULKAN_HPP_CONSTEXPR AttachmentDescription( AttachmentDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4918 
AttachmentDescriptionVULKAN_HPP_NAMESPACE::AttachmentDescription4919     AttachmentDescription( VkAttachmentDescription const & rhs ) VULKAN_HPP_NOEXCEPT
4920       : AttachmentDescription( *reinterpret_cast<AttachmentDescription const *>( &rhs ) )
4921     {}
4922 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
4923 
4924     AttachmentDescription & operator=( AttachmentDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4925 
operator =VULKAN_HPP_NAMESPACE::AttachmentDescription4926     AttachmentDescription & operator=( VkAttachmentDescription const & rhs ) VULKAN_HPP_NOEXCEPT
4927     {
4928       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentDescription const *>( &rhs );
4929       return *this;
4930     }
4931 
4932 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
4933     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription &
setFlagsVULKAN_HPP_NAMESPACE::AttachmentDescription4934                             setFlags( VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags_ ) VULKAN_HPP_NOEXCEPT
4935     {
4936       flags = flags_;
4937       return *this;
4938     }
4939 
4940     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription &
setFormatVULKAN_HPP_NAMESPACE::AttachmentDescription4941                             setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
4942     {
4943       format = format_;
4944       return *this;
4945     }
4946 
4947     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription &
setSamplesVULKAN_HPP_NAMESPACE::AttachmentDescription4948                             setSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_ ) VULKAN_HPP_NOEXCEPT
4949     {
4950       samples = samples_;
4951       return *this;
4952     }
4953 
4954     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription &
setLoadOpVULKAN_HPP_NAMESPACE::AttachmentDescription4955                             setLoadOp( VULKAN_HPP_NAMESPACE::AttachmentLoadOp loadOp_ ) VULKAN_HPP_NOEXCEPT
4956     {
4957       loadOp = loadOp_;
4958       return *this;
4959     }
4960 
4961     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription &
setStoreOpVULKAN_HPP_NAMESPACE::AttachmentDescription4962                             setStoreOp( VULKAN_HPP_NAMESPACE::AttachmentStoreOp storeOp_ ) VULKAN_HPP_NOEXCEPT
4963     {
4964       storeOp = storeOp_;
4965       return *this;
4966     }
4967 
4968     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription &
setStencilLoadOpVULKAN_HPP_NAMESPACE::AttachmentDescription4969       setStencilLoadOp( VULKAN_HPP_NAMESPACE::AttachmentLoadOp stencilLoadOp_ ) VULKAN_HPP_NOEXCEPT
4970     {
4971       stencilLoadOp = stencilLoadOp_;
4972       return *this;
4973     }
4974 
4975     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription &
setStencilStoreOpVULKAN_HPP_NAMESPACE::AttachmentDescription4976       setStencilStoreOp( VULKAN_HPP_NAMESPACE::AttachmentStoreOp stencilStoreOp_ ) VULKAN_HPP_NOEXCEPT
4977     {
4978       stencilStoreOp = stencilStoreOp_;
4979       return *this;
4980     }
4981 
4982     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription &
setInitialLayoutVULKAN_HPP_NAMESPACE::AttachmentDescription4983                             setInitialLayout( VULKAN_HPP_NAMESPACE::ImageLayout initialLayout_ ) VULKAN_HPP_NOEXCEPT
4984     {
4985       initialLayout = initialLayout_;
4986       return *this;
4987     }
4988 
4989     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription &
setFinalLayoutVULKAN_HPP_NAMESPACE::AttachmentDescription4990                             setFinalLayout( VULKAN_HPP_NAMESPACE::ImageLayout finalLayout_ ) VULKAN_HPP_NOEXCEPT
4991     {
4992       finalLayout = finalLayout_;
4993       return *this;
4994     }
4995 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
4996 
operator VkAttachmentDescription const&VULKAN_HPP_NAMESPACE::AttachmentDescription4997     explicit operator VkAttachmentDescription const &() const VULKAN_HPP_NOEXCEPT
4998     {
4999       return *reinterpret_cast<const VkAttachmentDescription *>( this );
5000     }
5001 
operator VkAttachmentDescription&VULKAN_HPP_NAMESPACE::AttachmentDescription5002     explicit operator VkAttachmentDescription &() VULKAN_HPP_NOEXCEPT
5003     {
5004       return *reinterpret_cast<VkAttachmentDescription *>( this );
5005     }
5006 
5007 #if 14 <= VULKAN_HPP_CPP_VERSION
5008     auto
5009 #else
5010     std::tuple<VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags const &,
5011                VULKAN_HPP_NAMESPACE::Format const &,
5012                VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &,
5013                VULKAN_HPP_NAMESPACE::AttachmentLoadOp const &,
5014                VULKAN_HPP_NAMESPACE::AttachmentStoreOp const &,
5015                VULKAN_HPP_NAMESPACE::AttachmentLoadOp const &,
5016                VULKAN_HPP_NAMESPACE::AttachmentStoreOp const &,
5017                VULKAN_HPP_NAMESPACE::ImageLayout const &,
5018                VULKAN_HPP_NAMESPACE::ImageLayout const &>
5019 #endif
reflectVULKAN_HPP_NAMESPACE::AttachmentDescription5020       reflect() const VULKAN_HPP_NOEXCEPT
5021     {
5022       return std::tie(
5023         flags, format, samples, loadOp, storeOp, stencilLoadOp, stencilStoreOp, initialLayout, finalLayout );
5024     }
5025 
5026 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
5027     auto operator<=>( AttachmentDescription const & ) const = default;
5028 #else
operator ==VULKAN_HPP_NAMESPACE::AttachmentDescription5029     bool operator==( AttachmentDescription const & rhs ) const VULKAN_HPP_NOEXCEPT
5030     {
5031       return this->reflect() == rhs.reflect();
5032     }
5033 
operator !=VULKAN_HPP_NAMESPACE::AttachmentDescription5034     bool operator!=( AttachmentDescription const & rhs ) const VULKAN_HPP_NOEXCEPT
5035     {
5036       return this->reflect() != rhs.reflect();
5037     }
5038 #endif
5039 
5040   public:
5041     VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags          = {};
5042     VULKAN_HPP_NAMESPACE::Format                     format         = VULKAN_HPP_NAMESPACE::Format::eUndefined;
5043     VULKAN_HPP_NAMESPACE::SampleCountFlagBits        samples        = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
5044     VULKAN_HPP_NAMESPACE::AttachmentLoadOp           loadOp         = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad;
5045     VULKAN_HPP_NAMESPACE::AttachmentStoreOp          storeOp        = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore;
5046     VULKAN_HPP_NAMESPACE::AttachmentLoadOp           stencilLoadOp  = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad;
5047     VULKAN_HPP_NAMESPACE::AttachmentStoreOp          stencilStoreOp = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore;
5048     VULKAN_HPP_NAMESPACE::ImageLayout                initialLayout  = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
5049     VULKAN_HPP_NAMESPACE::ImageLayout                finalLayout    = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
5050   };
5051   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AttachmentDescription ) == sizeof( VkAttachmentDescription ),
5052                             "struct and wrapper have different size!" );
5053   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::AttachmentDescription>::value,
5054                             "struct wrapper is not a standard layout!" );
5055   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::AttachmentDescription>::value,
5056                             "AttachmentDescription is not nothrow_move_constructible!" );
5057 
5058   struct AttachmentDescription2
5059   {
5060     using NativeType = VkAttachmentDescription2;
5061 
5062     static const bool                                  allowDuplicate = false;
5063     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAttachmentDescription2;
5064 
5065 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AttachmentDescription2VULKAN_HPP_NAMESPACE::AttachmentDescription25066     VULKAN_HPP_CONSTEXPR AttachmentDescription2(
5067       VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags_         = {},
5068       VULKAN_HPP_NAMESPACE::Format                     format_        = VULKAN_HPP_NAMESPACE::Format::eUndefined,
5069       VULKAN_HPP_NAMESPACE::SampleCountFlagBits        samples_       = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1,
5070       VULKAN_HPP_NAMESPACE::AttachmentLoadOp           loadOp_        = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad,
5071       VULKAN_HPP_NAMESPACE::AttachmentStoreOp          storeOp_       = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore,
5072       VULKAN_HPP_NAMESPACE::AttachmentLoadOp           stencilLoadOp_ = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad,
5073       VULKAN_HPP_NAMESPACE::AttachmentStoreOp stencilStoreOp_         = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore,
5074       VULKAN_HPP_NAMESPACE::ImageLayout       initialLayout_          = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
5075       VULKAN_HPP_NAMESPACE::ImageLayout       finalLayout_            = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined )
5076       VULKAN_HPP_NOEXCEPT
5077       : flags( flags_ )
5078       , format( format_ )
5079       , samples( samples_ )
5080       , loadOp( loadOp_ )
5081       , storeOp( storeOp_ )
5082       , stencilLoadOp( stencilLoadOp_ )
5083       , stencilStoreOp( stencilStoreOp_ )
5084       , initialLayout( initialLayout_ )
5085       , finalLayout( finalLayout_ )
5086     {}
5087 
5088     VULKAN_HPP_CONSTEXPR AttachmentDescription2( AttachmentDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5089 
AttachmentDescription2VULKAN_HPP_NAMESPACE::AttachmentDescription25090     AttachmentDescription2( VkAttachmentDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT
5091       : AttachmentDescription2( *reinterpret_cast<AttachmentDescription2 const *>( &rhs ) )
5092     {}
5093 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
5094 
5095     AttachmentDescription2 & operator=( AttachmentDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5096 
operator =VULKAN_HPP_NAMESPACE::AttachmentDescription25097     AttachmentDescription2 & operator=( VkAttachmentDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT
5098     {
5099       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentDescription2 const *>( &rhs );
5100       return *this;
5101     }
5102 
5103 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AttachmentDescription25104     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
5105     {
5106       pNext = pNext_;
5107       return *this;
5108     }
5109 
5110     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 &
setFlagsVULKAN_HPP_NAMESPACE::AttachmentDescription25111                             setFlags( VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags_ ) VULKAN_HPP_NOEXCEPT
5112     {
5113       flags = flags_;
5114       return *this;
5115     }
5116 
5117     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 &
setFormatVULKAN_HPP_NAMESPACE::AttachmentDescription25118                             setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
5119     {
5120       format = format_;
5121       return *this;
5122     }
5123 
5124     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 &
setSamplesVULKAN_HPP_NAMESPACE::AttachmentDescription25125                             setSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_ ) VULKAN_HPP_NOEXCEPT
5126     {
5127       samples = samples_;
5128       return *this;
5129     }
5130 
5131     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 &
setLoadOpVULKAN_HPP_NAMESPACE::AttachmentDescription25132                             setLoadOp( VULKAN_HPP_NAMESPACE::AttachmentLoadOp loadOp_ ) VULKAN_HPP_NOEXCEPT
5133     {
5134       loadOp = loadOp_;
5135       return *this;
5136     }
5137 
5138     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 &
setStoreOpVULKAN_HPP_NAMESPACE::AttachmentDescription25139                             setStoreOp( VULKAN_HPP_NAMESPACE::AttachmentStoreOp storeOp_ ) VULKAN_HPP_NOEXCEPT
5140     {
5141       storeOp = storeOp_;
5142       return *this;
5143     }
5144 
5145     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 &
setStencilLoadOpVULKAN_HPP_NAMESPACE::AttachmentDescription25146       setStencilLoadOp( VULKAN_HPP_NAMESPACE::AttachmentLoadOp stencilLoadOp_ ) VULKAN_HPP_NOEXCEPT
5147     {
5148       stencilLoadOp = stencilLoadOp_;
5149       return *this;
5150     }
5151 
5152     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 &
setStencilStoreOpVULKAN_HPP_NAMESPACE::AttachmentDescription25153       setStencilStoreOp( VULKAN_HPP_NAMESPACE::AttachmentStoreOp stencilStoreOp_ ) VULKAN_HPP_NOEXCEPT
5154     {
5155       stencilStoreOp = stencilStoreOp_;
5156       return *this;
5157     }
5158 
5159     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 &
setInitialLayoutVULKAN_HPP_NAMESPACE::AttachmentDescription25160                             setInitialLayout( VULKAN_HPP_NAMESPACE::ImageLayout initialLayout_ ) VULKAN_HPP_NOEXCEPT
5161     {
5162       initialLayout = initialLayout_;
5163       return *this;
5164     }
5165 
5166     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 &
setFinalLayoutVULKAN_HPP_NAMESPACE::AttachmentDescription25167                             setFinalLayout( VULKAN_HPP_NAMESPACE::ImageLayout finalLayout_ ) VULKAN_HPP_NOEXCEPT
5168     {
5169       finalLayout = finalLayout_;
5170       return *this;
5171     }
5172 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
5173 
operator VkAttachmentDescription2 const&VULKAN_HPP_NAMESPACE::AttachmentDescription25174     explicit operator VkAttachmentDescription2 const &() const VULKAN_HPP_NOEXCEPT
5175     {
5176       return *reinterpret_cast<const VkAttachmentDescription2 *>( this );
5177     }
5178 
operator VkAttachmentDescription2&VULKAN_HPP_NAMESPACE::AttachmentDescription25179     explicit operator VkAttachmentDescription2 &() VULKAN_HPP_NOEXCEPT
5180     {
5181       return *reinterpret_cast<VkAttachmentDescription2 *>( this );
5182     }
5183 
5184 #if 14 <= VULKAN_HPP_CPP_VERSION
5185     auto
5186 #else
5187     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
5188                const void * const &,
5189                VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags const &,
5190                VULKAN_HPP_NAMESPACE::Format const &,
5191                VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &,
5192                VULKAN_HPP_NAMESPACE::AttachmentLoadOp const &,
5193                VULKAN_HPP_NAMESPACE::AttachmentStoreOp const &,
5194                VULKAN_HPP_NAMESPACE::AttachmentLoadOp const &,
5195                VULKAN_HPP_NAMESPACE::AttachmentStoreOp const &,
5196                VULKAN_HPP_NAMESPACE::ImageLayout const &,
5197                VULKAN_HPP_NAMESPACE::ImageLayout const &>
5198 #endif
reflectVULKAN_HPP_NAMESPACE::AttachmentDescription25199       reflect() const VULKAN_HPP_NOEXCEPT
5200     {
5201       return std::tie( sType,
5202                        pNext,
5203                        flags,
5204                        format,
5205                        samples,
5206                        loadOp,
5207                        storeOp,
5208                        stencilLoadOp,
5209                        stencilStoreOp,
5210                        initialLayout,
5211                        finalLayout );
5212     }
5213 
5214 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
5215     auto operator<=>( AttachmentDescription2 const & ) const = default;
5216 #else
operator ==VULKAN_HPP_NAMESPACE::AttachmentDescription25217     bool operator==( AttachmentDescription2 const & rhs ) const VULKAN_HPP_NOEXCEPT
5218     {
5219       return this->reflect() == rhs.reflect();
5220     }
5221 
operator !=VULKAN_HPP_NAMESPACE::AttachmentDescription25222     bool operator!=( AttachmentDescription2 const & rhs ) const VULKAN_HPP_NOEXCEPT
5223     {
5224       return this->reflect() != rhs.reflect();
5225     }
5226 #endif
5227 
5228   public:
5229     VULKAN_HPP_NAMESPACE::StructureType              sType          = StructureType::eAttachmentDescription2;
5230     const void *                                     pNext          = {};
5231     VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags          = {};
5232     VULKAN_HPP_NAMESPACE::Format                     format         = VULKAN_HPP_NAMESPACE::Format::eUndefined;
5233     VULKAN_HPP_NAMESPACE::SampleCountFlagBits        samples        = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
5234     VULKAN_HPP_NAMESPACE::AttachmentLoadOp           loadOp         = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad;
5235     VULKAN_HPP_NAMESPACE::AttachmentStoreOp          storeOp        = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore;
5236     VULKAN_HPP_NAMESPACE::AttachmentLoadOp           stencilLoadOp  = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad;
5237     VULKAN_HPP_NAMESPACE::AttachmentStoreOp          stencilStoreOp = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore;
5238     VULKAN_HPP_NAMESPACE::ImageLayout                initialLayout  = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
5239     VULKAN_HPP_NAMESPACE::ImageLayout                finalLayout    = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
5240   };
5241   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AttachmentDescription2 ) ==
5242                               sizeof( VkAttachmentDescription2 ),
5243                             "struct and wrapper have different size!" );
5244   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::AttachmentDescription2>::value,
5245                             "struct wrapper is not a standard layout!" );
5246   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::AttachmentDescription2>::value,
5247                             "AttachmentDescription2 is not nothrow_move_constructible!" );
5248 
5249   template <>
5250   struct CppType<StructureType, StructureType::eAttachmentDescription2>
5251   {
5252     using Type = AttachmentDescription2;
5253   };
5254   using AttachmentDescription2KHR = AttachmentDescription2;
5255 
5256   struct AttachmentDescriptionStencilLayout
5257   {
5258     using NativeType = VkAttachmentDescriptionStencilLayout;
5259 
5260     static const bool                                  allowDuplicate = false;
5261     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
5262       StructureType::eAttachmentDescriptionStencilLayout;
5263 
5264 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AttachmentDescriptionStencilLayoutVULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout5265     VULKAN_HPP_CONSTEXPR AttachmentDescriptionStencilLayout(
5266       VULKAN_HPP_NAMESPACE::ImageLayout stencilInitialLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
5267       VULKAN_HPP_NAMESPACE::ImageLayout stencilFinalLayout_   = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined )
5268       VULKAN_HPP_NOEXCEPT
5269       : stencilInitialLayout( stencilInitialLayout_ )
5270       , stencilFinalLayout( stencilFinalLayout_ )
5271     {}
5272 
5273     VULKAN_HPP_CONSTEXPR AttachmentDescriptionStencilLayout( AttachmentDescriptionStencilLayout const & rhs )
5274       VULKAN_HPP_NOEXCEPT = default;
5275 
AttachmentDescriptionStencilLayoutVULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout5276     AttachmentDescriptionStencilLayout( VkAttachmentDescriptionStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT
5277       : AttachmentDescriptionStencilLayout( *reinterpret_cast<AttachmentDescriptionStencilLayout const *>( &rhs ) )
5278     {}
5279 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
5280 
5281     AttachmentDescriptionStencilLayout &
5282       operator=( AttachmentDescriptionStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5283 
5284     AttachmentDescriptionStencilLayout &
operator =VULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout5285       operator=( VkAttachmentDescriptionStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT
5286     {
5287       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout const *>( &rhs );
5288       return *this;
5289     }
5290 
5291 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout5292     VULKAN_HPP_CONSTEXPR_14 AttachmentDescriptionStencilLayout & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
5293     {
5294       pNext = pNext_;
5295       return *this;
5296     }
5297 
5298     VULKAN_HPP_CONSTEXPR_14 AttachmentDescriptionStencilLayout &
setStencilInitialLayoutVULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout5299       setStencilInitialLayout( VULKAN_HPP_NAMESPACE::ImageLayout stencilInitialLayout_ ) VULKAN_HPP_NOEXCEPT
5300     {
5301       stencilInitialLayout = stencilInitialLayout_;
5302       return *this;
5303     }
5304 
5305     VULKAN_HPP_CONSTEXPR_14 AttachmentDescriptionStencilLayout &
setStencilFinalLayoutVULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout5306       setStencilFinalLayout( VULKAN_HPP_NAMESPACE::ImageLayout stencilFinalLayout_ ) VULKAN_HPP_NOEXCEPT
5307     {
5308       stencilFinalLayout = stencilFinalLayout_;
5309       return *this;
5310     }
5311 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
5312 
operator VkAttachmentDescriptionStencilLayout const&VULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout5313     explicit operator VkAttachmentDescriptionStencilLayout const &() const VULKAN_HPP_NOEXCEPT
5314     {
5315       return *reinterpret_cast<const VkAttachmentDescriptionStencilLayout *>( this );
5316     }
5317 
operator VkAttachmentDescriptionStencilLayout&VULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout5318     explicit operator VkAttachmentDescriptionStencilLayout &() VULKAN_HPP_NOEXCEPT
5319     {
5320       return *reinterpret_cast<VkAttachmentDescriptionStencilLayout *>( this );
5321     }
5322 
5323 #if 14 <= VULKAN_HPP_CPP_VERSION
5324     auto
5325 #else
5326     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
5327                void * const &,
5328                VULKAN_HPP_NAMESPACE::ImageLayout const &,
5329                VULKAN_HPP_NAMESPACE::ImageLayout const &>
5330 #endif
reflectVULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout5331       reflect() const VULKAN_HPP_NOEXCEPT
5332     {
5333       return std::tie( sType, pNext, stencilInitialLayout, stencilFinalLayout );
5334     }
5335 
5336 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
5337     auto operator<=>( AttachmentDescriptionStencilLayout const & ) const = default;
5338 #else
operator ==VULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout5339     bool operator==( AttachmentDescriptionStencilLayout const & rhs ) const VULKAN_HPP_NOEXCEPT
5340     {
5341       return this->reflect() == rhs.reflect();
5342     }
5343 
operator !=VULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout5344     bool operator!=( AttachmentDescriptionStencilLayout const & rhs ) const VULKAN_HPP_NOEXCEPT
5345     {
5346       return this->reflect() != rhs.reflect();
5347     }
5348 #endif
5349 
5350   public:
5351     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::eAttachmentDescriptionStencilLayout;
5352     void *                              pNext                = {};
5353     VULKAN_HPP_NAMESPACE::ImageLayout   stencilInitialLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
5354     VULKAN_HPP_NAMESPACE::ImageLayout   stencilFinalLayout   = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
5355   };
5356   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout ) ==
5357                               sizeof( VkAttachmentDescriptionStencilLayout ),
5358                             "struct and wrapper have different size!" );
5359   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout>::value,
5360                             "struct wrapper is not a standard layout!" );
5361   VULKAN_HPP_STATIC_ASSERT(
5362     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout>::value,
5363     "AttachmentDescriptionStencilLayout is not nothrow_move_constructible!" );
5364 
5365   template <>
5366   struct CppType<StructureType, StructureType::eAttachmentDescriptionStencilLayout>
5367   {
5368     using Type = AttachmentDescriptionStencilLayout;
5369   };
5370   using AttachmentDescriptionStencilLayoutKHR = AttachmentDescriptionStencilLayout;
5371 
5372   struct AttachmentReference
5373   {
5374     using NativeType = VkAttachmentReference;
5375 
5376 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AttachmentReferenceVULKAN_HPP_NAMESPACE::AttachmentReference5377     VULKAN_HPP_CONSTEXPR AttachmentReference(
5378       uint32_t                          attachment_ = {},
5379       VULKAN_HPP_NAMESPACE::ImageLayout layout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined ) VULKAN_HPP_NOEXCEPT
5380       : attachment( attachment_ )
5381       , layout( layout_ )
5382     {}
5383 
5384     VULKAN_HPP_CONSTEXPR AttachmentReference( AttachmentReference const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5385 
AttachmentReferenceVULKAN_HPP_NAMESPACE::AttachmentReference5386     AttachmentReference( VkAttachmentReference const & rhs ) VULKAN_HPP_NOEXCEPT
5387       : AttachmentReference( *reinterpret_cast<AttachmentReference const *>( &rhs ) )
5388     {}
5389 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
5390 
5391     AttachmentReference & operator=( AttachmentReference const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5392 
operator =VULKAN_HPP_NAMESPACE::AttachmentReference5393     AttachmentReference & operator=( VkAttachmentReference const & rhs ) VULKAN_HPP_NOEXCEPT
5394     {
5395       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentReference const *>( &rhs );
5396       return *this;
5397     }
5398 
5399 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setAttachmentVULKAN_HPP_NAMESPACE::AttachmentReference5400     VULKAN_HPP_CONSTEXPR_14 AttachmentReference & setAttachment( uint32_t attachment_ ) VULKAN_HPP_NOEXCEPT
5401     {
5402       attachment = attachment_;
5403       return *this;
5404     }
5405 
5406     VULKAN_HPP_CONSTEXPR_14 AttachmentReference &
setLayoutVULKAN_HPP_NAMESPACE::AttachmentReference5407                             setLayout( VULKAN_HPP_NAMESPACE::ImageLayout layout_ ) VULKAN_HPP_NOEXCEPT
5408     {
5409       layout = layout_;
5410       return *this;
5411     }
5412 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
5413 
operator VkAttachmentReference const&VULKAN_HPP_NAMESPACE::AttachmentReference5414     explicit operator VkAttachmentReference const &() const VULKAN_HPP_NOEXCEPT
5415     {
5416       return *reinterpret_cast<const VkAttachmentReference *>( this );
5417     }
5418 
operator VkAttachmentReference&VULKAN_HPP_NAMESPACE::AttachmentReference5419     explicit operator VkAttachmentReference &() VULKAN_HPP_NOEXCEPT
5420     {
5421       return *reinterpret_cast<VkAttachmentReference *>( this );
5422     }
5423 
5424 #if 14 <= VULKAN_HPP_CPP_VERSION
5425     auto
5426 #else
5427     std::tuple<uint32_t const &, VULKAN_HPP_NAMESPACE::ImageLayout const &>
5428 #endif
reflectVULKAN_HPP_NAMESPACE::AttachmentReference5429       reflect() const VULKAN_HPP_NOEXCEPT
5430     {
5431       return std::tie( attachment, layout );
5432     }
5433 
5434 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
5435     auto operator<=>( AttachmentReference const & ) const = default;
5436 #else
operator ==VULKAN_HPP_NAMESPACE::AttachmentReference5437     bool operator==( AttachmentReference const & rhs ) const VULKAN_HPP_NOEXCEPT
5438     {
5439       return this->reflect() == rhs.reflect();
5440     }
5441 
operator !=VULKAN_HPP_NAMESPACE::AttachmentReference5442     bool operator!=( AttachmentReference const & rhs ) const VULKAN_HPP_NOEXCEPT
5443     {
5444       return this->reflect() != rhs.reflect();
5445     }
5446 #endif
5447 
5448   public:
5449     uint32_t                          attachment = {};
5450     VULKAN_HPP_NAMESPACE::ImageLayout layout     = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
5451   };
5452   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AttachmentReference ) == sizeof( VkAttachmentReference ),
5453                             "struct and wrapper have different size!" );
5454   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::AttachmentReference>::value,
5455                             "struct wrapper is not a standard layout!" );
5456   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::AttachmentReference>::value,
5457                             "AttachmentReference is not nothrow_move_constructible!" );
5458 
5459   struct AttachmentReference2
5460   {
5461     using NativeType = VkAttachmentReference2;
5462 
5463     static const bool                                  allowDuplicate = false;
5464     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAttachmentReference2;
5465 
5466 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
5467     VULKAN_HPP_CONSTEXPR
AttachmentReference2VULKAN_HPP_NAMESPACE::AttachmentReference25468       AttachmentReference2( uint32_t                          attachment_ = {},
5469                             VULKAN_HPP_NAMESPACE::ImageLayout layout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
5470                             VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ = {} ) VULKAN_HPP_NOEXCEPT
5471       : attachment( attachment_ )
5472       , layout( layout_ )
5473       , aspectMask( aspectMask_ )
5474     {}
5475 
5476     VULKAN_HPP_CONSTEXPR AttachmentReference2( AttachmentReference2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5477 
AttachmentReference2VULKAN_HPP_NAMESPACE::AttachmentReference25478     AttachmentReference2( VkAttachmentReference2 const & rhs ) VULKAN_HPP_NOEXCEPT
5479       : AttachmentReference2( *reinterpret_cast<AttachmentReference2 const *>( &rhs ) )
5480     {}
5481 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
5482 
5483     AttachmentReference2 & operator=( AttachmentReference2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5484 
operator =VULKAN_HPP_NAMESPACE::AttachmentReference25485     AttachmentReference2 & operator=( VkAttachmentReference2 const & rhs ) VULKAN_HPP_NOEXCEPT
5486     {
5487       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentReference2 const *>( &rhs );
5488       return *this;
5489     }
5490 
5491 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AttachmentReference25492     VULKAN_HPP_CONSTEXPR_14 AttachmentReference2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
5493     {
5494       pNext = pNext_;
5495       return *this;
5496     }
5497 
setAttachmentVULKAN_HPP_NAMESPACE::AttachmentReference25498     VULKAN_HPP_CONSTEXPR_14 AttachmentReference2 & setAttachment( uint32_t attachment_ ) VULKAN_HPP_NOEXCEPT
5499     {
5500       attachment = attachment_;
5501       return *this;
5502     }
5503 
5504     VULKAN_HPP_CONSTEXPR_14 AttachmentReference2 &
setLayoutVULKAN_HPP_NAMESPACE::AttachmentReference25505                             setLayout( VULKAN_HPP_NAMESPACE::ImageLayout layout_ ) VULKAN_HPP_NOEXCEPT
5506     {
5507       layout = layout_;
5508       return *this;
5509     }
5510 
5511     VULKAN_HPP_CONSTEXPR_14 AttachmentReference2 &
setAspectMaskVULKAN_HPP_NAMESPACE::AttachmentReference25512                             setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT
5513     {
5514       aspectMask = aspectMask_;
5515       return *this;
5516     }
5517 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
5518 
operator VkAttachmentReference2 const&VULKAN_HPP_NAMESPACE::AttachmentReference25519     explicit operator VkAttachmentReference2 const &() const VULKAN_HPP_NOEXCEPT
5520     {
5521       return *reinterpret_cast<const VkAttachmentReference2 *>( this );
5522     }
5523 
operator VkAttachmentReference2&VULKAN_HPP_NAMESPACE::AttachmentReference25524     explicit operator VkAttachmentReference2 &() VULKAN_HPP_NOEXCEPT
5525     {
5526       return *reinterpret_cast<VkAttachmentReference2 *>( this );
5527     }
5528 
5529 #if 14 <= VULKAN_HPP_CPP_VERSION
5530     auto
5531 #else
5532     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
5533                const void * const &,
5534                uint32_t const &,
5535                VULKAN_HPP_NAMESPACE::ImageLayout const &,
5536                VULKAN_HPP_NAMESPACE::ImageAspectFlags const &>
5537 #endif
reflectVULKAN_HPP_NAMESPACE::AttachmentReference25538       reflect() const VULKAN_HPP_NOEXCEPT
5539     {
5540       return std::tie( sType, pNext, attachment, layout, aspectMask );
5541     }
5542 
5543 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
5544     auto operator<=>( AttachmentReference2 const & ) const = default;
5545 #else
operator ==VULKAN_HPP_NAMESPACE::AttachmentReference25546     bool operator==( AttachmentReference2 const & rhs ) const VULKAN_HPP_NOEXCEPT
5547     {
5548       return this->reflect() == rhs.reflect();
5549     }
5550 
operator !=VULKAN_HPP_NAMESPACE::AttachmentReference25551     bool operator!=( AttachmentReference2 const & rhs ) const VULKAN_HPP_NOEXCEPT
5552     {
5553       return this->reflect() != rhs.reflect();
5554     }
5555 #endif
5556 
5557   public:
5558     VULKAN_HPP_NAMESPACE::StructureType    sType      = StructureType::eAttachmentReference2;
5559     const void *                           pNext      = {};
5560     uint32_t                               attachment = {};
5561     VULKAN_HPP_NAMESPACE::ImageLayout      layout     = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
5562     VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask = {};
5563   };
5564   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AttachmentReference2 ) == sizeof( VkAttachmentReference2 ),
5565                             "struct and wrapper have different size!" );
5566   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::AttachmentReference2>::value,
5567                             "struct wrapper is not a standard layout!" );
5568   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::AttachmentReference2>::value,
5569                             "AttachmentReference2 is not nothrow_move_constructible!" );
5570 
5571   template <>
5572   struct CppType<StructureType, StructureType::eAttachmentReference2>
5573   {
5574     using Type = AttachmentReference2;
5575   };
5576   using AttachmentReference2KHR = AttachmentReference2;
5577 
5578   struct AttachmentReferenceStencilLayout
5579   {
5580     using NativeType = VkAttachmentReferenceStencilLayout;
5581 
5582     static const bool                                  allowDuplicate = false;
5583     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAttachmentReferenceStencilLayout;
5584 
5585 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
5586     VULKAN_HPP_CONSTEXPR
AttachmentReferenceStencilLayoutVULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout5587       AttachmentReferenceStencilLayout( VULKAN_HPP_NAMESPACE::ImageLayout stencilLayout_ =
5588                                           VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined ) VULKAN_HPP_NOEXCEPT
5589       : stencilLayout( stencilLayout_ )
5590     {}
5591 
5592     VULKAN_HPP_CONSTEXPR
5593       AttachmentReferenceStencilLayout( AttachmentReferenceStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5594 
AttachmentReferenceStencilLayoutVULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout5595     AttachmentReferenceStencilLayout( VkAttachmentReferenceStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT
5596       : AttachmentReferenceStencilLayout( *reinterpret_cast<AttachmentReferenceStencilLayout const *>( &rhs ) )
5597     {}
5598 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
5599 
5600     AttachmentReferenceStencilLayout &
5601       operator=( AttachmentReferenceStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5602 
operator =VULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout5603     AttachmentReferenceStencilLayout & operator=( VkAttachmentReferenceStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT
5604     {
5605       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout const *>( &rhs );
5606       return *this;
5607     }
5608 
5609 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout5610     VULKAN_HPP_CONSTEXPR_14 AttachmentReferenceStencilLayout & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
5611     {
5612       pNext = pNext_;
5613       return *this;
5614     }
5615 
5616     VULKAN_HPP_CONSTEXPR_14 AttachmentReferenceStencilLayout &
setStencilLayoutVULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout5617                             setStencilLayout( VULKAN_HPP_NAMESPACE::ImageLayout stencilLayout_ ) VULKAN_HPP_NOEXCEPT
5618     {
5619       stencilLayout = stencilLayout_;
5620       return *this;
5621     }
5622 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
5623 
operator VkAttachmentReferenceStencilLayout const&VULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout5624     explicit operator VkAttachmentReferenceStencilLayout const &() const VULKAN_HPP_NOEXCEPT
5625     {
5626       return *reinterpret_cast<const VkAttachmentReferenceStencilLayout *>( this );
5627     }
5628 
operator VkAttachmentReferenceStencilLayout&VULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout5629     explicit operator VkAttachmentReferenceStencilLayout &() VULKAN_HPP_NOEXCEPT
5630     {
5631       return *reinterpret_cast<VkAttachmentReferenceStencilLayout *>( this );
5632     }
5633 
5634 #if 14 <= VULKAN_HPP_CPP_VERSION
5635     auto
5636 #else
5637     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ImageLayout const &>
5638 #endif
reflectVULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout5639       reflect() const VULKAN_HPP_NOEXCEPT
5640     {
5641       return std::tie( sType, pNext, stencilLayout );
5642     }
5643 
5644 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
5645     auto operator<=>( AttachmentReferenceStencilLayout const & ) const = default;
5646 #else
operator ==VULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout5647     bool operator==( AttachmentReferenceStencilLayout const & rhs ) const VULKAN_HPP_NOEXCEPT
5648     {
5649       return this->reflect() == rhs.reflect();
5650     }
5651 
operator !=VULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout5652     bool operator!=( AttachmentReferenceStencilLayout const & rhs ) const VULKAN_HPP_NOEXCEPT
5653     {
5654       return this->reflect() != rhs.reflect();
5655     }
5656 #endif
5657 
5658   public:
5659     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::eAttachmentReferenceStencilLayout;
5660     void *                              pNext         = {};
5661     VULKAN_HPP_NAMESPACE::ImageLayout   stencilLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
5662   };
5663   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout ) ==
5664                               sizeof( VkAttachmentReferenceStencilLayout ),
5665                             "struct and wrapper have different size!" );
5666   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout>::value,
5667                             "struct wrapper is not a standard layout!" );
5668   VULKAN_HPP_STATIC_ASSERT(
5669     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout>::value,
5670     "AttachmentReferenceStencilLayout is not nothrow_move_constructible!" );
5671 
5672   template <>
5673   struct CppType<StructureType, StructureType::eAttachmentReferenceStencilLayout>
5674   {
5675     using Type = AttachmentReferenceStencilLayout;
5676   };
5677   using AttachmentReferenceStencilLayoutKHR = AttachmentReferenceStencilLayout;
5678 
5679   struct AttachmentSampleCountInfoAMD
5680   {
5681     using NativeType = VkAttachmentSampleCountInfoAMD;
5682 
5683     static const bool                                  allowDuplicate = false;
5684     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAttachmentSampleCountInfoAMD;
5685 
5686 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
5687     VULKAN_HPP_CONSTEXPR
AttachmentSampleCountInfoAMDVULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD5688       AttachmentSampleCountInfoAMD( uint32_t                                          colorAttachmentCount_    = {},
5689                                     const VULKAN_HPP_NAMESPACE::SampleCountFlagBits * pColorAttachmentSamples_ = {},
5690                                     VULKAN_HPP_NAMESPACE::SampleCountFlagBits         depthStencilAttachmentSamples_ =
5691                                       VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1 ) VULKAN_HPP_NOEXCEPT
5692       : colorAttachmentCount( colorAttachmentCount_ )
5693       , pColorAttachmentSamples( pColorAttachmentSamples_ )
5694       , depthStencilAttachmentSamples( depthStencilAttachmentSamples_ )
5695     {}
5696 
5697     VULKAN_HPP_CONSTEXPR
5698       AttachmentSampleCountInfoAMD( AttachmentSampleCountInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5699 
AttachmentSampleCountInfoAMDVULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD5700     AttachmentSampleCountInfoAMD( VkAttachmentSampleCountInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
5701       : AttachmentSampleCountInfoAMD( *reinterpret_cast<AttachmentSampleCountInfoAMD const *>( &rhs ) )
5702     {}
5703 
5704 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
AttachmentSampleCountInfoAMDVULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD5705     AttachmentSampleCountInfoAMD( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<
5706                                     const VULKAN_HPP_NAMESPACE::SampleCountFlagBits> const & colorAttachmentSamples_,
5707                                   VULKAN_HPP_NAMESPACE::SampleCountFlagBits depthStencilAttachmentSamples_ =
5708                                     VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1 )
5709       : colorAttachmentCount( static_cast<uint32_t>( colorAttachmentSamples_.size() ) )
5710       , pColorAttachmentSamples( colorAttachmentSamples_.data() )
5711       , depthStencilAttachmentSamples( depthStencilAttachmentSamples_ )
5712     {}
5713 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
5714 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
5715 
5716     AttachmentSampleCountInfoAMD & operator=( AttachmentSampleCountInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5717 
operator =VULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD5718     AttachmentSampleCountInfoAMD & operator=( VkAttachmentSampleCountInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
5719     {
5720       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD const *>( &rhs );
5721       return *this;
5722     }
5723 
5724 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD5725     VULKAN_HPP_CONSTEXPR_14 AttachmentSampleCountInfoAMD & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
5726     {
5727       pNext = pNext_;
5728       return *this;
5729     }
5730 
5731     VULKAN_HPP_CONSTEXPR_14 AttachmentSampleCountInfoAMD &
setColorAttachmentCountVULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD5732                             setColorAttachmentCount( uint32_t colorAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
5733     {
5734       colorAttachmentCount = colorAttachmentCount_;
5735       return *this;
5736     }
5737 
setPColorAttachmentSamplesVULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD5738     VULKAN_HPP_CONSTEXPR_14 AttachmentSampleCountInfoAMD & setPColorAttachmentSamples(
5739       const VULKAN_HPP_NAMESPACE::SampleCountFlagBits * pColorAttachmentSamples_ ) VULKAN_HPP_NOEXCEPT
5740     {
5741       pColorAttachmentSamples = pColorAttachmentSamples_;
5742       return *this;
5743     }
5744 
5745 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setColorAttachmentSamplesVULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD5746     AttachmentSampleCountInfoAMD & setColorAttachmentSamples(
5747       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SampleCountFlagBits> const &
5748         colorAttachmentSamples_ ) VULKAN_HPP_NOEXCEPT
5749     {
5750       colorAttachmentCount    = static_cast<uint32_t>( colorAttachmentSamples_.size() );
5751       pColorAttachmentSamples = colorAttachmentSamples_.data();
5752       return *this;
5753     }
5754 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
5755 
setDepthStencilAttachmentSamplesVULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD5756     VULKAN_HPP_CONSTEXPR_14 AttachmentSampleCountInfoAMD & setDepthStencilAttachmentSamples(
5757       VULKAN_HPP_NAMESPACE::SampleCountFlagBits depthStencilAttachmentSamples_ ) VULKAN_HPP_NOEXCEPT
5758     {
5759       depthStencilAttachmentSamples = depthStencilAttachmentSamples_;
5760       return *this;
5761     }
5762 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
5763 
operator VkAttachmentSampleCountInfoAMD const&VULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD5764     explicit operator VkAttachmentSampleCountInfoAMD const &() const VULKAN_HPP_NOEXCEPT
5765     {
5766       return *reinterpret_cast<const VkAttachmentSampleCountInfoAMD *>( this );
5767     }
5768 
operator VkAttachmentSampleCountInfoAMD&VULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD5769     explicit operator VkAttachmentSampleCountInfoAMD &() VULKAN_HPP_NOEXCEPT
5770     {
5771       return *reinterpret_cast<VkAttachmentSampleCountInfoAMD *>( this );
5772     }
5773 
5774 #if 14 <= VULKAN_HPP_CPP_VERSION
5775     auto
5776 #else
5777     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
5778                const void * const &,
5779                uint32_t const &,
5780                const VULKAN_HPP_NAMESPACE::SampleCountFlagBits * const &,
5781                VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &>
5782 #endif
reflectVULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD5783       reflect() const VULKAN_HPP_NOEXCEPT
5784     {
5785       return std::tie( sType, pNext, colorAttachmentCount, pColorAttachmentSamples, depthStencilAttachmentSamples );
5786     }
5787 
5788 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
5789     auto operator<=>( AttachmentSampleCountInfoAMD const & ) const = default;
5790 #else
operator ==VULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD5791     bool operator==( AttachmentSampleCountInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
5792     {
5793       return this->reflect() == rhs.reflect();
5794     }
5795 
operator !=VULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD5796     bool operator!=( AttachmentSampleCountInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
5797     {
5798       return this->reflect() != rhs.reflect();
5799     }
5800 #endif
5801 
5802   public:
5803     VULKAN_HPP_NAMESPACE::StructureType               sType = StructureType::eAttachmentSampleCountInfoAMD;
5804     const void *                                      pNext = {};
5805     uint32_t                                          colorAttachmentCount    = {};
5806     const VULKAN_HPP_NAMESPACE::SampleCountFlagBits * pColorAttachmentSamples = {};
5807     VULKAN_HPP_NAMESPACE::SampleCountFlagBits         depthStencilAttachmentSamples =
5808       VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
5809   };
5810   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD ) ==
5811                               sizeof( VkAttachmentSampleCountInfoAMD ),
5812                             "struct and wrapper have different size!" );
5813   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD>::value,
5814                             "struct wrapper is not a standard layout!" );
5815   VULKAN_HPP_STATIC_ASSERT(
5816     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD>::value,
5817     "AttachmentSampleCountInfoAMD is not nothrow_move_constructible!" );
5818 
5819   template <>
5820   struct CppType<StructureType, StructureType::eAttachmentSampleCountInfoAMD>
5821   {
5822     using Type = AttachmentSampleCountInfoAMD;
5823   };
5824   using AttachmentSampleCountInfoNV = AttachmentSampleCountInfoAMD;
5825 
5826   struct Extent2D
5827   {
5828     using NativeType = VkExtent2D;
5829 
5830 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
Extent2DVULKAN_HPP_NAMESPACE::Extent2D5831     VULKAN_HPP_CONSTEXPR Extent2D( uint32_t width_ = {}, uint32_t height_ = {} ) VULKAN_HPP_NOEXCEPT
5832       : width( width_ )
5833       , height( height_ )
5834     {}
5835 
5836     VULKAN_HPP_CONSTEXPR Extent2D( Extent2D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5837 
Extent2DVULKAN_HPP_NAMESPACE::Extent2D5838     Extent2D( VkExtent2D const & rhs ) VULKAN_HPP_NOEXCEPT : Extent2D( *reinterpret_cast<Extent2D const *>( &rhs ) ) {}
5839 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
5840 
5841     Extent2D & operator=( Extent2D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5842 
operator =VULKAN_HPP_NAMESPACE::Extent2D5843     Extent2D & operator=( VkExtent2D const & rhs ) VULKAN_HPP_NOEXCEPT
5844     {
5845       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Extent2D const *>( &rhs );
5846       return *this;
5847     }
5848 
5849 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setWidthVULKAN_HPP_NAMESPACE::Extent2D5850     VULKAN_HPP_CONSTEXPR_14 Extent2D & setWidth( uint32_t width_ ) VULKAN_HPP_NOEXCEPT
5851     {
5852       width = width_;
5853       return *this;
5854     }
5855 
setHeightVULKAN_HPP_NAMESPACE::Extent2D5856     VULKAN_HPP_CONSTEXPR_14 Extent2D & setHeight( uint32_t height_ ) VULKAN_HPP_NOEXCEPT
5857     {
5858       height = height_;
5859       return *this;
5860     }
5861 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
5862 
operator VkExtent2D const&VULKAN_HPP_NAMESPACE::Extent2D5863     explicit operator VkExtent2D const &() const VULKAN_HPP_NOEXCEPT
5864     {
5865       return *reinterpret_cast<const VkExtent2D *>( this );
5866     }
5867 
operator VkExtent2D&VULKAN_HPP_NAMESPACE::Extent2D5868     explicit operator VkExtent2D &() VULKAN_HPP_NOEXCEPT
5869     {
5870       return *reinterpret_cast<VkExtent2D *>( this );
5871     }
5872 
5873 #if 14 <= VULKAN_HPP_CPP_VERSION
5874     auto
5875 #else
5876     std::tuple<uint32_t const &, uint32_t const &>
5877 #endif
reflectVULKAN_HPP_NAMESPACE::Extent2D5878       reflect() const VULKAN_HPP_NOEXCEPT
5879     {
5880       return std::tie( width, height );
5881     }
5882 
5883 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
5884     auto operator<=>( Extent2D const & ) const = default;
5885 #else
operator ==VULKAN_HPP_NAMESPACE::Extent2D5886     bool operator==( Extent2D const & rhs ) const VULKAN_HPP_NOEXCEPT
5887     {
5888       return this->reflect() == rhs.reflect();
5889     }
5890 
operator !=VULKAN_HPP_NAMESPACE::Extent2D5891     bool operator!=( Extent2D const & rhs ) const VULKAN_HPP_NOEXCEPT
5892     {
5893       return this->reflect() != rhs.reflect();
5894     }
5895 #endif
5896 
5897   public:
5898     uint32_t width  = {};
5899     uint32_t height = {};
5900   };
5901   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Extent2D ) == sizeof( VkExtent2D ),
5902                             "struct and wrapper have different size!" );
5903   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::Extent2D>::value,
5904                             "struct wrapper is not a standard layout!" );
5905   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::Extent2D>::value,
5906                             "Extent2D is not nothrow_move_constructible!" );
5907 
5908   struct SampleLocationEXT
5909   {
5910     using NativeType = VkSampleLocationEXT;
5911 
5912 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SampleLocationEXTVULKAN_HPP_NAMESPACE::SampleLocationEXT5913     VULKAN_HPP_CONSTEXPR SampleLocationEXT( float x_ = {}, float y_ = {} ) VULKAN_HPP_NOEXCEPT
5914       : x( x_ )
5915       , y( y_ )
5916     {}
5917 
5918     VULKAN_HPP_CONSTEXPR SampleLocationEXT( SampleLocationEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5919 
SampleLocationEXTVULKAN_HPP_NAMESPACE::SampleLocationEXT5920     SampleLocationEXT( VkSampleLocationEXT const & rhs ) VULKAN_HPP_NOEXCEPT
5921       : SampleLocationEXT( *reinterpret_cast<SampleLocationEXT const *>( &rhs ) )
5922     {}
5923 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
5924 
5925     SampleLocationEXT & operator=( SampleLocationEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5926 
operator =VULKAN_HPP_NAMESPACE::SampleLocationEXT5927     SampleLocationEXT & operator=( VkSampleLocationEXT const & rhs ) VULKAN_HPP_NOEXCEPT
5928     {
5929       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SampleLocationEXT const *>( &rhs );
5930       return *this;
5931     }
5932 
5933 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setXVULKAN_HPP_NAMESPACE::SampleLocationEXT5934     VULKAN_HPP_CONSTEXPR_14 SampleLocationEXT & setX( float x_ ) VULKAN_HPP_NOEXCEPT
5935     {
5936       x = x_;
5937       return *this;
5938     }
5939 
setYVULKAN_HPP_NAMESPACE::SampleLocationEXT5940     VULKAN_HPP_CONSTEXPR_14 SampleLocationEXT & setY( float y_ ) VULKAN_HPP_NOEXCEPT
5941     {
5942       y = y_;
5943       return *this;
5944     }
5945 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
5946 
operator VkSampleLocationEXT const&VULKAN_HPP_NAMESPACE::SampleLocationEXT5947     explicit operator VkSampleLocationEXT const &() const VULKAN_HPP_NOEXCEPT
5948     {
5949       return *reinterpret_cast<const VkSampleLocationEXT *>( this );
5950     }
5951 
operator VkSampleLocationEXT&VULKAN_HPP_NAMESPACE::SampleLocationEXT5952     explicit operator VkSampleLocationEXT &() VULKAN_HPP_NOEXCEPT
5953     {
5954       return *reinterpret_cast<VkSampleLocationEXT *>( this );
5955     }
5956 
5957 #if 14 <= VULKAN_HPP_CPP_VERSION
5958     auto
5959 #else
5960     std::tuple<float const &, float const &>
5961 #endif
reflectVULKAN_HPP_NAMESPACE::SampleLocationEXT5962       reflect() const VULKAN_HPP_NOEXCEPT
5963     {
5964       return std::tie( x, y );
5965     }
5966 
5967 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
5968     auto operator<=>( SampleLocationEXT const & ) const = default;
5969 #else
operator ==VULKAN_HPP_NAMESPACE::SampleLocationEXT5970     bool operator==( SampleLocationEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
5971     {
5972       return this->reflect() == rhs.reflect();
5973     }
5974 
operator !=VULKAN_HPP_NAMESPACE::SampleLocationEXT5975     bool operator!=( SampleLocationEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
5976     {
5977       return this->reflect() != rhs.reflect();
5978     }
5979 #endif
5980 
5981   public:
5982     float x = {};
5983     float y = {};
5984   };
5985   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SampleLocationEXT ) == sizeof( VkSampleLocationEXT ),
5986                             "struct and wrapper have different size!" );
5987   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SampleLocationEXT>::value,
5988                             "struct wrapper is not a standard layout!" );
5989   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SampleLocationEXT>::value,
5990                             "SampleLocationEXT is not nothrow_move_constructible!" );
5991 
5992   struct SampleLocationsInfoEXT
5993   {
5994     using NativeType = VkSampleLocationsInfoEXT;
5995 
5996     static const bool                                  allowDuplicate = false;
5997     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSampleLocationsInfoEXT;
5998 
5999 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SampleLocationsInfoEXTVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6000     VULKAN_HPP_CONSTEXPR SampleLocationsInfoEXT(
6001       VULKAN_HPP_NAMESPACE::SampleCountFlagBits sampleLocationsPerPixel_ =
6002         VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1,
6003       VULKAN_HPP_NAMESPACE::Extent2D                  sampleLocationGridSize_ = {},
6004       uint32_t                                        sampleLocationsCount_   = {},
6005       const VULKAN_HPP_NAMESPACE::SampleLocationEXT * pSampleLocations_       = {} ) VULKAN_HPP_NOEXCEPT
6006       : sampleLocationsPerPixel( sampleLocationsPerPixel_ )
6007       , sampleLocationGridSize( sampleLocationGridSize_ )
6008       , sampleLocationsCount( sampleLocationsCount_ )
6009       , pSampleLocations( pSampleLocations_ )
6010     {}
6011 
6012     VULKAN_HPP_CONSTEXPR SampleLocationsInfoEXT( SampleLocationsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6013 
SampleLocationsInfoEXTVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6014     SampleLocationsInfoEXT( VkSampleLocationsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
6015       : SampleLocationsInfoEXT( *reinterpret_cast<SampleLocationsInfoEXT const *>( &rhs ) )
6016     {}
6017 
6018 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SampleLocationsInfoEXTVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6019     SampleLocationsInfoEXT(
6020       VULKAN_HPP_NAMESPACE::SampleCountFlagBits sampleLocationsPerPixel_,
6021       VULKAN_HPP_NAMESPACE::Extent2D            sampleLocationGridSize_,
6022       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SampleLocationEXT> const &
6023         sampleLocations_ )
6024       : sampleLocationsPerPixel( sampleLocationsPerPixel_ )
6025       , sampleLocationGridSize( sampleLocationGridSize_ )
6026       , sampleLocationsCount( static_cast<uint32_t>( sampleLocations_.size() ) )
6027       , pSampleLocations( sampleLocations_.data() )
6028     {}
6029 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
6030 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
6031 
6032     SampleLocationsInfoEXT & operator=( SampleLocationsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6033 
operator =VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6034     SampleLocationsInfoEXT & operator=( VkSampleLocationsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
6035     {
6036       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const *>( &rhs );
6037       return *this;
6038     }
6039 
6040 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6041     VULKAN_HPP_CONSTEXPR_14 SampleLocationsInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
6042     {
6043       pNext = pNext_;
6044       return *this;
6045     }
6046 
setSampleLocationsPerPixelVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6047     VULKAN_HPP_CONSTEXPR_14 SampleLocationsInfoEXT & setSampleLocationsPerPixel(
6048       VULKAN_HPP_NAMESPACE::SampleCountFlagBits sampleLocationsPerPixel_ ) VULKAN_HPP_NOEXCEPT
6049     {
6050       sampleLocationsPerPixel = sampleLocationsPerPixel_;
6051       return *this;
6052     }
6053 
6054     VULKAN_HPP_CONSTEXPR_14 SampleLocationsInfoEXT &
setSampleLocationGridSizeVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6055       setSampleLocationGridSize( VULKAN_HPP_NAMESPACE::Extent2D const & sampleLocationGridSize_ ) VULKAN_HPP_NOEXCEPT
6056     {
6057       sampleLocationGridSize = sampleLocationGridSize_;
6058       return *this;
6059     }
6060 
6061     VULKAN_HPP_CONSTEXPR_14 SampleLocationsInfoEXT &
setSampleLocationsCountVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6062                             setSampleLocationsCount( uint32_t sampleLocationsCount_ ) VULKAN_HPP_NOEXCEPT
6063     {
6064       sampleLocationsCount = sampleLocationsCount_;
6065       return *this;
6066     }
6067 
6068     VULKAN_HPP_CONSTEXPR_14 SampleLocationsInfoEXT &
setPSampleLocationsVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6069       setPSampleLocations( const VULKAN_HPP_NAMESPACE::SampleLocationEXT * pSampleLocations_ ) VULKAN_HPP_NOEXCEPT
6070     {
6071       pSampleLocations = pSampleLocations_;
6072       return *this;
6073     }
6074 
6075 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSampleLocationsVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6076     SampleLocationsInfoEXT & setSampleLocations(
6077       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SampleLocationEXT> const &
6078         sampleLocations_ ) VULKAN_HPP_NOEXCEPT
6079     {
6080       sampleLocationsCount = static_cast<uint32_t>( sampleLocations_.size() );
6081       pSampleLocations     = sampleLocations_.data();
6082       return *this;
6083     }
6084 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
6085 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
6086 
operator VkSampleLocationsInfoEXT const&VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6087     explicit operator VkSampleLocationsInfoEXT const &() const VULKAN_HPP_NOEXCEPT
6088     {
6089       return *reinterpret_cast<const VkSampleLocationsInfoEXT *>( this );
6090     }
6091 
operator VkSampleLocationsInfoEXT&VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6092     explicit operator VkSampleLocationsInfoEXT &() VULKAN_HPP_NOEXCEPT
6093     {
6094       return *reinterpret_cast<VkSampleLocationsInfoEXT *>( this );
6095     }
6096 
6097 #if 14 <= VULKAN_HPP_CPP_VERSION
6098     auto
6099 #else
6100     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
6101                const void * const &,
6102                VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &,
6103                VULKAN_HPP_NAMESPACE::Extent2D const &,
6104                uint32_t const &,
6105                const VULKAN_HPP_NAMESPACE::SampleLocationEXT * const &>
6106 #endif
reflectVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6107       reflect() const VULKAN_HPP_NOEXCEPT
6108     {
6109       return std::tie(
6110         sType, pNext, sampleLocationsPerPixel, sampleLocationGridSize, sampleLocationsCount, pSampleLocations );
6111     }
6112 
6113 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
6114     auto operator<=>( SampleLocationsInfoEXT const & ) const = default;
6115 #else
operator ==VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6116     bool operator==( SampleLocationsInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
6117     {
6118       return this->reflect() == rhs.reflect();
6119     }
6120 
operator !=VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6121     bool operator!=( SampleLocationsInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
6122     {
6123       return this->reflect() != rhs.reflect();
6124     }
6125 #endif
6126 
6127   public:
6128     VULKAN_HPP_NAMESPACE::StructureType       sType                   = StructureType::eSampleLocationsInfoEXT;
6129     const void *                              pNext                   = {};
6130     VULKAN_HPP_NAMESPACE::SampleCountFlagBits sampleLocationsPerPixel = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
6131     VULKAN_HPP_NAMESPACE::Extent2D            sampleLocationGridSize  = {};
6132     uint32_t                                  sampleLocationsCount    = {};
6133     const VULKAN_HPP_NAMESPACE::SampleLocationEXT * pSampleLocations  = {};
6134   };
6135   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT ) ==
6136                               sizeof( VkSampleLocationsInfoEXT ),
6137                             "struct and wrapper have different size!" );
6138   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT>::value,
6139                             "struct wrapper is not a standard layout!" );
6140   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT>::value,
6141                             "SampleLocationsInfoEXT is not nothrow_move_constructible!" );
6142 
6143   template <>
6144   struct CppType<StructureType, StructureType::eSampleLocationsInfoEXT>
6145   {
6146     using Type = SampleLocationsInfoEXT;
6147   };
6148 
6149   struct AttachmentSampleLocationsEXT
6150   {
6151     using NativeType = VkAttachmentSampleLocationsEXT;
6152 
6153 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AttachmentSampleLocationsEXTVULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT6154     VULKAN_HPP_CONSTEXPR AttachmentSampleLocationsEXT(
6155       uint32_t                                     attachmentIndex_     = {},
6156       VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT sampleLocationsInfo_ = {} ) VULKAN_HPP_NOEXCEPT
6157       : attachmentIndex( attachmentIndex_ )
6158       , sampleLocationsInfo( sampleLocationsInfo_ )
6159     {}
6160 
6161     VULKAN_HPP_CONSTEXPR
6162       AttachmentSampleLocationsEXT( AttachmentSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6163 
AttachmentSampleLocationsEXTVULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT6164     AttachmentSampleLocationsEXT( VkAttachmentSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT
6165       : AttachmentSampleLocationsEXT( *reinterpret_cast<AttachmentSampleLocationsEXT const *>( &rhs ) )
6166     {}
6167 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
6168 
6169     AttachmentSampleLocationsEXT & operator=( AttachmentSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6170 
operator =VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT6171     AttachmentSampleLocationsEXT & operator=( VkAttachmentSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT
6172     {
6173       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT const *>( &rhs );
6174       return *this;
6175     }
6176 
6177 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
6178     VULKAN_HPP_CONSTEXPR_14 AttachmentSampleLocationsEXT &
setAttachmentIndexVULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT6179                             setAttachmentIndex( uint32_t attachmentIndex_ ) VULKAN_HPP_NOEXCEPT
6180     {
6181       attachmentIndex = attachmentIndex_;
6182       return *this;
6183     }
6184 
setSampleLocationsInfoVULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT6185     VULKAN_HPP_CONSTEXPR_14 AttachmentSampleLocationsEXT & setSampleLocationsInfo(
6186       VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const & sampleLocationsInfo_ ) VULKAN_HPP_NOEXCEPT
6187     {
6188       sampleLocationsInfo = sampleLocationsInfo_;
6189       return *this;
6190     }
6191 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
6192 
operator VkAttachmentSampleLocationsEXT const&VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT6193     explicit operator VkAttachmentSampleLocationsEXT const &() const VULKAN_HPP_NOEXCEPT
6194     {
6195       return *reinterpret_cast<const VkAttachmentSampleLocationsEXT *>( this );
6196     }
6197 
operator VkAttachmentSampleLocationsEXT&VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT6198     explicit operator VkAttachmentSampleLocationsEXT &() VULKAN_HPP_NOEXCEPT
6199     {
6200       return *reinterpret_cast<VkAttachmentSampleLocationsEXT *>( this );
6201     }
6202 
6203 #if 14 <= VULKAN_HPP_CPP_VERSION
6204     auto
6205 #else
6206     std::tuple<uint32_t const &, VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const &>
6207 #endif
reflectVULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT6208       reflect() const VULKAN_HPP_NOEXCEPT
6209     {
6210       return std::tie( attachmentIndex, sampleLocationsInfo );
6211     }
6212 
6213 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
6214     auto operator<=>( AttachmentSampleLocationsEXT const & ) const = default;
6215 #else
operator ==VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT6216     bool operator==( AttachmentSampleLocationsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
6217     {
6218       return this->reflect() == rhs.reflect();
6219     }
6220 
operator !=VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT6221     bool operator!=( AttachmentSampleLocationsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
6222     {
6223       return this->reflect() != rhs.reflect();
6224     }
6225 #endif
6226 
6227   public:
6228     uint32_t                                     attachmentIndex     = {};
6229     VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT sampleLocationsInfo = {};
6230   };
6231   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT ) ==
6232                               sizeof( VkAttachmentSampleLocationsEXT ),
6233                             "struct and wrapper have different size!" );
6234   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT>::value,
6235                             "struct wrapper is not a standard layout!" );
6236   VULKAN_HPP_STATIC_ASSERT(
6237     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT>::value,
6238     "AttachmentSampleLocationsEXT is not nothrow_move_constructible!" );
6239 
6240   struct BaseInStructure
6241   {
6242     using NativeType = VkBaseInStructure;
6243 
6244 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BaseInStructureVULKAN_HPP_NAMESPACE::BaseInStructure6245     BaseInStructure( VULKAN_HPP_NAMESPACE::StructureType sType_ =
6246                        VULKAN_HPP_NAMESPACE::StructureType::eApplicationInfo ) VULKAN_HPP_NOEXCEPT : sType( sType_ )
6247     {}
6248 
6249     BaseInStructure( BaseInStructure const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6250 
BaseInStructureVULKAN_HPP_NAMESPACE::BaseInStructure6251     BaseInStructure( VkBaseInStructure const & rhs ) VULKAN_HPP_NOEXCEPT
6252       : BaseInStructure( *reinterpret_cast<BaseInStructure const *>( &rhs ) )
6253     {}
6254 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
6255 
6256     BaseInStructure & operator=( BaseInStructure const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6257 
operator =VULKAN_HPP_NAMESPACE::BaseInStructure6258     BaseInStructure & operator=( VkBaseInStructure const & rhs ) VULKAN_HPP_NOEXCEPT
6259     {
6260       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BaseInStructure const *>( &rhs );
6261       return *this;
6262     }
6263 
6264 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
6265     VULKAN_HPP_CONSTEXPR_14 BaseInStructure &
setPNextVULKAN_HPP_NAMESPACE::BaseInStructure6266                             setPNext( const struct VULKAN_HPP_NAMESPACE::BaseInStructure * pNext_ ) VULKAN_HPP_NOEXCEPT
6267     {
6268       pNext = pNext_;
6269       return *this;
6270     }
6271 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
6272 
operator VkBaseInStructure const&VULKAN_HPP_NAMESPACE::BaseInStructure6273     explicit operator VkBaseInStructure const &() const VULKAN_HPP_NOEXCEPT
6274     {
6275       return *reinterpret_cast<const VkBaseInStructure *>( this );
6276     }
6277 
operator VkBaseInStructure&VULKAN_HPP_NAMESPACE::BaseInStructure6278     explicit operator VkBaseInStructure &() VULKAN_HPP_NOEXCEPT
6279     {
6280       return *reinterpret_cast<VkBaseInStructure *>( this );
6281     }
6282 
6283 #if 14 <= VULKAN_HPP_CPP_VERSION
6284     auto
6285 #else
6286     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
6287                const struct VULKAN_HPP_NAMESPACE::BaseInStructure * const &>
6288 #endif
reflectVULKAN_HPP_NAMESPACE::BaseInStructure6289       reflect() const VULKAN_HPP_NOEXCEPT
6290     {
6291       return std::tie( sType, pNext );
6292     }
6293 
6294 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
6295     auto operator<=>( BaseInStructure const & ) const = default;
6296 #else
operator ==VULKAN_HPP_NAMESPACE::BaseInStructure6297     bool operator==( BaseInStructure const & rhs ) const VULKAN_HPP_NOEXCEPT
6298     {
6299       return this->reflect() == rhs.reflect();
6300     }
6301 
operator !=VULKAN_HPP_NAMESPACE::BaseInStructure6302     bool operator!=( BaseInStructure const & rhs ) const VULKAN_HPP_NOEXCEPT
6303     {
6304       return this->reflect() != rhs.reflect();
6305     }
6306 #endif
6307 
6308   public:
6309     VULKAN_HPP_NAMESPACE::StructureType                  sType = VULKAN_HPP_NAMESPACE::StructureType::eApplicationInfo;
6310     const struct VULKAN_HPP_NAMESPACE::BaseInStructure * pNext = {};
6311   };
6312   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BaseInStructure ) == sizeof( VkBaseInStructure ),
6313                             "struct and wrapper have different size!" );
6314   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::BaseInStructure>::value,
6315                             "struct wrapper is not a standard layout!" );
6316   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::BaseInStructure>::value,
6317                             "BaseInStructure is not nothrow_move_constructible!" );
6318 
6319   struct BaseOutStructure
6320   {
6321     using NativeType = VkBaseOutStructure;
6322 
6323 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BaseOutStructureVULKAN_HPP_NAMESPACE::BaseOutStructure6324     BaseOutStructure( VULKAN_HPP_NAMESPACE::StructureType sType_ =
6325                         VULKAN_HPP_NAMESPACE::StructureType::eApplicationInfo ) VULKAN_HPP_NOEXCEPT : sType( sType_ )
6326     {}
6327 
6328     BaseOutStructure( BaseOutStructure const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6329 
BaseOutStructureVULKAN_HPP_NAMESPACE::BaseOutStructure6330     BaseOutStructure( VkBaseOutStructure const & rhs ) VULKAN_HPP_NOEXCEPT
6331       : BaseOutStructure( *reinterpret_cast<BaseOutStructure const *>( &rhs ) )
6332     {}
6333 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
6334 
6335     BaseOutStructure & operator=( BaseOutStructure const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6336 
operator =VULKAN_HPP_NAMESPACE::BaseOutStructure6337     BaseOutStructure & operator=( VkBaseOutStructure const & rhs ) VULKAN_HPP_NOEXCEPT
6338     {
6339       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BaseOutStructure const *>( &rhs );
6340       return *this;
6341     }
6342 
6343 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
6344     VULKAN_HPP_CONSTEXPR_14 BaseOutStructure &
setPNextVULKAN_HPP_NAMESPACE::BaseOutStructure6345                             setPNext( struct VULKAN_HPP_NAMESPACE::BaseOutStructure * pNext_ ) VULKAN_HPP_NOEXCEPT
6346     {
6347       pNext = pNext_;
6348       return *this;
6349     }
6350 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
6351 
operator VkBaseOutStructure const&VULKAN_HPP_NAMESPACE::BaseOutStructure6352     explicit operator VkBaseOutStructure const &() const VULKAN_HPP_NOEXCEPT
6353     {
6354       return *reinterpret_cast<const VkBaseOutStructure *>( this );
6355     }
6356 
operator VkBaseOutStructure&VULKAN_HPP_NAMESPACE::BaseOutStructure6357     explicit operator VkBaseOutStructure &() VULKAN_HPP_NOEXCEPT
6358     {
6359       return *reinterpret_cast<VkBaseOutStructure *>( this );
6360     }
6361 
6362 #if 14 <= VULKAN_HPP_CPP_VERSION
6363     auto
6364 #else
6365     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, struct VULKAN_HPP_NAMESPACE::BaseOutStructure * const &>
6366 #endif
reflectVULKAN_HPP_NAMESPACE::BaseOutStructure6367       reflect() const VULKAN_HPP_NOEXCEPT
6368     {
6369       return std::tie( sType, pNext );
6370     }
6371 
6372 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
6373     auto operator<=>( BaseOutStructure const & ) const = default;
6374 #else
operator ==VULKAN_HPP_NAMESPACE::BaseOutStructure6375     bool operator==( BaseOutStructure const & rhs ) const VULKAN_HPP_NOEXCEPT
6376     {
6377       return this->reflect() == rhs.reflect();
6378     }
6379 
operator !=VULKAN_HPP_NAMESPACE::BaseOutStructure6380     bool operator!=( BaseOutStructure const & rhs ) const VULKAN_HPP_NOEXCEPT
6381     {
6382       return this->reflect() != rhs.reflect();
6383     }
6384 #endif
6385 
6386   public:
6387     VULKAN_HPP_NAMESPACE::StructureType             sType = VULKAN_HPP_NAMESPACE::StructureType::eApplicationInfo;
6388     struct VULKAN_HPP_NAMESPACE::BaseOutStructure * pNext = {};
6389   };
6390   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BaseOutStructure ) == sizeof( VkBaseOutStructure ),
6391                             "struct and wrapper have different size!" );
6392   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::BaseOutStructure>::value,
6393                             "struct wrapper is not a standard layout!" );
6394   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::BaseOutStructure>::value,
6395                             "BaseOutStructure is not nothrow_move_constructible!" );
6396 
6397   struct BindAccelerationStructureMemoryInfoNV
6398   {
6399     using NativeType = VkBindAccelerationStructureMemoryInfoNV;
6400 
6401     static const bool                                  allowDuplicate = false;
6402     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
6403       StructureType::eBindAccelerationStructureMemoryInfoNV;
6404 
6405 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
6406     VULKAN_HPP_CONSTEXPR
BindAccelerationStructureMemoryInfoNVVULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV6407       BindAccelerationStructureMemoryInfoNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure_ = {},
6408                                              VULKAN_HPP_NAMESPACE::DeviceMemory            memory_                = {},
6409                                              VULKAN_HPP_NAMESPACE::DeviceSize              memoryOffset_          = {},
6410                                              uint32_t                                      deviceIndexCount_      = {},
6411                                              const uint32_t * pDeviceIndices_ = {} ) VULKAN_HPP_NOEXCEPT
6412       : accelerationStructure( accelerationStructure_ )
6413       , memory( memory_ )
6414       , memoryOffset( memoryOffset_ )
6415       , deviceIndexCount( deviceIndexCount_ )
6416       , pDeviceIndices( pDeviceIndices_ )
6417     {}
6418 
6419     VULKAN_HPP_CONSTEXPR BindAccelerationStructureMemoryInfoNV( BindAccelerationStructureMemoryInfoNV const & rhs )
6420       VULKAN_HPP_NOEXCEPT = default;
6421 
BindAccelerationStructureMemoryInfoNVVULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV6422     BindAccelerationStructureMemoryInfoNV( VkBindAccelerationStructureMemoryInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
6423       : BindAccelerationStructureMemoryInfoNV(
6424           *reinterpret_cast<BindAccelerationStructureMemoryInfoNV const *>( &rhs ) )
6425     {}
6426 
6427 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
BindAccelerationStructureMemoryInfoNVVULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV6428     BindAccelerationStructureMemoryInfoNV(
6429       VULKAN_HPP_NAMESPACE::AccelerationStructureNV                         accelerationStructure_,
6430       VULKAN_HPP_NAMESPACE::DeviceMemory                                    memory_,
6431       VULKAN_HPP_NAMESPACE::DeviceSize                                      memoryOffset_,
6432       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & deviceIndices_ )
6433       : accelerationStructure( accelerationStructure_ )
6434       , memory( memory_ )
6435       , memoryOffset( memoryOffset_ )
6436       , deviceIndexCount( static_cast<uint32_t>( deviceIndices_.size() ) )
6437       , pDeviceIndices( deviceIndices_.data() )
6438     {}
6439 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
6440 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
6441 
6442     BindAccelerationStructureMemoryInfoNV &
6443       operator=( BindAccelerationStructureMemoryInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6444 
6445     BindAccelerationStructureMemoryInfoNV &
operator =VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV6446       operator=( VkBindAccelerationStructureMemoryInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
6447     {
6448       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV const *>( &rhs );
6449       return *this;
6450     }
6451 
6452 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV6453     VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
6454     {
6455       pNext = pNext_;
6456       return *this;
6457     }
6458 
setAccelerationStructureVULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV6459     VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV & setAccelerationStructure(
6460       VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure_ ) VULKAN_HPP_NOEXCEPT
6461     {
6462       accelerationStructure = accelerationStructure_;
6463       return *this;
6464     }
6465 
6466     VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV &
setMemoryVULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV6467                             setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
6468     {
6469       memory = memory_;
6470       return *this;
6471     }
6472 
6473     VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV &
setMemoryOffsetVULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV6474                             setMemoryOffset( VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ ) VULKAN_HPP_NOEXCEPT
6475     {
6476       memoryOffset = memoryOffset_;
6477       return *this;
6478     }
6479 
6480     VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV &
setDeviceIndexCountVULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV6481                             setDeviceIndexCount( uint32_t deviceIndexCount_ ) VULKAN_HPP_NOEXCEPT
6482     {
6483       deviceIndexCount = deviceIndexCount_;
6484       return *this;
6485     }
6486 
6487     VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV &
setPDeviceIndicesVULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV6488                             setPDeviceIndices( const uint32_t * pDeviceIndices_ ) VULKAN_HPP_NOEXCEPT
6489     {
6490       pDeviceIndices = pDeviceIndices_;
6491       return *this;
6492     }
6493 
6494 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDeviceIndicesVULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV6495     BindAccelerationStructureMemoryInfoNV & setDeviceIndices(
6496       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & deviceIndices_ ) VULKAN_HPP_NOEXCEPT
6497     {
6498       deviceIndexCount = static_cast<uint32_t>( deviceIndices_.size() );
6499       pDeviceIndices   = deviceIndices_.data();
6500       return *this;
6501     }
6502 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
6503 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
6504 
operator VkBindAccelerationStructureMemoryInfoNV const&VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV6505     explicit operator VkBindAccelerationStructureMemoryInfoNV const &() const VULKAN_HPP_NOEXCEPT
6506     {
6507       return *reinterpret_cast<const VkBindAccelerationStructureMemoryInfoNV *>( this );
6508     }
6509 
operator VkBindAccelerationStructureMemoryInfoNV&VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV6510     explicit operator VkBindAccelerationStructureMemoryInfoNV &() VULKAN_HPP_NOEXCEPT
6511     {
6512       return *reinterpret_cast<VkBindAccelerationStructureMemoryInfoNV *>( this );
6513     }
6514 
6515 #if 14 <= VULKAN_HPP_CPP_VERSION
6516     auto
6517 #else
6518     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
6519                const void * const &,
6520                VULKAN_HPP_NAMESPACE::AccelerationStructureNV const &,
6521                VULKAN_HPP_NAMESPACE::DeviceMemory const &,
6522                VULKAN_HPP_NAMESPACE::DeviceSize const &,
6523                uint32_t const &,
6524                const uint32_t * const &>
6525 #endif
reflectVULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV6526       reflect() const VULKAN_HPP_NOEXCEPT
6527     {
6528       return std::tie( sType, pNext, accelerationStructure, memory, memoryOffset, deviceIndexCount, pDeviceIndices );
6529     }
6530 
6531 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
6532     auto operator<=>( BindAccelerationStructureMemoryInfoNV const & ) const = default;
6533 #else
operator ==VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV6534     bool operator==( BindAccelerationStructureMemoryInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
6535     {
6536       return this->reflect() == rhs.reflect();
6537     }
6538 
operator !=VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV6539     bool operator!=( BindAccelerationStructureMemoryInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
6540     {
6541       return this->reflect() != rhs.reflect();
6542     }
6543 #endif
6544 
6545   public:
6546     VULKAN_HPP_NAMESPACE::StructureType           sType = StructureType::eBindAccelerationStructureMemoryInfoNV;
6547     const void *                                  pNext = {};
6548     VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure = {};
6549     VULKAN_HPP_NAMESPACE::DeviceMemory            memory                = {};
6550     VULKAN_HPP_NAMESPACE::DeviceSize              memoryOffset          = {};
6551     uint32_t                                      deviceIndexCount      = {};
6552     const uint32_t *                              pDeviceIndices        = {};
6553   };
6554   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV ) ==
6555                               sizeof( VkBindAccelerationStructureMemoryInfoNV ),
6556                             "struct and wrapper have different size!" );
6557   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV>::value,
6558                             "struct wrapper is not a standard layout!" );
6559   VULKAN_HPP_STATIC_ASSERT(
6560     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV>::value,
6561     "BindAccelerationStructureMemoryInfoNV is not nothrow_move_constructible!" );
6562 
6563   template <>
6564   struct CppType<StructureType, StructureType::eBindAccelerationStructureMemoryInfoNV>
6565   {
6566     using Type = BindAccelerationStructureMemoryInfoNV;
6567   };
6568 
6569   struct BindBufferMemoryDeviceGroupInfo
6570   {
6571     using NativeType = VkBindBufferMemoryDeviceGroupInfo;
6572 
6573     static const bool                                  allowDuplicate = false;
6574     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBindBufferMemoryDeviceGroupInfo;
6575 
6576 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindBufferMemoryDeviceGroupInfoVULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo6577     VULKAN_HPP_CONSTEXPR BindBufferMemoryDeviceGroupInfo( uint32_t         deviceIndexCount_ = {},
6578                                                           const uint32_t * pDeviceIndices_   = {} ) VULKAN_HPP_NOEXCEPT
6579       : deviceIndexCount( deviceIndexCount_ )
6580       , pDeviceIndices( pDeviceIndices_ )
6581     {}
6582 
6583     VULKAN_HPP_CONSTEXPR
6584       BindBufferMemoryDeviceGroupInfo( BindBufferMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6585 
BindBufferMemoryDeviceGroupInfoVULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo6586     BindBufferMemoryDeviceGroupInfo( VkBindBufferMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT
6587       : BindBufferMemoryDeviceGroupInfo( *reinterpret_cast<BindBufferMemoryDeviceGroupInfo const *>( &rhs ) )
6588     {}
6589 
6590 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
BindBufferMemoryDeviceGroupInfoVULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo6591     BindBufferMemoryDeviceGroupInfo(
6592       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & deviceIndices_ )
6593       : deviceIndexCount( static_cast<uint32_t>( deviceIndices_.size() ) ), pDeviceIndices( deviceIndices_.data() )
6594     {}
6595 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
6596 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
6597 
6598     BindBufferMemoryDeviceGroupInfo &
6599       operator=( BindBufferMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6600 
operator =VULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo6601     BindBufferMemoryDeviceGroupInfo & operator=( VkBindBufferMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT
6602     {
6603       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo const *>( &rhs );
6604       return *this;
6605     }
6606 
6607 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo6608     VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryDeviceGroupInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
6609     {
6610       pNext = pNext_;
6611       return *this;
6612     }
6613 
6614     VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryDeviceGroupInfo &
setDeviceIndexCountVULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo6615                             setDeviceIndexCount( uint32_t deviceIndexCount_ ) VULKAN_HPP_NOEXCEPT
6616     {
6617       deviceIndexCount = deviceIndexCount_;
6618       return *this;
6619     }
6620 
6621     VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryDeviceGroupInfo &
setPDeviceIndicesVULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo6622                             setPDeviceIndices( const uint32_t * pDeviceIndices_ ) VULKAN_HPP_NOEXCEPT
6623     {
6624       pDeviceIndices = pDeviceIndices_;
6625       return *this;
6626     }
6627 
6628 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDeviceIndicesVULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo6629     BindBufferMemoryDeviceGroupInfo & setDeviceIndices(
6630       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & deviceIndices_ ) VULKAN_HPP_NOEXCEPT
6631     {
6632       deviceIndexCount = static_cast<uint32_t>( deviceIndices_.size() );
6633       pDeviceIndices   = deviceIndices_.data();
6634       return *this;
6635     }
6636 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
6637 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
6638 
operator VkBindBufferMemoryDeviceGroupInfo const&VULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo6639     explicit operator VkBindBufferMemoryDeviceGroupInfo const &() const VULKAN_HPP_NOEXCEPT
6640     {
6641       return *reinterpret_cast<const VkBindBufferMemoryDeviceGroupInfo *>( this );
6642     }
6643 
operator VkBindBufferMemoryDeviceGroupInfo&VULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo6644     explicit operator VkBindBufferMemoryDeviceGroupInfo &() VULKAN_HPP_NOEXCEPT
6645     {
6646       return *reinterpret_cast<VkBindBufferMemoryDeviceGroupInfo *>( this );
6647     }
6648 
6649 #if 14 <= VULKAN_HPP_CPP_VERSION
6650     auto
6651 #else
6652     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
6653                const void * const &,
6654                uint32_t const &,
6655                const uint32_t * const &>
6656 #endif
reflectVULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo6657       reflect() const VULKAN_HPP_NOEXCEPT
6658     {
6659       return std::tie( sType, pNext, deviceIndexCount, pDeviceIndices );
6660     }
6661 
6662 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
6663     auto operator<=>( BindBufferMemoryDeviceGroupInfo const & ) const = default;
6664 #else
operator ==VULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo6665     bool operator==( BindBufferMemoryDeviceGroupInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
6666     {
6667       return this->reflect() == rhs.reflect();
6668     }
6669 
operator !=VULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo6670     bool operator!=( BindBufferMemoryDeviceGroupInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
6671     {
6672       return this->reflect() != rhs.reflect();
6673     }
6674 #endif
6675 
6676   public:
6677     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::eBindBufferMemoryDeviceGroupInfo;
6678     const void *                        pNext            = {};
6679     uint32_t                            deviceIndexCount = {};
6680     const uint32_t *                    pDeviceIndices   = {};
6681   };
6682   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo ) ==
6683                               sizeof( VkBindBufferMemoryDeviceGroupInfo ),
6684                             "struct and wrapper have different size!" );
6685   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo>::value,
6686                             "struct wrapper is not a standard layout!" );
6687   VULKAN_HPP_STATIC_ASSERT(
6688     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo>::value,
6689     "BindBufferMemoryDeviceGroupInfo is not nothrow_move_constructible!" );
6690 
6691   template <>
6692   struct CppType<StructureType, StructureType::eBindBufferMemoryDeviceGroupInfo>
6693   {
6694     using Type = BindBufferMemoryDeviceGroupInfo;
6695   };
6696   using BindBufferMemoryDeviceGroupInfoKHR = BindBufferMemoryDeviceGroupInfo;
6697 
6698   struct BindBufferMemoryInfo
6699   {
6700     using NativeType = VkBindBufferMemoryInfo;
6701 
6702     static const bool                                  allowDuplicate = false;
6703     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBindBufferMemoryInfo;
6704 
6705 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindBufferMemoryInfoVULKAN_HPP_NAMESPACE::BindBufferMemoryInfo6706     VULKAN_HPP_CONSTEXPR BindBufferMemoryInfo( VULKAN_HPP_NAMESPACE::Buffer       buffer_     = {},
6707                                                VULKAN_HPP_NAMESPACE::DeviceMemory memory_     = {},
6708                                                VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ = {} ) VULKAN_HPP_NOEXCEPT
6709       : buffer( buffer_ )
6710       , memory( memory_ )
6711       , memoryOffset( memoryOffset_ )
6712     {}
6713 
6714     VULKAN_HPP_CONSTEXPR BindBufferMemoryInfo( BindBufferMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6715 
BindBufferMemoryInfoVULKAN_HPP_NAMESPACE::BindBufferMemoryInfo6716     BindBufferMemoryInfo( VkBindBufferMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT
6717       : BindBufferMemoryInfo( *reinterpret_cast<BindBufferMemoryInfo const *>( &rhs ) )
6718     {}
6719 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
6720 
6721     BindBufferMemoryInfo & operator=( BindBufferMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6722 
operator =VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo6723     BindBufferMemoryInfo & operator=( VkBindBufferMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT
6724     {
6725       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo const *>( &rhs );
6726       return *this;
6727     }
6728 
6729 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindBufferMemoryInfo6730     VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
6731     {
6732       pNext = pNext_;
6733       return *this;
6734     }
6735 
setBufferVULKAN_HPP_NAMESPACE::BindBufferMemoryInfo6736     VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryInfo & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
6737     {
6738       buffer = buffer_;
6739       return *this;
6740     }
6741 
6742     VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryInfo &
setMemoryVULKAN_HPP_NAMESPACE::BindBufferMemoryInfo6743                             setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
6744     {
6745       memory = memory_;
6746       return *this;
6747     }
6748 
6749     VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryInfo &
setMemoryOffsetVULKAN_HPP_NAMESPACE::BindBufferMemoryInfo6750                             setMemoryOffset( VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ ) VULKAN_HPP_NOEXCEPT
6751     {
6752       memoryOffset = memoryOffset_;
6753       return *this;
6754     }
6755 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
6756 
operator VkBindBufferMemoryInfo const&VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo6757     explicit operator VkBindBufferMemoryInfo const &() const VULKAN_HPP_NOEXCEPT
6758     {
6759       return *reinterpret_cast<const VkBindBufferMemoryInfo *>( this );
6760     }
6761 
operator VkBindBufferMemoryInfo&VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo6762     explicit operator VkBindBufferMemoryInfo &() VULKAN_HPP_NOEXCEPT
6763     {
6764       return *reinterpret_cast<VkBindBufferMemoryInfo *>( this );
6765     }
6766 
6767 #if 14 <= VULKAN_HPP_CPP_VERSION
6768     auto
6769 #else
6770     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
6771                const void * const &,
6772                VULKAN_HPP_NAMESPACE::Buffer const &,
6773                VULKAN_HPP_NAMESPACE::DeviceMemory const &,
6774                VULKAN_HPP_NAMESPACE::DeviceSize const &>
6775 #endif
reflectVULKAN_HPP_NAMESPACE::BindBufferMemoryInfo6776       reflect() const VULKAN_HPP_NOEXCEPT
6777     {
6778       return std::tie( sType, pNext, buffer, memory, memoryOffset );
6779     }
6780 
6781 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
6782     auto operator<=>( BindBufferMemoryInfo const & ) const = default;
6783 #else
operator ==VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo6784     bool operator==( BindBufferMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
6785     {
6786       return this->reflect() == rhs.reflect();
6787     }
6788 
operator !=VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo6789     bool operator!=( BindBufferMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
6790     {
6791       return this->reflect() != rhs.reflect();
6792     }
6793 #endif
6794 
6795   public:
6796     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::eBindBufferMemoryInfo;
6797     const void *                        pNext        = {};
6798     VULKAN_HPP_NAMESPACE::Buffer        buffer       = {};
6799     VULKAN_HPP_NAMESPACE::DeviceMemory  memory       = {};
6800     VULKAN_HPP_NAMESPACE::DeviceSize    memoryOffset = {};
6801   };
6802   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo ) == sizeof( VkBindBufferMemoryInfo ),
6803                             "struct and wrapper have different size!" );
6804   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo>::value,
6805                             "struct wrapper is not a standard layout!" );
6806   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo>::value,
6807                             "BindBufferMemoryInfo is not nothrow_move_constructible!" );
6808 
6809   template <>
6810   struct CppType<StructureType, StructureType::eBindBufferMemoryInfo>
6811   {
6812     using Type = BindBufferMemoryInfo;
6813   };
6814   using BindBufferMemoryInfoKHR = BindBufferMemoryInfo;
6815 
6816   struct Offset2D
6817   {
6818     using NativeType = VkOffset2D;
6819 
6820 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
Offset2DVULKAN_HPP_NAMESPACE::Offset2D6821     VULKAN_HPP_CONSTEXPR Offset2D( int32_t x_ = {}, int32_t y_ = {} ) VULKAN_HPP_NOEXCEPT
6822       : x( x_ )
6823       , y( y_ )
6824     {}
6825 
6826     VULKAN_HPP_CONSTEXPR Offset2D( Offset2D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6827 
Offset2DVULKAN_HPP_NAMESPACE::Offset2D6828     Offset2D( VkOffset2D const & rhs ) VULKAN_HPP_NOEXCEPT : Offset2D( *reinterpret_cast<Offset2D const *>( &rhs ) ) {}
6829 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
6830 
6831     Offset2D & operator=( Offset2D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6832 
operator =VULKAN_HPP_NAMESPACE::Offset2D6833     Offset2D & operator=( VkOffset2D const & rhs ) VULKAN_HPP_NOEXCEPT
6834     {
6835       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Offset2D const *>( &rhs );
6836       return *this;
6837     }
6838 
6839 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setXVULKAN_HPP_NAMESPACE::Offset2D6840     VULKAN_HPP_CONSTEXPR_14 Offset2D & setX( int32_t x_ ) VULKAN_HPP_NOEXCEPT
6841     {
6842       x = x_;
6843       return *this;
6844     }
6845 
setYVULKAN_HPP_NAMESPACE::Offset2D6846     VULKAN_HPP_CONSTEXPR_14 Offset2D & setY( int32_t y_ ) VULKAN_HPP_NOEXCEPT
6847     {
6848       y = y_;
6849       return *this;
6850     }
6851 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
6852 
operator VkOffset2D const&VULKAN_HPP_NAMESPACE::Offset2D6853     explicit operator VkOffset2D const &() const VULKAN_HPP_NOEXCEPT
6854     {
6855       return *reinterpret_cast<const VkOffset2D *>( this );
6856     }
6857 
operator VkOffset2D&VULKAN_HPP_NAMESPACE::Offset2D6858     explicit operator VkOffset2D &() VULKAN_HPP_NOEXCEPT
6859     {
6860       return *reinterpret_cast<VkOffset2D *>( this );
6861     }
6862 
6863 #if 14 <= VULKAN_HPP_CPP_VERSION
6864     auto
6865 #else
6866     std::tuple<int32_t const &, int32_t const &>
6867 #endif
reflectVULKAN_HPP_NAMESPACE::Offset2D6868       reflect() const VULKAN_HPP_NOEXCEPT
6869     {
6870       return std::tie( x, y );
6871     }
6872 
6873 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
6874     auto operator<=>( Offset2D const & ) const = default;
6875 #else
operator ==VULKAN_HPP_NAMESPACE::Offset2D6876     bool operator==( Offset2D const & rhs ) const VULKAN_HPP_NOEXCEPT
6877     {
6878       return this->reflect() == rhs.reflect();
6879     }
6880 
operator !=VULKAN_HPP_NAMESPACE::Offset2D6881     bool operator!=( Offset2D const & rhs ) const VULKAN_HPP_NOEXCEPT
6882     {
6883       return this->reflect() != rhs.reflect();
6884     }
6885 #endif
6886 
6887   public:
6888     int32_t x = {};
6889     int32_t y = {};
6890   };
6891   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Offset2D ) == sizeof( VkOffset2D ),
6892                             "struct and wrapper have different size!" );
6893   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::Offset2D>::value,
6894                             "struct wrapper is not a standard layout!" );
6895   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::Offset2D>::value,
6896                             "Offset2D is not nothrow_move_constructible!" );
6897 
6898   struct Rect2D
6899   {
6900     using NativeType = VkRect2D;
6901 
6902 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
Rect2DVULKAN_HPP_NAMESPACE::Rect2D6903     VULKAN_HPP_CONSTEXPR Rect2D( VULKAN_HPP_NAMESPACE::Offset2D offset_ = {},
6904                                  VULKAN_HPP_NAMESPACE::Extent2D extent_ = {} ) VULKAN_HPP_NOEXCEPT
6905       : offset( offset_ )
6906       , extent( extent_ )
6907     {}
6908 
6909     VULKAN_HPP_CONSTEXPR Rect2D( Rect2D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6910 
Rect2DVULKAN_HPP_NAMESPACE::Rect2D6911     Rect2D( VkRect2D const & rhs ) VULKAN_HPP_NOEXCEPT : Rect2D( *reinterpret_cast<Rect2D const *>( &rhs ) ) {}
6912 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
6913 
6914     Rect2D & operator=( Rect2D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6915 
operator =VULKAN_HPP_NAMESPACE::Rect2D6916     Rect2D & operator=( VkRect2D const & rhs ) VULKAN_HPP_NOEXCEPT
6917     {
6918       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Rect2D const *>( &rhs );
6919       return *this;
6920     }
6921 
6922 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setOffsetVULKAN_HPP_NAMESPACE::Rect2D6923     VULKAN_HPP_CONSTEXPR_14 Rect2D & setOffset( VULKAN_HPP_NAMESPACE::Offset2D const & offset_ ) VULKAN_HPP_NOEXCEPT
6924     {
6925       offset = offset_;
6926       return *this;
6927     }
6928 
setExtentVULKAN_HPP_NAMESPACE::Rect2D6929     VULKAN_HPP_CONSTEXPR_14 Rect2D & setExtent( VULKAN_HPP_NAMESPACE::Extent2D const & extent_ ) VULKAN_HPP_NOEXCEPT
6930     {
6931       extent = extent_;
6932       return *this;
6933     }
6934 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
6935 
operator VkRect2D const&VULKAN_HPP_NAMESPACE::Rect2D6936     explicit operator VkRect2D const &() const VULKAN_HPP_NOEXCEPT
6937     {
6938       return *reinterpret_cast<const VkRect2D *>( this );
6939     }
6940 
operator VkRect2D&VULKAN_HPP_NAMESPACE::Rect2D6941     explicit operator VkRect2D &() VULKAN_HPP_NOEXCEPT
6942     {
6943       return *reinterpret_cast<VkRect2D *>( this );
6944     }
6945 
6946 #if 14 <= VULKAN_HPP_CPP_VERSION
6947     auto
6948 #else
6949     std::tuple<VULKAN_HPP_NAMESPACE::Offset2D const &, VULKAN_HPP_NAMESPACE::Extent2D const &>
6950 #endif
reflectVULKAN_HPP_NAMESPACE::Rect2D6951       reflect() const VULKAN_HPP_NOEXCEPT
6952     {
6953       return std::tie( offset, extent );
6954     }
6955 
6956 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
6957     auto operator<=>( Rect2D const & ) const = default;
6958 #else
operator ==VULKAN_HPP_NAMESPACE::Rect2D6959     bool operator==( Rect2D const & rhs ) const VULKAN_HPP_NOEXCEPT
6960     {
6961       return this->reflect() == rhs.reflect();
6962     }
6963 
operator !=VULKAN_HPP_NAMESPACE::Rect2D6964     bool operator!=( Rect2D const & rhs ) const VULKAN_HPP_NOEXCEPT
6965     {
6966       return this->reflect() != rhs.reflect();
6967     }
6968 #endif
6969 
6970   public:
6971     VULKAN_HPP_NAMESPACE::Offset2D offset = {};
6972     VULKAN_HPP_NAMESPACE::Extent2D extent = {};
6973   };
6974   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Rect2D ) == sizeof( VkRect2D ),
6975                             "struct and wrapper have different size!" );
6976   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::Rect2D>::value,
6977                             "struct wrapper is not a standard layout!" );
6978   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::Rect2D>::value,
6979                             "Rect2D is not nothrow_move_constructible!" );
6980 
6981   struct BindImageMemoryDeviceGroupInfo
6982   {
6983     using NativeType = VkBindImageMemoryDeviceGroupInfo;
6984 
6985     static const bool                                  allowDuplicate = false;
6986     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBindImageMemoryDeviceGroupInfo;
6987 
6988 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindImageMemoryDeviceGroupInfoVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo6989     VULKAN_HPP_CONSTEXPR BindImageMemoryDeviceGroupInfo(
6990       uint32_t                             deviceIndexCount_             = {},
6991       const uint32_t *                     pDeviceIndices_               = {},
6992       uint32_t                             splitInstanceBindRegionCount_ = {},
6993       const VULKAN_HPP_NAMESPACE::Rect2D * pSplitInstanceBindRegions_    = {} ) VULKAN_HPP_NOEXCEPT
6994       : deviceIndexCount( deviceIndexCount_ )
6995       , pDeviceIndices( pDeviceIndices_ )
6996       , splitInstanceBindRegionCount( splitInstanceBindRegionCount_ )
6997       , pSplitInstanceBindRegions( pSplitInstanceBindRegions_ )
6998     {}
6999 
7000     VULKAN_HPP_CONSTEXPR
7001       BindImageMemoryDeviceGroupInfo( BindImageMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7002 
BindImageMemoryDeviceGroupInfoVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo7003     BindImageMemoryDeviceGroupInfo( VkBindImageMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT
7004       : BindImageMemoryDeviceGroupInfo( *reinterpret_cast<BindImageMemoryDeviceGroupInfo const *>( &rhs ) )
7005     {}
7006 
7007 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
BindImageMemoryDeviceGroupInfoVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo7008     BindImageMemoryDeviceGroupInfo(
7009       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & deviceIndices_,
7010       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const &
7011         splitInstanceBindRegions_ = {} )
7012       : deviceIndexCount( static_cast<uint32_t>( deviceIndices_.size() ) )
7013       , pDeviceIndices( deviceIndices_.data() )
7014       , splitInstanceBindRegionCount( static_cast<uint32_t>( splitInstanceBindRegions_.size() ) )
7015       , pSplitInstanceBindRegions( splitInstanceBindRegions_.data() )
7016     {}
7017 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
7018 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
7019 
7020     BindImageMemoryDeviceGroupInfo &
7021       operator=( BindImageMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7022 
operator =VULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo7023     BindImageMemoryDeviceGroupInfo & operator=( VkBindImageMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT
7024     {
7025       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo const *>( &rhs );
7026       return *this;
7027     }
7028 
7029 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo7030     VULKAN_HPP_CONSTEXPR_14 BindImageMemoryDeviceGroupInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
7031     {
7032       pNext = pNext_;
7033       return *this;
7034     }
7035 
7036     VULKAN_HPP_CONSTEXPR_14 BindImageMemoryDeviceGroupInfo &
setDeviceIndexCountVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo7037                             setDeviceIndexCount( uint32_t deviceIndexCount_ ) VULKAN_HPP_NOEXCEPT
7038     {
7039       deviceIndexCount = deviceIndexCount_;
7040       return *this;
7041     }
7042 
7043     VULKAN_HPP_CONSTEXPR_14 BindImageMemoryDeviceGroupInfo &
setPDeviceIndicesVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo7044                             setPDeviceIndices( const uint32_t * pDeviceIndices_ ) VULKAN_HPP_NOEXCEPT
7045     {
7046       pDeviceIndices = pDeviceIndices_;
7047       return *this;
7048     }
7049 
7050 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDeviceIndicesVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo7051     BindImageMemoryDeviceGroupInfo & setDeviceIndices(
7052       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & deviceIndices_ ) VULKAN_HPP_NOEXCEPT
7053     {
7054       deviceIndexCount = static_cast<uint32_t>( deviceIndices_.size() );
7055       pDeviceIndices   = deviceIndices_.data();
7056       return *this;
7057     }
7058 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
7059 
7060     VULKAN_HPP_CONSTEXPR_14 BindImageMemoryDeviceGroupInfo &
setSplitInstanceBindRegionCountVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo7061       setSplitInstanceBindRegionCount( uint32_t splitInstanceBindRegionCount_ ) VULKAN_HPP_NOEXCEPT
7062     {
7063       splitInstanceBindRegionCount = splitInstanceBindRegionCount_;
7064       return *this;
7065     }
7066 
setPSplitInstanceBindRegionsVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo7067     VULKAN_HPP_CONSTEXPR_14 BindImageMemoryDeviceGroupInfo & setPSplitInstanceBindRegions(
7068       const VULKAN_HPP_NAMESPACE::Rect2D * pSplitInstanceBindRegions_ ) VULKAN_HPP_NOEXCEPT
7069     {
7070       pSplitInstanceBindRegions = pSplitInstanceBindRegions_;
7071       return *this;
7072     }
7073 
7074 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSplitInstanceBindRegionsVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo7075     BindImageMemoryDeviceGroupInfo & setSplitInstanceBindRegions(
7076       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const &
7077         splitInstanceBindRegions_ ) VULKAN_HPP_NOEXCEPT
7078     {
7079       splitInstanceBindRegionCount = static_cast<uint32_t>( splitInstanceBindRegions_.size() );
7080       pSplitInstanceBindRegions    = splitInstanceBindRegions_.data();
7081       return *this;
7082     }
7083 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
7084 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
7085 
operator VkBindImageMemoryDeviceGroupInfo const&VULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo7086     explicit operator VkBindImageMemoryDeviceGroupInfo const &() const VULKAN_HPP_NOEXCEPT
7087     {
7088       return *reinterpret_cast<const VkBindImageMemoryDeviceGroupInfo *>( this );
7089     }
7090 
operator VkBindImageMemoryDeviceGroupInfo&VULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo7091     explicit operator VkBindImageMemoryDeviceGroupInfo &() VULKAN_HPP_NOEXCEPT
7092     {
7093       return *reinterpret_cast<VkBindImageMemoryDeviceGroupInfo *>( this );
7094     }
7095 
7096 #if 14 <= VULKAN_HPP_CPP_VERSION
7097     auto
7098 #else
7099     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
7100                const void * const &,
7101                uint32_t const &,
7102                const uint32_t * const &,
7103                uint32_t const &,
7104                const VULKAN_HPP_NAMESPACE::Rect2D * const &>
7105 #endif
reflectVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo7106       reflect() const VULKAN_HPP_NOEXCEPT
7107     {
7108       return std::tie(
7109         sType, pNext, deviceIndexCount, pDeviceIndices, splitInstanceBindRegionCount, pSplitInstanceBindRegions );
7110     }
7111 
7112 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
7113     auto operator<=>( BindImageMemoryDeviceGroupInfo const & ) const = default;
7114 #else
operator ==VULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo7115     bool operator==( BindImageMemoryDeviceGroupInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
7116     {
7117       return this->reflect() == rhs.reflect();
7118     }
7119 
operator !=VULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo7120     bool operator!=( BindImageMemoryDeviceGroupInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
7121     {
7122       return this->reflect() != rhs.reflect();
7123     }
7124 #endif
7125 
7126   public:
7127     VULKAN_HPP_NAMESPACE::StructureType  sType                        = StructureType::eBindImageMemoryDeviceGroupInfo;
7128     const void *                         pNext                        = {};
7129     uint32_t                             deviceIndexCount             = {};
7130     const uint32_t *                     pDeviceIndices               = {};
7131     uint32_t                             splitInstanceBindRegionCount = {};
7132     const VULKAN_HPP_NAMESPACE::Rect2D * pSplitInstanceBindRegions    = {};
7133   };
7134   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo ) ==
7135                               sizeof( VkBindImageMemoryDeviceGroupInfo ),
7136                             "struct and wrapper have different size!" );
7137   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo>::value,
7138                             "struct wrapper is not a standard layout!" );
7139   VULKAN_HPP_STATIC_ASSERT(
7140     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo>::value,
7141     "BindImageMemoryDeviceGroupInfo is not nothrow_move_constructible!" );
7142 
7143   template <>
7144   struct CppType<StructureType, StructureType::eBindImageMemoryDeviceGroupInfo>
7145   {
7146     using Type = BindImageMemoryDeviceGroupInfo;
7147   };
7148   using BindImageMemoryDeviceGroupInfoKHR = BindImageMemoryDeviceGroupInfo;
7149 
7150   struct BindImageMemoryInfo
7151   {
7152     using NativeType = VkBindImageMemoryInfo;
7153 
7154     static const bool                                  allowDuplicate = false;
7155     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBindImageMemoryInfo;
7156 
7157 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindImageMemoryInfoVULKAN_HPP_NAMESPACE::BindImageMemoryInfo7158     VULKAN_HPP_CONSTEXPR BindImageMemoryInfo( VULKAN_HPP_NAMESPACE::Image        image_      = {},
7159                                               VULKAN_HPP_NAMESPACE::DeviceMemory memory_     = {},
7160                                               VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ = {} ) VULKAN_HPP_NOEXCEPT
7161       : image( image_ )
7162       , memory( memory_ )
7163       , memoryOffset( memoryOffset_ )
7164     {}
7165 
7166     VULKAN_HPP_CONSTEXPR BindImageMemoryInfo( BindImageMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7167 
BindImageMemoryInfoVULKAN_HPP_NAMESPACE::BindImageMemoryInfo7168     BindImageMemoryInfo( VkBindImageMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT
7169       : BindImageMemoryInfo( *reinterpret_cast<BindImageMemoryInfo const *>( &rhs ) )
7170     {}
7171 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
7172 
7173     BindImageMemoryInfo & operator=( BindImageMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7174 
operator =VULKAN_HPP_NAMESPACE::BindImageMemoryInfo7175     BindImageMemoryInfo & operator=( VkBindImageMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT
7176     {
7177       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindImageMemoryInfo const *>( &rhs );
7178       return *this;
7179     }
7180 
7181 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindImageMemoryInfo7182     VULKAN_HPP_CONSTEXPR_14 BindImageMemoryInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
7183     {
7184       pNext = pNext_;
7185       return *this;
7186     }
7187 
setImageVULKAN_HPP_NAMESPACE::BindImageMemoryInfo7188     VULKAN_HPP_CONSTEXPR_14 BindImageMemoryInfo & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
7189     {
7190       image = image_;
7191       return *this;
7192     }
7193 
7194     VULKAN_HPP_CONSTEXPR_14 BindImageMemoryInfo &
setMemoryVULKAN_HPP_NAMESPACE::BindImageMemoryInfo7195                             setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
7196     {
7197       memory = memory_;
7198       return *this;
7199     }
7200 
7201     VULKAN_HPP_CONSTEXPR_14 BindImageMemoryInfo &
setMemoryOffsetVULKAN_HPP_NAMESPACE::BindImageMemoryInfo7202                             setMemoryOffset( VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ ) VULKAN_HPP_NOEXCEPT
7203     {
7204       memoryOffset = memoryOffset_;
7205       return *this;
7206     }
7207 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
7208 
operator VkBindImageMemoryInfo const&VULKAN_HPP_NAMESPACE::BindImageMemoryInfo7209     explicit operator VkBindImageMemoryInfo const &() const VULKAN_HPP_NOEXCEPT
7210     {
7211       return *reinterpret_cast<const VkBindImageMemoryInfo *>( this );
7212     }
7213 
operator VkBindImageMemoryInfo&VULKAN_HPP_NAMESPACE::BindImageMemoryInfo7214     explicit operator VkBindImageMemoryInfo &() VULKAN_HPP_NOEXCEPT
7215     {
7216       return *reinterpret_cast<VkBindImageMemoryInfo *>( this );
7217     }
7218 
7219 #if 14 <= VULKAN_HPP_CPP_VERSION
7220     auto
7221 #else
7222     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
7223                const void * const &,
7224                VULKAN_HPP_NAMESPACE::Image const &,
7225                VULKAN_HPP_NAMESPACE::DeviceMemory const &,
7226                VULKAN_HPP_NAMESPACE::DeviceSize const &>
7227 #endif
reflectVULKAN_HPP_NAMESPACE::BindImageMemoryInfo7228       reflect() const VULKAN_HPP_NOEXCEPT
7229     {
7230       return std::tie( sType, pNext, image, memory, memoryOffset );
7231     }
7232 
7233 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
7234     auto operator<=>( BindImageMemoryInfo const & ) const = default;
7235 #else
operator ==VULKAN_HPP_NAMESPACE::BindImageMemoryInfo7236     bool operator==( BindImageMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
7237     {
7238       return this->reflect() == rhs.reflect();
7239     }
7240 
operator !=VULKAN_HPP_NAMESPACE::BindImageMemoryInfo7241     bool operator!=( BindImageMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
7242     {
7243       return this->reflect() != rhs.reflect();
7244     }
7245 #endif
7246 
7247   public:
7248     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::eBindImageMemoryInfo;
7249     const void *                        pNext        = {};
7250     VULKAN_HPP_NAMESPACE::Image         image        = {};
7251     VULKAN_HPP_NAMESPACE::DeviceMemory  memory       = {};
7252     VULKAN_HPP_NAMESPACE::DeviceSize    memoryOffset = {};
7253   };
7254   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindImageMemoryInfo ) == sizeof( VkBindImageMemoryInfo ),
7255                             "struct and wrapper have different size!" );
7256   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::BindImageMemoryInfo>::value,
7257                             "struct wrapper is not a standard layout!" );
7258   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::BindImageMemoryInfo>::value,
7259                             "BindImageMemoryInfo is not nothrow_move_constructible!" );
7260 
7261   template <>
7262   struct CppType<StructureType, StructureType::eBindImageMemoryInfo>
7263   {
7264     using Type = BindImageMemoryInfo;
7265   };
7266   using BindImageMemoryInfoKHR = BindImageMemoryInfo;
7267 
7268   struct BindImageMemorySwapchainInfoKHR
7269   {
7270     using NativeType = VkBindImageMemorySwapchainInfoKHR;
7271 
7272     static const bool                                  allowDuplicate = false;
7273     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBindImageMemorySwapchainInfoKHR;
7274 
7275 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindImageMemorySwapchainInfoKHRVULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR7276     VULKAN_HPP_CONSTEXPR BindImageMemorySwapchainInfoKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_ = {},
7277                                                           uint32_t imageIndex_ = {} ) VULKAN_HPP_NOEXCEPT
7278       : swapchain( swapchain_ )
7279       , imageIndex( imageIndex_ )
7280     {}
7281 
7282     VULKAN_HPP_CONSTEXPR
7283       BindImageMemorySwapchainInfoKHR( BindImageMemorySwapchainInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7284 
BindImageMemorySwapchainInfoKHRVULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR7285     BindImageMemorySwapchainInfoKHR( VkBindImageMemorySwapchainInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
7286       : BindImageMemorySwapchainInfoKHR( *reinterpret_cast<BindImageMemorySwapchainInfoKHR const *>( &rhs ) )
7287     {}
7288 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
7289 
7290     BindImageMemorySwapchainInfoKHR &
7291       operator=( BindImageMemorySwapchainInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7292 
operator =VULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR7293     BindImageMemorySwapchainInfoKHR & operator=( VkBindImageMemorySwapchainInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
7294     {
7295       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR const *>( &rhs );
7296       return *this;
7297     }
7298 
7299 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR7300     VULKAN_HPP_CONSTEXPR_14 BindImageMemorySwapchainInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
7301     {
7302       pNext = pNext_;
7303       return *this;
7304     }
7305 
7306     VULKAN_HPP_CONSTEXPR_14 BindImageMemorySwapchainInfoKHR &
setSwapchainVULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR7307                             setSwapchain( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_ ) VULKAN_HPP_NOEXCEPT
7308     {
7309       swapchain = swapchain_;
7310       return *this;
7311     }
7312 
setImageIndexVULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR7313     VULKAN_HPP_CONSTEXPR_14 BindImageMemorySwapchainInfoKHR & setImageIndex( uint32_t imageIndex_ ) VULKAN_HPP_NOEXCEPT
7314     {
7315       imageIndex = imageIndex_;
7316       return *this;
7317     }
7318 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
7319 
operator VkBindImageMemorySwapchainInfoKHR const&VULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR7320     explicit operator VkBindImageMemorySwapchainInfoKHR const &() const VULKAN_HPP_NOEXCEPT
7321     {
7322       return *reinterpret_cast<const VkBindImageMemorySwapchainInfoKHR *>( this );
7323     }
7324 
operator VkBindImageMemorySwapchainInfoKHR&VULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR7325     explicit operator VkBindImageMemorySwapchainInfoKHR &() VULKAN_HPP_NOEXCEPT
7326     {
7327       return *reinterpret_cast<VkBindImageMemorySwapchainInfoKHR *>( this );
7328     }
7329 
7330 #if 14 <= VULKAN_HPP_CPP_VERSION
7331     auto
7332 #else
7333     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
7334                const void * const &,
7335                VULKAN_HPP_NAMESPACE::SwapchainKHR const &,
7336                uint32_t const &>
7337 #endif
reflectVULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR7338       reflect() const VULKAN_HPP_NOEXCEPT
7339     {
7340       return std::tie( sType, pNext, swapchain, imageIndex );
7341     }
7342 
7343 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
7344     auto operator<=>( BindImageMemorySwapchainInfoKHR const & ) const = default;
7345 #else
operator ==VULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR7346     bool operator==( BindImageMemorySwapchainInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
7347     {
7348       return this->reflect() == rhs.reflect();
7349     }
7350 
operator !=VULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR7351     bool operator!=( BindImageMemorySwapchainInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
7352     {
7353       return this->reflect() != rhs.reflect();
7354     }
7355 #endif
7356 
7357   public:
7358     VULKAN_HPP_NAMESPACE::StructureType sType      = StructureType::eBindImageMemorySwapchainInfoKHR;
7359     const void *                        pNext      = {};
7360     VULKAN_HPP_NAMESPACE::SwapchainKHR  swapchain  = {};
7361     uint32_t                            imageIndex = {};
7362   };
7363   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR ) ==
7364                               sizeof( VkBindImageMemorySwapchainInfoKHR ),
7365                             "struct and wrapper have different size!" );
7366   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR>::value,
7367                             "struct wrapper is not a standard layout!" );
7368   VULKAN_HPP_STATIC_ASSERT(
7369     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR>::value,
7370     "BindImageMemorySwapchainInfoKHR is not nothrow_move_constructible!" );
7371 
7372   template <>
7373   struct CppType<StructureType, StructureType::eBindImageMemorySwapchainInfoKHR>
7374   {
7375     using Type = BindImageMemorySwapchainInfoKHR;
7376   };
7377 
7378   struct BindImagePlaneMemoryInfo
7379   {
7380     using NativeType = VkBindImagePlaneMemoryInfo;
7381 
7382     static const bool                                  allowDuplicate = false;
7383     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBindImagePlaneMemoryInfo;
7384 
7385 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
7386     VULKAN_HPP_CONSTEXPR
BindImagePlaneMemoryInfoVULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo7387       BindImagePlaneMemoryInfo( VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect_ =
7388                                   VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor ) VULKAN_HPP_NOEXCEPT
7389       : planeAspect( planeAspect_ )
7390     {}
7391 
7392     VULKAN_HPP_CONSTEXPR BindImagePlaneMemoryInfo( BindImagePlaneMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7393 
BindImagePlaneMemoryInfoVULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo7394     BindImagePlaneMemoryInfo( VkBindImagePlaneMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT
7395       : BindImagePlaneMemoryInfo( *reinterpret_cast<BindImagePlaneMemoryInfo const *>( &rhs ) )
7396     {}
7397 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
7398 
7399     BindImagePlaneMemoryInfo & operator=( BindImagePlaneMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7400 
operator =VULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo7401     BindImagePlaneMemoryInfo & operator=( VkBindImagePlaneMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT
7402     {
7403       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo const *>( &rhs );
7404       return *this;
7405     }
7406 
7407 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo7408     VULKAN_HPP_CONSTEXPR_14 BindImagePlaneMemoryInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
7409     {
7410       pNext = pNext_;
7411       return *this;
7412     }
7413 
7414     VULKAN_HPP_CONSTEXPR_14 BindImagePlaneMemoryInfo &
setPlaneAspectVULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo7415                             setPlaneAspect( VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect_ ) VULKAN_HPP_NOEXCEPT
7416     {
7417       planeAspect = planeAspect_;
7418       return *this;
7419     }
7420 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
7421 
operator VkBindImagePlaneMemoryInfo const&VULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo7422     explicit operator VkBindImagePlaneMemoryInfo const &() const VULKAN_HPP_NOEXCEPT
7423     {
7424       return *reinterpret_cast<const VkBindImagePlaneMemoryInfo *>( this );
7425     }
7426 
operator VkBindImagePlaneMemoryInfo&VULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo7427     explicit operator VkBindImagePlaneMemoryInfo &() VULKAN_HPP_NOEXCEPT
7428     {
7429       return *reinterpret_cast<VkBindImagePlaneMemoryInfo *>( this );
7430     }
7431 
7432 #if 14 <= VULKAN_HPP_CPP_VERSION
7433     auto
7434 #else
7435     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
7436                const void * const &,
7437                VULKAN_HPP_NAMESPACE::ImageAspectFlagBits const &>
7438 #endif
reflectVULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo7439       reflect() const VULKAN_HPP_NOEXCEPT
7440     {
7441       return std::tie( sType, pNext, planeAspect );
7442     }
7443 
7444 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
7445     auto operator<=>( BindImagePlaneMemoryInfo const & ) const = default;
7446 #else
operator ==VULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo7447     bool operator==( BindImagePlaneMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
7448     {
7449       return this->reflect() == rhs.reflect();
7450     }
7451 
operator !=VULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo7452     bool operator!=( BindImagePlaneMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
7453     {
7454       return this->reflect() != rhs.reflect();
7455     }
7456 #endif
7457 
7458   public:
7459     VULKAN_HPP_NAMESPACE::StructureType       sType       = StructureType::eBindImagePlaneMemoryInfo;
7460     const void *                              pNext       = {};
7461     VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor;
7462   };
7463   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo ) ==
7464                               sizeof( VkBindImagePlaneMemoryInfo ),
7465                             "struct and wrapper have different size!" );
7466   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo>::value,
7467                             "struct wrapper is not a standard layout!" );
7468   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo>::value,
7469                             "BindImagePlaneMemoryInfo is not nothrow_move_constructible!" );
7470 
7471   template <>
7472   struct CppType<StructureType, StructureType::eBindImagePlaneMemoryInfo>
7473   {
7474     using Type = BindImagePlaneMemoryInfo;
7475   };
7476   using BindImagePlaneMemoryInfoKHR = BindImagePlaneMemoryInfo;
7477 
7478   struct BindIndexBufferIndirectCommandNV
7479   {
7480     using NativeType = VkBindIndexBufferIndirectCommandNV;
7481 
7482 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindIndexBufferIndirectCommandNVVULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV7483     VULKAN_HPP_CONSTEXPR BindIndexBufferIndirectCommandNV(
7484       VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress_ = {},
7485       uint32_t                            size_          = {},
7486       VULKAN_HPP_NAMESPACE::IndexType     indexType_ = VULKAN_HPP_NAMESPACE::IndexType::eUint16 ) VULKAN_HPP_NOEXCEPT
7487       : bufferAddress( bufferAddress_ )
7488       , size( size_ )
7489       , indexType( indexType_ )
7490     {}
7491 
7492     VULKAN_HPP_CONSTEXPR
7493       BindIndexBufferIndirectCommandNV( BindIndexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7494 
BindIndexBufferIndirectCommandNVVULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV7495     BindIndexBufferIndirectCommandNV( VkBindIndexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
7496       : BindIndexBufferIndirectCommandNV( *reinterpret_cast<BindIndexBufferIndirectCommandNV const *>( &rhs ) )
7497     {}
7498 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
7499 
7500     BindIndexBufferIndirectCommandNV &
7501       operator=( BindIndexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7502 
operator =VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV7503     BindIndexBufferIndirectCommandNV & operator=( VkBindIndexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
7504     {
7505       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV const *>( &rhs );
7506       return *this;
7507     }
7508 
7509 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
7510     VULKAN_HPP_CONSTEXPR_14 BindIndexBufferIndirectCommandNV &
setBufferAddressVULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV7511                             setBufferAddress( VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress_ ) VULKAN_HPP_NOEXCEPT
7512     {
7513       bufferAddress = bufferAddress_;
7514       return *this;
7515     }
7516 
setSizeVULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV7517     VULKAN_HPP_CONSTEXPR_14 BindIndexBufferIndirectCommandNV & setSize( uint32_t size_ ) VULKAN_HPP_NOEXCEPT
7518     {
7519       size = size_;
7520       return *this;
7521     }
7522 
7523     VULKAN_HPP_CONSTEXPR_14 BindIndexBufferIndirectCommandNV &
setIndexTypeVULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV7524                             setIndexType( VULKAN_HPP_NAMESPACE::IndexType indexType_ ) VULKAN_HPP_NOEXCEPT
7525     {
7526       indexType = indexType_;
7527       return *this;
7528     }
7529 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
7530 
operator VkBindIndexBufferIndirectCommandNV const&VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV7531     explicit operator VkBindIndexBufferIndirectCommandNV const &() const VULKAN_HPP_NOEXCEPT
7532     {
7533       return *reinterpret_cast<const VkBindIndexBufferIndirectCommandNV *>( this );
7534     }
7535 
operator VkBindIndexBufferIndirectCommandNV&VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV7536     explicit operator VkBindIndexBufferIndirectCommandNV &() VULKAN_HPP_NOEXCEPT
7537     {
7538       return *reinterpret_cast<VkBindIndexBufferIndirectCommandNV *>( this );
7539     }
7540 
7541 #if 14 <= VULKAN_HPP_CPP_VERSION
7542     auto
7543 #else
7544     std::tuple<VULKAN_HPP_NAMESPACE::DeviceAddress const &, uint32_t const &, VULKAN_HPP_NAMESPACE::IndexType const &>
7545 #endif
reflectVULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV7546       reflect() const VULKAN_HPP_NOEXCEPT
7547     {
7548       return std::tie( bufferAddress, size, indexType );
7549     }
7550 
7551 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
7552     auto operator<=>( BindIndexBufferIndirectCommandNV const & ) const = default;
7553 #else
operator ==VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV7554     bool operator==( BindIndexBufferIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
7555     {
7556       return this->reflect() == rhs.reflect();
7557     }
7558 
operator !=VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV7559     bool operator!=( BindIndexBufferIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
7560     {
7561       return this->reflect() != rhs.reflect();
7562     }
7563 #endif
7564 
7565   public:
7566     VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress = {};
7567     uint32_t                            size          = {};
7568     VULKAN_HPP_NAMESPACE::IndexType     indexType     = VULKAN_HPP_NAMESPACE::IndexType::eUint16;
7569   };
7570   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV ) ==
7571                               sizeof( VkBindIndexBufferIndirectCommandNV ),
7572                             "struct and wrapper have different size!" );
7573   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV>::value,
7574                             "struct wrapper is not a standard layout!" );
7575   VULKAN_HPP_STATIC_ASSERT(
7576     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV>::value,
7577     "BindIndexBufferIndirectCommandNV is not nothrow_move_constructible!" );
7578 
7579   struct BindShaderGroupIndirectCommandNV
7580   {
7581     using NativeType = VkBindShaderGroupIndirectCommandNV;
7582 
7583 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindShaderGroupIndirectCommandNVVULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV7584     VULKAN_HPP_CONSTEXPR BindShaderGroupIndirectCommandNV( uint32_t groupIndex_ = {} ) VULKAN_HPP_NOEXCEPT
7585       : groupIndex( groupIndex_ )
7586     {}
7587 
7588     VULKAN_HPP_CONSTEXPR
7589       BindShaderGroupIndirectCommandNV( BindShaderGroupIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7590 
BindShaderGroupIndirectCommandNVVULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV7591     BindShaderGroupIndirectCommandNV( VkBindShaderGroupIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
7592       : BindShaderGroupIndirectCommandNV( *reinterpret_cast<BindShaderGroupIndirectCommandNV const *>( &rhs ) )
7593     {}
7594 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
7595 
7596     BindShaderGroupIndirectCommandNV &
7597       operator=( BindShaderGroupIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7598 
operator =VULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV7599     BindShaderGroupIndirectCommandNV & operator=( VkBindShaderGroupIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
7600     {
7601       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV const *>( &rhs );
7602       return *this;
7603     }
7604 
7605 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setGroupIndexVULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV7606     VULKAN_HPP_CONSTEXPR_14 BindShaderGroupIndirectCommandNV & setGroupIndex( uint32_t groupIndex_ ) VULKAN_HPP_NOEXCEPT
7607     {
7608       groupIndex = groupIndex_;
7609       return *this;
7610     }
7611 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
7612 
operator VkBindShaderGroupIndirectCommandNV const&VULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV7613     explicit operator VkBindShaderGroupIndirectCommandNV const &() const VULKAN_HPP_NOEXCEPT
7614     {
7615       return *reinterpret_cast<const VkBindShaderGroupIndirectCommandNV *>( this );
7616     }
7617 
operator VkBindShaderGroupIndirectCommandNV&VULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV7618     explicit operator VkBindShaderGroupIndirectCommandNV &() VULKAN_HPP_NOEXCEPT
7619     {
7620       return *reinterpret_cast<VkBindShaderGroupIndirectCommandNV *>( this );
7621     }
7622 
7623 #if 14 <= VULKAN_HPP_CPP_VERSION
7624     auto
7625 #else
7626     std::tuple<uint32_t const &>
7627 #endif
reflectVULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV7628       reflect() const VULKAN_HPP_NOEXCEPT
7629     {
7630       return std::tie( groupIndex );
7631     }
7632 
7633 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
7634     auto operator<=>( BindShaderGroupIndirectCommandNV const & ) const = default;
7635 #else
operator ==VULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV7636     bool operator==( BindShaderGroupIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
7637     {
7638       return this->reflect() == rhs.reflect();
7639     }
7640 
operator !=VULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV7641     bool operator!=( BindShaderGroupIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
7642     {
7643       return this->reflect() != rhs.reflect();
7644     }
7645 #endif
7646 
7647   public:
7648     uint32_t groupIndex = {};
7649   };
7650   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV ) ==
7651                               sizeof( VkBindShaderGroupIndirectCommandNV ),
7652                             "struct and wrapper have different size!" );
7653   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV>::value,
7654                             "struct wrapper is not a standard layout!" );
7655   VULKAN_HPP_STATIC_ASSERT(
7656     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV>::value,
7657     "BindShaderGroupIndirectCommandNV is not nothrow_move_constructible!" );
7658 
7659   struct SparseMemoryBind
7660   {
7661     using NativeType = VkSparseMemoryBind;
7662 
7663 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SparseMemoryBindVULKAN_HPP_NAMESPACE::SparseMemoryBind7664     VULKAN_HPP_CONSTEXPR SparseMemoryBind( VULKAN_HPP_NAMESPACE::DeviceSize            resourceOffset_ = {},
7665                                            VULKAN_HPP_NAMESPACE::DeviceSize            size_           = {},
7666                                            VULKAN_HPP_NAMESPACE::DeviceMemory          memory_         = {},
7667                                            VULKAN_HPP_NAMESPACE::DeviceSize            memoryOffset_   = {},
7668                                            VULKAN_HPP_NAMESPACE::SparseMemoryBindFlags flags_ = {} ) VULKAN_HPP_NOEXCEPT
7669       : resourceOffset( resourceOffset_ )
7670       , size( size_ )
7671       , memory( memory_ )
7672       , memoryOffset( memoryOffset_ )
7673       , flags( flags_ )
7674     {}
7675 
7676     VULKAN_HPP_CONSTEXPR SparseMemoryBind( SparseMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7677 
SparseMemoryBindVULKAN_HPP_NAMESPACE::SparseMemoryBind7678     SparseMemoryBind( VkSparseMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT
7679       : SparseMemoryBind( *reinterpret_cast<SparseMemoryBind const *>( &rhs ) )
7680     {}
7681 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
7682 
7683     SparseMemoryBind & operator=( SparseMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7684 
operator =VULKAN_HPP_NAMESPACE::SparseMemoryBind7685     SparseMemoryBind & operator=( VkSparseMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT
7686     {
7687       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SparseMemoryBind const *>( &rhs );
7688       return *this;
7689     }
7690 
7691 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
7692     VULKAN_HPP_CONSTEXPR_14 SparseMemoryBind &
setResourceOffsetVULKAN_HPP_NAMESPACE::SparseMemoryBind7693                             setResourceOffset( VULKAN_HPP_NAMESPACE::DeviceSize resourceOffset_ ) VULKAN_HPP_NOEXCEPT
7694     {
7695       resourceOffset = resourceOffset_;
7696       return *this;
7697     }
7698 
setSizeVULKAN_HPP_NAMESPACE::SparseMemoryBind7699     VULKAN_HPP_CONSTEXPR_14 SparseMemoryBind & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
7700     {
7701       size = size_;
7702       return *this;
7703     }
7704 
7705     VULKAN_HPP_CONSTEXPR_14 SparseMemoryBind &
setMemoryVULKAN_HPP_NAMESPACE::SparseMemoryBind7706                             setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
7707     {
7708       memory = memory_;
7709       return *this;
7710     }
7711 
7712     VULKAN_HPP_CONSTEXPR_14 SparseMemoryBind &
setMemoryOffsetVULKAN_HPP_NAMESPACE::SparseMemoryBind7713                             setMemoryOffset( VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ ) VULKAN_HPP_NOEXCEPT
7714     {
7715       memoryOffset = memoryOffset_;
7716       return *this;
7717     }
7718 
7719     VULKAN_HPP_CONSTEXPR_14 SparseMemoryBind &
setFlagsVULKAN_HPP_NAMESPACE::SparseMemoryBind7720                             setFlags( VULKAN_HPP_NAMESPACE::SparseMemoryBindFlags flags_ ) VULKAN_HPP_NOEXCEPT
7721     {
7722       flags = flags_;
7723       return *this;
7724     }
7725 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
7726 
operator VkSparseMemoryBind const&VULKAN_HPP_NAMESPACE::SparseMemoryBind7727     explicit operator VkSparseMemoryBind const &() const VULKAN_HPP_NOEXCEPT
7728     {
7729       return *reinterpret_cast<const VkSparseMemoryBind *>( this );
7730     }
7731 
operator VkSparseMemoryBind&VULKAN_HPP_NAMESPACE::SparseMemoryBind7732     explicit operator VkSparseMemoryBind &() VULKAN_HPP_NOEXCEPT
7733     {
7734       return *reinterpret_cast<VkSparseMemoryBind *>( this );
7735     }
7736 
7737 #if 14 <= VULKAN_HPP_CPP_VERSION
7738     auto
7739 #else
7740     std::tuple<VULKAN_HPP_NAMESPACE::DeviceSize const &,
7741                VULKAN_HPP_NAMESPACE::DeviceSize const &,
7742                VULKAN_HPP_NAMESPACE::DeviceMemory const &,
7743                VULKAN_HPP_NAMESPACE::DeviceSize const &,
7744                VULKAN_HPP_NAMESPACE::SparseMemoryBindFlags const &>
7745 #endif
reflectVULKAN_HPP_NAMESPACE::SparseMemoryBind7746       reflect() const VULKAN_HPP_NOEXCEPT
7747     {
7748       return std::tie( resourceOffset, size, memory, memoryOffset, flags );
7749     }
7750 
7751 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
7752     auto operator<=>( SparseMemoryBind const & ) const = default;
7753 #else
operator ==VULKAN_HPP_NAMESPACE::SparseMemoryBind7754     bool operator==( SparseMemoryBind const & rhs ) const VULKAN_HPP_NOEXCEPT
7755     {
7756       return this->reflect() == rhs.reflect();
7757     }
7758 
operator !=VULKAN_HPP_NAMESPACE::SparseMemoryBind7759     bool operator!=( SparseMemoryBind const & rhs ) const VULKAN_HPP_NOEXCEPT
7760     {
7761       return this->reflect() != rhs.reflect();
7762     }
7763 #endif
7764 
7765   public:
7766     VULKAN_HPP_NAMESPACE::DeviceSize            resourceOffset = {};
7767     VULKAN_HPP_NAMESPACE::DeviceSize            size           = {};
7768     VULKAN_HPP_NAMESPACE::DeviceMemory          memory         = {};
7769     VULKAN_HPP_NAMESPACE::DeviceSize            memoryOffset   = {};
7770     VULKAN_HPP_NAMESPACE::SparseMemoryBindFlags flags          = {};
7771   };
7772   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SparseMemoryBind ) == sizeof( VkSparseMemoryBind ),
7773                             "struct and wrapper have different size!" );
7774   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SparseMemoryBind>::value,
7775                             "struct wrapper is not a standard layout!" );
7776   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SparseMemoryBind>::value,
7777                             "SparseMemoryBind is not nothrow_move_constructible!" );
7778 
7779   struct SparseBufferMemoryBindInfo
7780   {
7781     using NativeType = VkSparseBufferMemoryBindInfo;
7782 
7783 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
7784     VULKAN_HPP_CONSTEXPR
SparseBufferMemoryBindInfoVULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo7785       SparseBufferMemoryBindInfo( VULKAN_HPP_NAMESPACE::Buffer                   buffer_    = {},
7786                                   uint32_t                                       bindCount_ = {},
7787                                   const VULKAN_HPP_NAMESPACE::SparseMemoryBind * pBinds_    = {} ) VULKAN_HPP_NOEXCEPT
7788       : buffer( buffer_ )
7789       , bindCount( bindCount_ )
7790       , pBinds( pBinds_ )
7791     {}
7792 
7793     VULKAN_HPP_CONSTEXPR
7794       SparseBufferMemoryBindInfo( SparseBufferMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7795 
SparseBufferMemoryBindInfoVULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo7796     SparseBufferMemoryBindInfo( VkSparseBufferMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT
7797       : SparseBufferMemoryBindInfo( *reinterpret_cast<SparseBufferMemoryBindInfo const *>( &rhs ) )
7798     {}
7799 
7800 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SparseBufferMemoryBindInfoVULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo7801     SparseBufferMemoryBindInfo(
7802       VULKAN_HPP_NAMESPACE::Buffer                                                                        buffer_,
7803       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseMemoryBind> const & binds_ )
7804       : buffer( buffer_ ), bindCount( static_cast<uint32_t>( binds_.size() ) ), pBinds( binds_.data() )
7805     {}
7806 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
7807 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
7808 
7809     SparseBufferMemoryBindInfo & operator=( SparseBufferMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7810 
operator =VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo7811     SparseBufferMemoryBindInfo & operator=( VkSparseBufferMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT
7812     {
7813       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo const *>( &rhs );
7814       return *this;
7815     }
7816 
7817 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
7818     VULKAN_HPP_CONSTEXPR_14 SparseBufferMemoryBindInfo &
setBufferVULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo7819                             setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
7820     {
7821       buffer = buffer_;
7822       return *this;
7823     }
7824 
setBindCountVULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo7825     VULKAN_HPP_CONSTEXPR_14 SparseBufferMemoryBindInfo & setBindCount( uint32_t bindCount_ ) VULKAN_HPP_NOEXCEPT
7826     {
7827       bindCount = bindCount_;
7828       return *this;
7829     }
7830 
7831     VULKAN_HPP_CONSTEXPR_14 SparseBufferMemoryBindInfo &
setPBindsVULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo7832                             setPBinds( const VULKAN_HPP_NAMESPACE::SparseMemoryBind * pBinds_ ) VULKAN_HPP_NOEXCEPT
7833     {
7834       pBinds = pBinds_;
7835       return *this;
7836     }
7837 
7838 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setBindsVULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo7839     SparseBufferMemoryBindInfo & setBinds(
7840       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseMemoryBind> const & binds_ )
7841       VULKAN_HPP_NOEXCEPT
7842     {
7843       bindCount = static_cast<uint32_t>( binds_.size() );
7844       pBinds    = binds_.data();
7845       return *this;
7846     }
7847 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
7848 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
7849 
operator VkSparseBufferMemoryBindInfo const&VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo7850     explicit operator VkSparseBufferMemoryBindInfo const &() const VULKAN_HPP_NOEXCEPT
7851     {
7852       return *reinterpret_cast<const VkSparseBufferMemoryBindInfo *>( this );
7853     }
7854 
operator VkSparseBufferMemoryBindInfo&VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo7855     explicit operator VkSparseBufferMemoryBindInfo &() VULKAN_HPP_NOEXCEPT
7856     {
7857       return *reinterpret_cast<VkSparseBufferMemoryBindInfo *>( this );
7858     }
7859 
7860 #if 14 <= VULKAN_HPP_CPP_VERSION
7861     auto
7862 #else
7863     std::tuple<VULKAN_HPP_NAMESPACE::Buffer const &,
7864                uint32_t const &,
7865                const VULKAN_HPP_NAMESPACE::SparseMemoryBind * const &>
7866 #endif
reflectVULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo7867       reflect() const VULKAN_HPP_NOEXCEPT
7868     {
7869       return std::tie( buffer, bindCount, pBinds );
7870     }
7871 
7872 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
7873     auto operator<=>( SparseBufferMemoryBindInfo const & ) const = default;
7874 #else
operator ==VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo7875     bool operator==( SparseBufferMemoryBindInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
7876     {
7877       return this->reflect() == rhs.reflect();
7878     }
7879 
operator !=VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo7880     bool operator!=( SparseBufferMemoryBindInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
7881     {
7882       return this->reflect() != rhs.reflect();
7883     }
7884 #endif
7885 
7886   public:
7887     VULKAN_HPP_NAMESPACE::Buffer                   buffer    = {};
7888     uint32_t                                       bindCount = {};
7889     const VULKAN_HPP_NAMESPACE::SparseMemoryBind * pBinds    = {};
7890   };
7891   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo ) ==
7892                               sizeof( VkSparseBufferMemoryBindInfo ),
7893                             "struct and wrapper have different size!" );
7894   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo>::value,
7895                             "struct wrapper is not a standard layout!" );
7896   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo>::value,
7897                             "SparseBufferMemoryBindInfo is not nothrow_move_constructible!" );
7898 
7899   struct SparseImageOpaqueMemoryBindInfo
7900   {
7901     using NativeType = VkSparseImageOpaqueMemoryBindInfo;
7902 
7903 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
7904     VULKAN_HPP_CONSTEXPR
SparseImageOpaqueMemoryBindInfoVULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo7905       SparseImageOpaqueMemoryBindInfo( VULKAN_HPP_NAMESPACE::Image                    image_     = {},
7906                                        uint32_t                                       bindCount_ = {},
7907                                        const VULKAN_HPP_NAMESPACE::SparseMemoryBind * pBinds_ = {} ) VULKAN_HPP_NOEXCEPT
7908       : image( image_ )
7909       , bindCount( bindCount_ )
7910       , pBinds( pBinds_ )
7911     {}
7912 
7913     VULKAN_HPP_CONSTEXPR
7914       SparseImageOpaqueMemoryBindInfo( SparseImageOpaqueMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7915 
SparseImageOpaqueMemoryBindInfoVULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo7916     SparseImageOpaqueMemoryBindInfo( VkSparseImageOpaqueMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT
7917       : SparseImageOpaqueMemoryBindInfo( *reinterpret_cast<SparseImageOpaqueMemoryBindInfo const *>( &rhs ) )
7918     {}
7919 
7920 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SparseImageOpaqueMemoryBindInfoVULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo7921     SparseImageOpaqueMemoryBindInfo(
7922       VULKAN_HPP_NAMESPACE::Image                                                                         image_,
7923       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseMemoryBind> const & binds_ )
7924       : image( image_ ), bindCount( static_cast<uint32_t>( binds_.size() ) ), pBinds( binds_.data() )
7925     {}
7926 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
7927 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
7928 
7929     SparseImageOpaqueMemoryBindInfo &
7930       operator=( SparseImageOpaqueMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7931 
operator =VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo7932     SparseImageOpaqueMemoryBindInfo & operator=( VkSparseImageOpaqueMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT
7933     {
7934       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo const *>( &rhs );
7935       return *this;
7936     }
7937 
7938 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
7939     VULKAN_HPP_CONSTEXPR_14 SparseImageOpaqueMemoryBindInfo &
setImageVULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo7940                             setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
7941     {
7942       image = image_;
7943       return *this;
7944     }
7945 
setBindCountVULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo7946     VULKAN_HPP_CONSTEXPR_14 SparseImageOpaqueMemoryBindInfo & setBindCount( uint32_t bindCount_ ) VULKAN_HPP_NOEXCEPT
7947     {
7948       bindCount = bindCount_;
7949       return *this;
7950     }
7951 
7952     VULKAN_HPP_CONSTEXPR_14 SparseImageOpaqueMemoryBindInfo &
setPBindsVULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo7953                             setPBinds( const VULKAN_HPP_NAMESPACE::SparseMemoryBind * pBinds_ ) VULKAN_HPP_NOEXCEPT
7954     {
7955       pBinds = pBinds_;
7956       return *this;
7957     }
7958 
7959 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setBindsVULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo7960     SparseImageOpaqueMemoryBindInfo & setBinds(
7961       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseMemoryBind> const & binds_ )
7962       VULKAN_HPP_NOEXCEPT
7963     {
7964       bindCount = static_cast<uint32_t>( binds_.size() );
7965       pBinds    = binds_.data();
7966       return *this;
7967     }
7968 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
7969 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
7970 
operator VkSparseImageOpaqueMemoryBindInfo const&VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo7971     explicit operator VkSparseImageOpaqueMemoryBindInfo const &() const VULKAN_HPP_NOEXCEPT
7972     {
7973       return *reinterpret_cast<const VkSparseImageOpaqueMemoryBindInfo *>( this );
7974     }
7975 
operator VkSparseImageOpaqueMemoryBindInfo&VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo7976     explicit operator VkSparseImageOpaqueMemoryBindInfo &() VULKAN_HPP_NOEXCEPT
7977     {
7978       return *reinterpret_cast<VkSparseImageOpaqueMemoryBindInfo *>( this );
7979     }
7980 
7981 #if 14 <= VULKAN_HPP_CPP_VERSION
7982     auto
7983 #else
7984     std::tuple<VULKAN_HPP_NAMESPACE::Image const &,
7985                uint32_t const &,
7986                const VULKAN_HPP_NAMESPACE::SparseMemoryBind * const &>
7987 #endif
reflectVULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo7988       reflect() const VULKAN_HPP_NOEXCEPT
7989     {
7990       return std::tie( image, bindCount, pBinds );
7991     }
7992 
7993 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
7994     auto operator<=>( SparseImageOpaqueMemoryBindInfo const & ) const = default;
7995 #else
operator ==VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo7996     bool operator==( SparseImageOpaqueMemoryBindInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
7997     {
7998       return this->reflect() == rhs.reflect();
7999     }
8000 
operator !=VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo8001     bool operator!=( SparseImageOpaqueMemoryBindInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
8002     {
8003       return this->reflect() != rhs.reflect();
8004     }
8005 #endif
8006 
8007   public:
8008     VULKAN_HPP_NAMESPACE::Image                    image     = {};
8009     uint32_t                                       bindCount = {};
8010     const VULKAN_HPP_NAMESPACE::SparseMemoryBind * pBinds    = {};
8011   };
8012   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo ) ==
8013                               sizeof( VkSparseImageOpaqueMemoryBindInfo ),
8014                             "struct and wrapper have different size!" );
8015   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo>::value,
8016                             "struct wrapper is not a standard layout!" );
8017   VULKAN_HPP_STATIC_ASSERT(
8018     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo>::value,
8019     "SparseImageOpaqueMemoryBindInfo is not nothrow_move_constructible!" );
8020 
8021   struct ImageSubresource
8022   {
8023     using NativeType = VkImageSubresource;
8024 
8025 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageSubresourceVULKAN_HPP_NAMESPACE::ImageSubresource8026     VULKAN_HPP_CONSTEXPR ImageSubresource( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ = {},
8027                                            uint32_t                               mipLevel_   = {},
8028                                            uint32_t                               arrayLayer_ = {} ) VULKAN_HPP_NOEXCEPT
8029       : aspectMask( aspectMask_ )
8030       , mipLevel( mipLevel_ )
8031       , arrayLayer( arrayLayer_ )
8032     {}
8033 
8034     VULKAN_HPP_CONSTEXPR ImageSubresource( ImageSubresource const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8035 
ImageSubresourceVULKAN_HPP_NAMESPACE::ImageSubresource8036     ImageSubresource( VkImageSubresource const & rhs ) VULKAN_HPP_NOEXCEPT
8037       : ImageSubresource( *reinterpret_cast<ImageSubresource const *>( &rhs ) )
8038     {}
8039 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
8040 
8041     ImageSubresource & operator=( ImageSubresource const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8042 
operator =VULKAN_HPP_NAMESPACE::ImageSubresource8043     ImageSubresource & operator=( VkImageSubresource const & rhs ) VULKAN_HPP_NOEXCEPT
8044     {
8045       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageSubresource const *>( &rhs );
8046       return *this;
8047     }
8048 
8049 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
8050     VULKAN_HPP_CONSTEXPR_14 ImageSubresource &
setAspectMaskVULKAN_HPP_NAMESPACE::ImageSubresource8051                             setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT
8052     {
8053       aspectMask = aspectMask_;
8054       return *this;
8055     }
8056 
setMipLevelVULKAN_HPP_NAMESPACE::ImageSubresource8057     VULKAN_HPP_CONSTEXPR_14 ImageSubresource & setMipLevel( uint32_t mipLevel_ ) VULKAN_HPP_NOEXCEPT
8058     {
8059       mipLevel = mipLevel_;
8060       return *this;
8061     }
8062 
setArrayLayerVULKAN_HPP_NAMESPACE::ImageSubresource8063     VULKAN_HPP_CONSTEXPR_14 ImageSubresource & setArrayLayer( uint32_t arrayLayer_ ) VULKAN_HPP_NOEXCEPT
8064     {
8065       arrayLayer = arrayLayer_;
8066       return *this;
8067     }
8068 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
8069 
operator VkImageSubresource const&VULKAN_HPP_NAMESPACE::ImageSubresource8070     explicit operator VkImageSubresource const &() const VULKAN_HPP_NOEXCEPT
8071     {
8072       return *reinterpret_cast<const VkImageSubresource *>( this );
8073     }
8074 
operator VkImageSubresource&VULKAN_HPP_NAMESPACE::ImageSubresource8075     explicit operator VkImageSubresource &() VULKAN_HPP_NOEXCEPT
8076     {
8077       return *reinterpret_cast<VkImageSubresource *>( this );
8078     }
8079 
8080 #if 14 <= VULKAN_HPP_CPP_VERSION
8081     auto
8082 #else
8083     std::tuple<VULKAN_HPP_NAMESPACE::ImageAspectFlags const &, uint32_t const &, uint32_t const &>
8084 #endif
reflectVULKAN_HPP_NAMESPACE::ImageSubresource8085       reflect() const VULKAN_HPP_NOEXCEPT
8086     {
8087       return std::tie( aspectMask, mipLevel, arrayLayer );
8088     }
8089 
8090 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
8091     auto operator<=>( ImageSubresource const & ) const = default;
8092 #else
operator ==VULKAN_HPP_NAMESPACE::ImageSubresource8093     bool operator==( ImageSubresource const & rhs ) const VULKAN_HPP_NOEXCEPT
8094     {
8095       return this->reflect() == rhs.reflect();
8096     }
8097 
operator !=VULKAN_HPP_NAMESPACE::ImageSubresource8098     bool operator!=( ImageSubresource const & rhs ) const VULKAN_HPP_NOEXCEPT
8099     {
8100       return this->reflect() != rhs.reflect();
8101     }
8102 #endif
8103 
8104   public:
8105     VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask = {};
8106     uint32_t                               mipLevel   = {};
8107     uint32_t                               arrayLayer = {};
8108   };
8109   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageSubresource ) == sizeof( VkImageSubresource ),
8110                             "struct and wrapper have different size!" );
8111   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImageSubresource>::value,
8112                             "struct wrapper is not a standard layout!" );
8113   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImageSubresource>::value,
8114                             "ImageSubresource is not nothrow_move_constructible!" );
8115 
8116   struct Offset3D
8117   {
8118     using NativeType = VkOffset3D;
8119 
8120 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
Offset3DVULKAN_HPP_NAMESPACE::Offset3D8121     VULKAN_HPP_CONSTEXPR Offset3D( int32_t x_ = {}, int32_t y_ = {}, int32_t z_ = {} ) VULKAN_HPP_NOEXCEPT
8122       : x( x_ )
8123       , y( y_ )
8124       , z( z_ )
8125     {}
8126 
8127     VULKAN_HPP_CONSTEXPR Offset3D( Offset3D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8128 
Offset3DVULKAN_HPP_NAMESPACE::Offset3D8129     Offset3D( VkOffset3D const & rhs ) VULKAN_HPP_NOEXCEPT : Offset3D( *reinterpret_cast<Offset3D const *>( &rhs ) ) {}
8130 
Offset3DVULKAN_HPP_NAMESPACE::Offset3D8131     explicit Offset3D( Offset2D const & offset2D, int32_t z_ = {} ) : x( offset2D.x ), y( offset2D.y ), z( z_ ) {}
8132 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
8133 
8134     Offset3D & operator=( Offset3D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8135 
operator =VULKAN_HPP_NAMESPACE::Offset3D8136     Offset3D & operator=( VkOffset3D const & rhs ) VULKAN_HPP_NOEXCEPT
8137     {
8138       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Offset3D const *>( &rhs );
8139       return *this;
8140     }
8141 
8142 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setXVULKAN_HPP_NAMESPACE::Offset3D8143     VULKAN_HPP_CONSTEXPR_14 Offset3D & setX( int32_t x_ ) VULKAN_HPP_NOEXCEPT
8144     {
8145       x = x_;
8146       return *this;
8147     }
8148 
setYVULKAN_HPP_NAMESPACE::Offset3D8149     VULKAN_HPP_CONSTEXPR_14 Offset3D & setY( int32_t y_ ) VULKAN_HPP_NOEXCEPT
8150     {
8151       y = y_;
8152       return *this;
8153     }
8154 
setZVULKAN_HPP_NAMESPACE::Offset3D8155     VULKAN_HPP_CONSTEXPR_14 Offset3D & setZ( int32_t z_ ) VULKAN_HPP_NOEXCEPT
8156     {
8157       z = z_;
8158       return *this;
8159     }
8160 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
8161 
operator VkOffset3D const&VULKAN_HPP_NAMESPACE::Offset3D8162     explicit operator VkOffset3D const &() const VULKAN_HPP_NOEXCEPT
8163     {
8164       return *reinterpret_cast<const VkOffset3D *>( this );
8165     }
8166 
operator VkOffset3D&VULKAN_HPP_NAMESPACE::Offset3D8167     explicit operator VkOffset3D &() VULKAN_HPP_NOEXCEPT
8168     {
8169       return *reinterpret_cast<VkOffset3D *>( this );
8170     }
8171 
8172 #if 14 <= VULKAN_HPP_CPP_VERSION
8173     auto
8174 #else
8175     std::tuple<int32_t const &, int32_t const &, int32_t const &>
8176 #endif
reflectVULKAN_HPP_NAMESPACE::Offset3D8177       reflect() const VULKAN_HPP_NOEXCEPT
8178     {
8179       return std::tie( x, y, z );
8180     }
8181 
8182 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
8183     auto operator<=>( Offset3D const & ) const = default;
8184 #else
operator ==VULKAN_HPP_NAMESPACE::Offset3D8185     bool operator==( Offset3D const & rhs ) const VULKAN_HPP_NOEXCEPT
8186     {
8187       return this->reflect() == rhs.reflect();
8188     }
8189 
operator !=VULKAN_HPP_NAMESPACE::Offset3D8190     bool operator!=( Offset3D const & rhs ) const VULKAN_HPP_NOEXCEPT
8191     {
8192       return this->reflect() != rhs.reflect();
8193     }
8194 #endif
8195 
8196   public:
8197     int32_t x = {};
8198     int32_t y = {};
8199     int32_t z = {};
8200   };
8201   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Offset3D ) == sizeof( VkOffset3D ),
8202                             "struct and wrapper have different size!" );
8203   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::Offset3D>::value,
8204                             "struct wrapper is not a standard layout!" );
8205   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::Offset3D>::value,
8206                             "Offset3D is not nothrow_move_constructible!" );
8207 
8208   struct Extent3D
8209   {
8210     using NativeType = VkExtent3D;
8211 
8212 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
8213     VULKAN_HPP_CONSTEXPR
Extent3DVULKAN_HPP_NAMESPACE::Extent3D8214       Extent3D( uint32_t width_ = {}, uint32_t height_ = {}, uint32_t depth_ = {} ) VULKAN_HPP_NOEXCEPT
8215       : width( width_ )
8216       , height( height_ )
8217       , depth( depth_ )
8218     {}
8219 
8220     VULKAN_HPP_CONSTEXPR Extent3D( Extent3D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8221 
Extent3DVULKAN_HPP_NAMESPACE::Extent3D8222     Extent3D( VkExtent3D const & rhs ) VULKAN_HPP_NOEXCEPT : Extent3D( *reinterpret_cast<Extent3D const *>( &rhs ) ) {}
8223 
Extent3DVULKAN_HPP_NAMESPACE::Extent3D8224     explicit Extent3D( Extent2D const & extent2D, uint32_t depth_ = {} )
8225       : width( extent2D.width ), height( extent2D.height ), depth( depth_ )
8226     {}
8227 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
8228 
8229     Extent3D & operator=( Extent3D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8230 
operator =VULKAN_HPP_NAMESPACE::Extent3D8231     Extent3D & operator=( VkExtent3D const & rhs ) VULKAN_HPP_NOEXCEPT
8232     {
8233       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Extent3D const *>( &rhs );
8234       return *this;
8235     }
8236 
8237 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setWidthVULKAN_HPP_NAMESPACE::Extent3D8238     VULKAN_HPP_CONSTEXPR_14 Extent3D & setWidth( uint32_t width_ ) VULKAN_HPP_NOEXCEPT
8239     {
8240       width = width_;
8241       return *this;
8242     }
8243 
setHeightVULKAN_HPP_NAMESPACE::Extent3D8244     VULKAN_HPP_CONSTEXPR_14 Extent3D & setHeight( uint32_t height_ ) VULKAN_HPP_NOEXCEPT
8245     {
8246       height = height_;
8247       return *this;
8248     }
8249 
setDepthVULKAN_HPP_NAMESPACE::Extent3D8250     VULKAN_HPP_CONSTEXPR_14 Extent3D & setDepth( uint32_t depth_ ) VULKAN_HPP_NOEXCEPT
8251     {
8252       depth = depth_;
8253       return *this;
8254     }
8255 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
8256 
operator VkExtent3D const&VULKAN_HPP_NAMESPACE::Extent3D8257     explicit operator VkExtent3D const &() const VULKAN_HPP_NOEXCEPT
8258     {
8259       return *reinterpret_cast<const VkExtent3D *>( this );
8260     }
8261 
operator VkExtent3D&VULKAN_HPP_NAMESPACE::Extent3D8262     explicit operator VkExtent3D &() VULKAN_HPP_NOEXCEPT
8263     {
8264       return *reinterpret_cast<VkExtent3D *>( this );
8265     }
8266 
8267 #if 14 <= VULKAN_HPP_CPP_VERSION
8268     auto
8269 #else
8270     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &>
8271 #endif
reflectVULKAN_HPP_NAMESPACE::Extent3D8272       reflect() const VULKAN_HPP_NOEXCEPT
8273     {
8274       return std::tie( width, height, depth );
8275     }
8276 
8277 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
8278     auto operator<=>( Extent3D const & ) const = default;
8279 #else
operator ==VULKAN_HPP_NAMESPACE::Extent3D8280     bool operator==( Extent3D const & rhs ) const VULKAN_HPP_NOEXCEPT
8281     {
8282       return this->reflect() == rhs.reflect();
8283     }
8284 
operator !=VULKAN_HPP_NAMESPACE::Extent3D8285     bool operator!=( Extent3D const & rhs ) const VULKAN_HPP_NOEXCEPT
8286     {
8287       return this->reflect() != rhs.reflect();
8288     }
8289 #endif
8290 
8291   public:
8292     uint32_t width  = {};
8293     uint32_t height = {};
8294     uint32_t depth  = {};
8295   };
8296   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Extent3D ) == sizeof( VkExtent3D ),
8297                             "struct and wrapper have different size!" );
8298   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::Extent3D>::value,
8299                             "struct wrapper is not a standard layout!" );
8300   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::Extent3D>::value,
8301                             "Extent3D is not nothrow_move_constructible!" );
8302 
8303   struct SparseImageMemoryBind
8304   {
8305     using NativeType = VkSparseImageMemoryBind;
8306 
8307 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
8308     VULKAN_HPP_CONSTEXPR
SparseImageMemoryBindVULKAN_HPP_NAMESPACE::SparseImageMemoryBind8309       SparseImageMemoryBind( VULKAN_HPP_NAMESPACE::ImageSubresource      subresource_  = {},
8310                              VULKAN_HPP_NAMESPACE::Offset3D              offset_       = {},
8311                              VULKAN_HPP_NAMESPACE::Extent3D              extent_       = {},
8312                              VULKAN_HPP_NAMESPACE::DeviceMemory          memory_       = {},
8313                              VULKAN_HPP_NAMESPACE::DeviceSize            memoryOffset_ = {},
8314                              VULKAN_HPP_NAMESPACE::SparseMemoryBindFlags flags_        = {} ) VULKAN_HPP_NOEXCEPT
8315       : subresource( subresource_ )
8316       , offset( offset_ )
8317       , extent( extent_ )
8318       , memory( memory_ )
8319       , memoryOffset( memoryOffset_ )
8320       , flags( flags_ )
8321     {}
8322 
8323     VULKAN_HPP_CONSTEXPR SparseImageMemoryBind( SparseImageMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8324 
SparseImageMemoryBindVULKAN_HPP_NAMESPACE::SparseImageMemoryBind8325     SparseImageMemoryBind( VkSparseImageMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT
8326       : SparseImageMemoryBind( *reinterpret_cast<SparseImageMemoryBind const *>( &rhs ) )
8327     {}
8328 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
8329 
8330     SparseImageMemoryBind & operator=( SparseImageMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8331 
operator =VULKAN_HPP_NAMESPACE::SparseImageMemoryBind8332     SparseImageMemoryBind & operator=( VkSparseImageMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT
8333     {
8334       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SparseImageMemoryBind const *>( &rhs );
8335       return *this;
8336     }
8337 
8338 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
8339     VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind &
setSubresourceVULKAN_HPP_NAMESPACE::SparseImageMemoryBind8340       setSubresource( VULKAN_HPP_NAMESPACE::ImageSubresource const & subresource_ ) VULKAN_HPP_NOEXCEPT
8341     {
8342       subresource = subresource_;
8343       return *this;
8344     }
8345 
8346     VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind &
setOffsetVULKAN_HPP_NAMESPACE::SparseImageMemoryBind8347                             setOffset( VULKAN_HPP_NAMESPACE::Offset3D const & offset_ ) VULKAN_HPP_NOEXCEPT
8348     {
8349       offset = offset_;
8350       return *this;
8351     }
8352 
8353     VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind &
setExtentVULKAN_HPP_NAMESPACE::SparseImageMemoryBind8354                             setExtent( VULKAN_HPP_NAMESPACE::Extent3D const & extent_ ) VULKAN_HPP_NOEXCEPT
8355     {
8356       extent = extent_;
8357       return *this;
8358     }
8359 
8360     VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind &
setMemoryVULKAN_HPP_NAMESPACE::SparseImageMemoryBind8361                             setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
8362     {
8363       memory = memory_;
8364       return *this;
8365     }
8366 
8367     VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind &
setMemoryOffsetVULKAN_HPP_NAMESPACE::SparseImageMemoryBind8368                             setMemoryOffset( VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ ) VULKAN_HPP_NOEXCEPT
8369     {
8370       memoryOffset = memoryOffset_;
8371       return *this;
8372     }
8373 
8374     VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind &
setFlagsVULKAN_HPP_NAMESPACE::SparseImageMemoryBind8375                             setFlags( VULKAN_HPP_NAMESPACE::SparseMemoryBindFlags flags_ ) VULKAN_HPP_NOEXCEPT
8376     {
8377       flags = flags_;
8378       return *this;
8379     }
8380 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
8381 
operator VkSparseImageMemoryBind const&VULKAN_HPP_NAMESPACE::SparseImageMemoryBind8382     explicit operator VkSparseImageMemoryBind const &() const VULKAN_HPP_NOEXCEPT
8383     {
8384       return *reinterpret_cast<const VkSparseImageMemoryBind *>( this );
8385     }
8386 
operator VkSparseImageMemoryBind&VULKAN_HPP_NAMESPACE::SparseImageMemoryBind8387     explicit operator VkSparseImageMemoryBind &() VULKAN_HPP_NOEXCEPT
8388     {
8389       return *reinterpret_cast<VkSparseImageMemoryBind *>( this );
8390     }
8391 
8392 #if 14 <= VULKAN_HPP_CPP_VERSION
8393     auto
8394 #else
8395     std::tuple<VULKAN_HPP_NAMESPACE::ImageSubresource const &,
8396                VULKAN_HPP_NAMESPACE::Offset3D const &,
8397                VULKAN_HPP_NAMESPACE::Extent3D const &,
8398                VULKAN_HPP_NAMESPACE::DeviceMemory const &,
8399                VULKAN_HPP_NAMESPACE::DeviceSize const &,
8400                VULKAN_HPP_NAMESPACE::SparseMemoryBindFlags const &>
8401 #endif
reflectVULKAN_HPP_NAMESPACE::SparseImageMemoryBind8402       reflect() const VULKAN_HPP_NOEXCEPT
8403     {
8404       return std::tie( subresource, offset, extent, memory, memoryOffset, flags );
8405     }
8406 
8407 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
8408     auto operator<=>( SparseImageMemoryBind const & ) const = default;
8409 #else
operator ==VULKAN_HPP_NAMESPACE::SparseImageMemoryBind8410     bool operator==( SparseImageMemoryBind const & rhs ) const VULKAN_HPP_NOEXCEPT
8411     {
8412       return this->reflect() == rhs.reflect();
8413     }
8414 
operator !=VULKAN_HPP_NAMESPACE::SparseImageMemoryBind8415     bool operator!=( SparseImageMemoryBind const & rhs ) const VULKAN_HPP_NOEXCEPT
8416     {
8417       return this->reflect() != rhs.reflect();
8418     }
8419 #endif
8420 
8421   public:
8422     VULKAN_HPP_NAMESPACE::ImageSubresource      subresource  = {};
8423     VULKAN_HPP_NAMESPACE::Offset3D              offset       = {};
8424     VULKAN_HPP_NAMESPACE::Extent3D              extent       = {};
8425     VULKAN_HPP_NAMESPACE::DeviceMemory          memory       = {};
8426     VULKAN_HPP_NAMESPACE::DeviceSize            memoryOffset = {};
8427     VULKAN_HPP_NAMESPACE::SparseMemoryBindFlags flags        = {};
8428   };
8429   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SparseImageMemoryBind ) == sizeof( VkSparseImageMemoryBind ),
8430                             "struct and wrapper have different size!" );
8431   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SparseImageMemoryBind>::value,
8432                             "struct wrapper is not a standard layout!" );
8433   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SparseImageMemoryBind>::value,
8434                             "SparseImageMemoryBind is not nothrow_move_constructible!" );
8435 
8436   struct SparseImageMemoryBindInfo
8437   {
8438     using NativeType = VkSparseImageMemoryBindInfo;
8439 
8440 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
8441     VULKAN_HPP_CONSTEXPR
SparseImageMemoryBindInfoVULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo8442       SparseImageMemoryBindInfo( VULKAN_HPP_NAMESPACE::Image                         image_     = {},
8443                                  uint32_t                                            bindCount_ = {},
8444                                  const VULKAN_HPP_NAMESPACE::SparseImageMemoryBind * pBinds_ = {} ) VULKAN_HPP_NOEXCEPT
8445       : image( image_ )
8446       , bindCount( bindCount_ )
8447       , pBinds( pBinds_ )
8448     {}
8449 
8450     VULKAN_HPP_CONSTEXPR
8451       SparseImageMemoryBindInfo( SparseImageMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8452 
SparseImageMemoryBindInfoVULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo8453     SparseImageMemoryBindInfo( VkSparseImageMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT
8454       : SparseImageMemoryBindInfo( *reinterpret_cast<SparseImageMemoryBindInfo const *>( &rhs ) )
8455     {}
8456 
8457 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SparseImageMemoryBindInfoVULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo8458     SparseImageMemoryBindInfo(
8459       VULKAN_HPP_NAMESPACE::Image                                                                              image_,
8460       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseImageMemoryBind> const & binds_ )
8461       : image( image_ ), bindCount( static_cast<uint32_t>( binds_.size() ) ), pBinds( binds_.data() )
8462     {}
8463 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
8464 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
8465 
8466     SparseImageMemoryBindInfo & operator=( SparseImageMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8467 
operator =VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo8468     SparseImageMemoryBindInfo & operator=( VkSparseImageMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT
8469     {
8470       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo const *>( &rhs );
8471       return *this;
8472     }
8473 
8474 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
8475     VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBindInfo &
setImageVULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo8476                             setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
8477     {
8478       image = image_;
8479       return *this;
8480     }
8481 
setBindCountVULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo8482     VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBindInfo & setBindCount( uint32_t bindCount_ ) VULKAN_HPP_NOEXCEPT
8483     {
8484       bindCount = bindCount_;
8485       return *this;
8486     }
8487 
8488     VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBindInfo &
setPBindsVULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo8489                             setPBinds( const VULKAN_HPP_NAMESPACE::SparseImageMemoryBind * pBinds_ ) VULKAN_HPP_NOEXCEPT
8490     {
8491       pBinds = pBinds_;
8492       return *this;
8493     }
8494 
8495 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setBindsVULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo8496     SparseImageMemoryBindInfo & setBinds(
8497       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseImageMemoryBind> const & binds_ )
8498       VULKAN_HPP_NOEXCEPT
8499     {
8500       bindCount = static_cast<uint32_t>( binds_.size() );
8501       pBinds    = binds_.data();
8502       return *this;
8503     }
8504 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
8505 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
8506 
operator VkSparseImageMemoryBindInfo const&VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo8507     explicit operator VkSparseImageMemoryBindInfo const &() const VULKAN_HPP_NOEXCEPT
8508     {
8509       return *reinterpret_cast<const VkSparseImageMemoryBindInfo *>( this );
8510     }
8511 
operator VkSparseImageMemoryBindInfo&VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo8512     explicit operator VkSparseImageMemoryBindInfo &() VULKAN_HPP_NOEXCEPT
8513     {
8514       return *reinterpret_cast<VkSparseImageMemoryBindInfo *>( this );
8515     }
8516 
8517 #if 14 <= VULKAN_HPP_CPP_VERSION
8518     auto
8519 #else
8520     std::tuple<VULKAN_HPP_NAMESPACE::Image const &,
8521                uint32_t const &,
8522                const VULKAN_HPP_NAMESPACE::SparseImageMemoryBind * const &>
8523 #endif
reflectVULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo8524       reflect() const VULKAN_HPP_NOEXCEPT
8525     {
8526       return std::tie( image, bindCount, pBinds );
8527     }
8528 
8529 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
8530     auto operator<=>( SparseImageMemoryBindInfo const & ) const = default;
8531 #else
operator ==VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo8532     bool operator==( SparseImageMemoryBindInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
8533     {
8534       return this->reflect() == rhs.reflect();
8535     }
8536 
operator !=VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo8537     bool operator!=( SparseImageMemoryBindInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
8538     {
8539       return this->reflect() != rhs.reflect();
8540     }
8541 #endif
8542 
8543   public:
8544     VULKAN_HPP_NAMESPACE::Image                         image     = {};
8545     uint32_t                                            bindCount = {};
8546     const VULKAN_HPP_NAMESPACE::SparseImageMemoryBind * pBinds    = {};
8547   };
8548   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo ) ==
8549                               sizeof( VkSparseImageMemoryBindInfo ),
8550                             "struct and wrapper have different size!" );
8551   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo>::value,
8552                             "struct wrapper is not a standard layout!" );
8553   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo>::value,
8554                             "SparseImageMemoryBindInfo is not nothrow_move_constructible!" );
8555 
8556   struct BindSparseInfo
8557   {
8558     using NativeType = VkBindSparseInfo;
8559 
8560     static const bool                                  allowDuplicate = false;
8561     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBindSparseInfo;
8562 
8563 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
8564     VULKAN_HPP_CONSTEXPR
BindSparseInfoVULKAN_HPP_NAMESPACE::BindSparseInfo8565       BindSparseInfo( uint32_t                                                      waitSemaphoreCount_   = {},
8566                       const VULKAN_HPP_NAMESPACE::Semaphore *                       pWaitSemaphores_      = {},
8567                       uint32_t                                                      bufferBindCount_      = {},
8568                       const VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo *      pBufferBinds_         = {},
8569                       uint32_t                                                      imageOpaqueBindCount_ = {},
8570                       const VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo * pImageOpaqueBinds_    = {},
8571                       uint32_t                                                      imageBindCount_       = {},
8572                       const VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo *       pImageBinds_          = {},
8573                       uint32_t                                                      signalSemaphoreCount_ = {},
8574                       const VULKAN_HPP_NAMESPACE::Semaphore * pSignalSemaphores_ = {} ) VULKAN_HPP_NOEXCEPT
8575       : waitSemaphoreCount( waitSemaphoreCount_ )
8576       , pWaitSemaphores( pWaitSemaphores_ )
8577       , bufferBindCount( bufferBindCount_ )
8578       , pBufferBinds( pBufferBinds_ )
8579       , imageOpaqueBindCount( imageOpaqueBindCount_ )
8580       , pImageOpaqueBinds( pImageOpaqueBinds_ )
8581       , imageBindCount( imageBindCount_ )
8582       , pImageBinds( pImageBinds_ )
8583       , signalSemaphoreCount( signalSemaphoreCount_ )
8584       , pSignalSemaphores( pSignalSemaphores_ )
8585     {}
8586 
8587     VULKAN_HPP_CONSTEXPR BindSparseInfo( BindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8588 
BindSparseInfoVULKAN_HPP_NAMESPACE::BindSparseInfo8589     BindSparseInfo( VkBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT
8590       : BindSparseInfo( *reinterpret_cast<BindSparseInfo const *>( &rhs ) )
8591     {}
8592 
8593 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
BindSparseInfoVULKAN_HPP_NAMESPACE::BindSparseInfo8594     BindSparseInfo(
8595       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const & waitSemaphores_,
8596       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo> const &
8597         bufferBinds_ = {},
8598       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo> const &
8599         imageOpaqueBinds_ = {},
8600       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo> const &
8601         imageBinds_ = {},
8602       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const &
8603         signalSemaphores_ = {} )
8604       : waitSemaphoreCount( static_cast<uint32_t>( waitSemaphores_.size() ) )
8605       , pWaitSemaphores( waitSemaphores_.data() )
8606       , bufferBindCount( static_cast<uint32_t>( bufferBinds_.size() ) )
8607       , pBufferBinds( bufferBinds_.data() )
8608       , imageOpaqueBindCount( static_cast<uint32_t>( imageOpaqueBinds_.size() ) )
8609       , pImageOpaqueBinds( imageOpaqueBinds_.data() )
8610       , imageBindCount( static_cast<uint32_t>( imageBinds_.size() ) )
8611       , pImageBinds( imageBinds_.data() )
8612       , signalSemaphoreCount( static_cast<uint32_t>( signalSemaphores_.size() ) )
8613       , pSignalSemaphores( signalSemaphores_.data() )
8614     {}
8615 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
8616 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
8617 
8618     BindSparseInfo & operator=( BindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8619 
operator =VULKAN_HPP_NAMESPACE::BindSparseInfo8620     BindSparseInfo & operator=( VkBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT
8621     {
8622       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindSparseInfo const *>( &rhs );
8623       return *this;
8624     }
8625 
8626 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindSparseInfo8627     VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
8628     {
8629       pNext = pNext_;
8630       return *this;
8631     }
8632 
setWaitSemaphoreCountVULKAN_HPP_NAMESPACE::BindSparseInfo8633     VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT
8634     {
8635       waitSemaphoreCount = waitSemaphoreCount_;
8636       return *this;
8637     }
8638 
8639     VULKAN_HPP_CONSTEXPR_14 BindSparseInfo &
setPWaitSemaphoresVULKAN_HPP_NAMESPACE::BindSparseInfo8640       setPWaitSemaphores( const VULKAN_HPP_NAMESPACE::Semaphore * pWaitSemaphores_ ) VULKAN_HPP_NOEXCEPT
8641     {
8642       pWaitSemaphores = pWaitSemaphores_;
8643       return *this;
8644     }
8645 
8646 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setWaitSemaphoresVULKAN_HPP_NAMESPACE::BindSparseInfo8647     BindSparseInfo & setWaitSemaphores(
8648       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const & waitSemaphores_ )
8649       VULKAN_HPP_NOEXCEPT
8650     {
8651       waitSemaphoreCount = static_cast<uint32_t>( waitSemaphores_.size() );
8652       pWaitSemaphores    = waitSemaphores_.data();
8653       return *this;
8654     }
8655 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
8656 
setBufferBindCountVULKAN_HPP_NAMESPACE::BindSparseInfo8657     VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setBufferBindCount( uint32_t bufferBindCount_ ) VULKAN_HPP_NOEXCEPT
8658     {
8659       bufferBindCount = bufferBindCount_;
8660       return *this;
8661     }
8662 
8663     VULKAN_HPP_CONSTEXPR_14 BindSparseInfo &
setPBufferBindsVULKAN_HPP_NAMESPACE::BindSparseInfo8664       setPBufferBinds( const VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo * pBufferBinds_ ) VULKAN_HPP_NOEXCEPT
8665     {
8666       pBufferBinds = pBufferBinds_;
8667       return *this;
8668     }
8669 
8670 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setBufferBindsVULKAN_HPP_NAMESPACE::BindSparseInfo8671     BindSparseInfo & setBufferBinds(
8672       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo> const &
8673         bufferBinds_ ) VULKAN_HPP_NOEXCEPT
8674     {
8675       bufferBindCount = static_cast<uint32_t>( bufferBinds_.size() );
8676       pBufferBinds    = bufferBinds_.data();
8677       return *this;
8678     }
8679 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
8680 
8681     VULKAN_HPP_CONSTEXPR_14 BindSparseInfo &
setImageOpaqueBindCountVULKAN_HPP_NAMESPACE::BindSparseInfo8682                             setImageOpaqueBindCount( uint32_t imageOpaqueBindCount_ ) VULKAN_HPP_NOEXCEPT
8683     {
8684       imageOpaqueBindCount = imageOpaqueBindCount_;
8685       return *this;
8686     }
8687 
setPImageOpaqueBindsVULKAN_HPP_NAMESPACE::BindSparseInfo8688     VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setPImageOpaqueBinds(
8689       const VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo * pImageOpaqueBinds_ ) VULKAN_HPP_NOEXCEPT
8690     {
8691       pImageOpaqueBinds = pImageOpaqueBinds_;
8692       return *this;
8693     }
8694 
8695 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setImageOpaqueBindsVULKAN_HPP_NAMESPACE::BindSparseInfo8696     BindSparseInfo & setImageOpaqueBinds(
8697       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo> const &
8698         imageOpaqueBinds_ ) VULKAN_HPP_NOEXCEPT
8699     {
8700       imageOpaqueBindCount = static_cast<uint32_t>( imageOpaqueBinds_.size() );
8701       pImageOpaqueBinds    = imageOpaqueBinds_.data();
8702       return *this;
8703     }
8704 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
8705 
setImageBindCountVULKAN_HPP_NAMESPACE::BindSparseInfo8706     VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setImageBindCount( uint32_t imageBindCount_ ) VULKAN_HPP_NOEXCEPT
8707     {
8708       imageBindCount = imageBindCount_;
8709       return *this;
8710     }
8711 
8712     VULKAN_HPP_CONSTEXPR_14 BindSparseInfo &
setPImageBindsVULKAN_HPP_NAMESPACE::BindSparseInfo8713       setPImageBinds( const VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo * pImageBinds_ ) VULKAN_HPP_NOEXCEPT
8714     {
8715       pImageBinds = pImageBinds_;
8716       return *this;
8717     }
8718 
8719 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setImageBindsVULKAN_HPP_NAMESPACE::BindSparseInfo8720     BindSparseInfo & setImageBinds(
8721       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo> const &
8722         imageBinds_ ) VULKAN_HPP_NOEXCEPT
8723     {
8724       imageBindCount = static_cast<uint32_t>( imageBinds_.size() );
8725       pImageBinds    = imageBinds_.data();
8726       return *this;
8727     }
8728 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
8729 
8730     VULKAN_HPP_CONSTEXPR_14 BindSparseInfo &
setSignalSemaphoreCountVULKAN_HPP_NAMESPACE::BindSparseInfo8731                             setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT
8732     {
8733       signalSemaphoreCount = signalSemaphoreCount_;
8734       return *this;
8735     }
8736 
8737     VULKAN_HPP_CONSTEXPR_14 BindSparseInfo &
setPSignalSemaphoresVULKAN_HPP_NAMESPACE::BindSparseInfo8738       setPSignalSemaphores( const VULKAN_HPP_NAMESPACE::Semaphore * pSignalSemaphores_ ) VULKAN_HPP_NOEXCEPT
8739     {
8740       pSignalSemaphores = pSignalSemaphores_;
8741       return *this;
8742     }
8743 
8744 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSignalSemaphoresVULKAN_HPP_NAMESPACE::BindSparseInfo8745     BindSparseInfo & setSignalSemaphores(
8746       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const & signalSemaphores_ )
8747       VULKAN_HPP_NOEXCEPT
8748     {
8749       signalSemaphoreCount = static_cast<uint32_t>( signalSemaphores_.size() );
8750       pSignalSemaphores    = signalSemaphores_.data();
8751       return *this;
8752     }
8753 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
8754 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
8755 
operator VkBindSparseInfo const&VULKAN_HPP_NAMESPACE::BindSparseInfo8756     explicit operator VkBindSparseInfo const &() const VULKAN_HPP_NOEXCEPT
8757     {
8758       return *reinterpret_cast<const VkBindSparseInfo *>( this );
8759     }
8760 
operator VkBindSparseInfo&VULKAN_HPP_NAMESPACE::BindSparseInfo8761     explicit operator VkBindSparseInfo &() VULKAN_HPP_NOEXCEPT
8762     {
8763       return *reinterpret_cast<VkBindSparseInfo *>( this );
8764     }
8765 
8766 #if 14 <= VULKAN_HPP_CPP_VERSION
8767     auto
8768 #else
8769     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
8770                const void * const &,
8771                uint32_t const &,
8772                const VULKAN_HPP_NAMESPACE::Semaphore * const &,
8773                uint32_t const &,
8774                const VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo * const &,
8775                uint32_t const &,
8776                const VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo * const &,
8777                uint32_t const &,
8778                const VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo * const &,
8779                uint32_t const &,
8780                const VULKAN_HPP_NAMESPACE::Semaphore * const &>
8781 #endif
reflectVULKAN_HPP_NAMESPACE::BindSparseInfo8782       reflect() const VULKAN_HPP_NOEXCEPT
8783     {
8784       return std::tie( sType,
8785                        pNext,
8786                        waitSemaphoreCount,
8787                        pWaitSemaphores,
8788                        bufferBindCount,
8789                        pBufferBinds,
8790                        imageOpaqueBindCount,
8791                        pImageOpaqueBinds,
8792                        imageBindCount,
8793                        pImageBinds,
8794                        signalSemaphoreCount,
8795                        pSignalSemaphores );
8796     }
8797 
8798 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
8799     auto operator<=>( BindSparseInfo const & ) const = default;
8800 #else
operator ==VULKAN_HPP_NAMESPACE::BindSparseInfo8801     bool operator==( BindSparseInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
8802     {
8803       return this->reflect() == rhs.reflect();
8804     }
8805 
operator !=VULKAN_HPP_NAMESPACE::BindSparseInfo8806     bool operator!=( BindSparseInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
8807     {
8808       return this->reflect() != rhs.reflect();
8809     }
8810 #endif
8811 
8812   public:
8813     VULKAN_HPP_NAMESPACE::StructureType                           sType                = StructureType::eBindSparseInfo;
8814     const void *                                                  pNext                = {};
8815     uint32_t                                                      waitSemaphoreCount   = {};
8816     const VULKAN_HPP_NAMESPACE::Semaphore *                       pWaitSemaphores      = {};
8817     uint32_t                                                      bufferBindCount      = {};
8818     const VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo *      pBufferBinds         = {};
8819     uint32_t                                                      imageOpaqueBindCount = {};
8820     const VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo * pImageOpaqueBinds    = {};
8821     uint32_t                                                      imageBindCount       = {};
8822     const VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo *       pImageBinds          = {};
8823     uint32_t                                                      signalSemaphoreCount = {};
8824     const VULKAN_HPP_NAMESPACE::Semaphore *                       pSignalSemaphores    = {};
8825   };
8826   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindSparseInfo ) == sizeof( VkBindSparseInfo ),
8827                             "struct and wrapper have different size!" );
8828   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::BindSparseInfo>::value,
8829                             "struct wrapper is not a standard layout!" );
8830   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::BindSparseInfo>::value,
8831                             "BindSparseInfo is not nothrow_move_constructible!" );
8832 
8833   template <>
8834   struct CppType<StructureType, StructureType::eBindSparseInfo>
8835   {
8836     using Type = BindSparseInfo;
8837   };
8838 
8839   struct BindVertexBufferIndirectCommandNV
8840   {
8841     using NativeType = VkBindVertexBufferIndirectCommandNV;
8842 
8843 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindVertexBufferIndirectCommandNVVULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV8844     VULKAN_HPP_CONSTEXPR BindVertexBufferIndirectCommandNV( VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress_ = {},
8845                                                             uint32_t                            size_          = {},
8846                                                             uint32_t stride_ = {} ) VULKAN_HPP_NOEXCEPT
8847       : bufferAddress( bufferAddress_ )
8848       , size( size_ )
8849       , stride( stride_ )
8850     {}
8851 
8852     VULKAN_HPP_CONSTEXPR
8853       BindVertexBufferIndirectCommandNV( BindVertexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8854 
BindVertexBufferIndirectCommandNVVULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV8855     BindVertexBufferIndirectCommandNV( VkBindVertexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
8856       : BindVertexBufferIndirectCommandNV( *reinterpret_cast<BindVertexBufferIndirectCommandNV const *>( &rhs ) )
8857     {}
8858 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
8859 
8860     BindVertexBufferIndirectCommandNV &
8861       operator=( BindVertexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8862 
operator =VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV8863     BindVertexBufferIndirectCommandNV & operator=( VkBindVertexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
8864     {
8865       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV const *>( &rhs );
8866       return *this;
8867     }
8868 
8869 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
8870     VULKAN_HPP_CONSTEXPR_14 BindVertexBufferIndirectCommandNV &
setBufferAddressVULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV8871                             setBufferAddress( VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress_ ) VULKAN_HPP_NOEXCEPT
8872     {
8873       bufferAddress = bufferAddress_;
8874       return *this;
8875     }
8876 
setSizeVULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV8877     VULKAN_HPP_CONSTEXPR_14 BindVertexBufferIndirectCommandNV & setSize( uint32_t size_ ) VULKAN_HPP_NOEXCEPT
8878     {
8879       size = size_;
8880       return *this;
8881     }
8882 
setStrideVULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV8883     VULKAN_HPP_CONSTEXPR_14 BindVertexBufferIndirectCommandNV & setStride( uint32_t stride_ ) VULKAN_HPP_NOEXCEPT
8884     {
8885       stride = stride_;
8886       return *this;
8887     }
8888 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
8889 
operator VkBindVertexBufferIndirectCommandNV const&VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV8890     explicit operator VkBindVertexBufferIndirectCommandNV const &() const VULKAN_HPP_NOEXCEPT
8891     {
8892       return *reinterpret_cast<const VkBindVertexBufferIndirectCommandNV *>( this );
8893     }
8894 
operator VkBindVertexBufferIndirectCommandNV&VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV8895     explicit operator VkBindVertexBufferIndirectCommandNV &() VULKAN_HPP_NOEXCEPT
8896     {
8897       return *reinterpret_cast<VkBindVertexBufferIndirectCommandNV *>( this );
8898     }
8899 
8900 #if 14 <= VULKAN_HPP_CPP_VERSION
8901     auto
8902 #else
8903     std::tuple<VULKAN_HPP_NAMESPACE::DeviceAddress const &, uint32_t const &, uint32_t const &>
8904 #endif
reflectVULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV8905       reflect() const VULKAN_HPP_NOEXCEPT
8906     {
8907       return std::tie( bufferAddress, size, stride );
8908     }
8909 
8910 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
8911     auto operator<=>( BindVertexBufferIndirectCommandNV const & ) const = default;
8912 #else
operator ==VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV8913     bool operator==( BindVertexBufferIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
8914     {
8915       return this->reflect() == rhs.reflect();
8916     }
8917 
operator !=VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV8918     bool operator!=( BindVertexBufferIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
8919     {
8920       return this->reflect() != rhs.reflect();
8921     }
8922 #endif
8923 
8924   public:
8925     VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress = {};
8926     uint32_t                            size          = {};
8927     uint32_t                            stride        = {};
8928   };
8929   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV ) ==
8930                               sizeof( VkBindVertexBufferIndirectCommandNV ),
8931                             "struct and wrapper have different size!" );
8932   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV>::value,
8933                             "struct wrapper is not a standard layout!" );
8934   VULKAN_HPP_STATIC_ASSERT(
8935     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV>::value,
8936     "BindVertexBufferIndirectCommandNV is not nothrow_move_constructible!" );
8937 
8938   struct ImageSubresourceLayers
8939   {
8940     using NativeType = VkImageSubresourceLayers;
8941 
8942 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageSubresourceLayersVULKAN_HPP_NAMESPACE::ImageSubresourceLayers8943     VULKAN_HPP_CONSTEXPR ImageSubresourceLayers( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_     = {},
8944                                                  uint32_t                               mipLevel_       = {},
8945                                                  uint32_t                               baseArrayLayer_ = {},
8946                                                  uint32_t layerCount_ = {} ) VULKAN_HPP_NOEXCEPT
8947       : aspectMask( aspectMask_ )
8948       , mipLevel( mipLevel_ )
8949       , baseArrayLayer( baseArrayLayer_ )
8950       , layerCount( layerCount_ )
8951     {}
8952 
8953     VULKAN_HPP_CONSTEXPR ImageSubresourceLayers( ImageSubresourceLayers const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8954 
ImageSubresourceLayersVULKAN_HPP_NAMESPACE::ImageSubresourceLayers8955     ImageSubresourceLayers( VkImageSubresourceLayers const & rhs ) VULKAN_HPP_NOEXCEPT
8956       : ImageSubresourceLayers( *reinterpret_cast<ImageSubresourceLayers const *>( &rhs ) )
8957     {}
8958 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
8959 
8960     ImageSubresourceLayers & operator=( ImageSubresourceLayers const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8961 
operator =VULKAN_HPP_NAMESPACE::ImageSubresourceLayers8962     ImageSubresourceLayers & operator=( VkImageSubresourceLayers const & rhs ) VULKAN_HPP_NOEXCEPT
8963     {
8964       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const *>( &rhs );
8965       return *this;
8966     }
8967 
8968 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
8969     VULKAN_HPP_CONSTEXPR_14 ImageSubresourceLayers &
setAspectMaskVULKAN_HPP_NAMESPACE::ImageSubresourceLayers8970                             setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT
8971     {
8972       aspectMask = aspectMask_;
8973       return *this;
8974     }
8975 
setMipLevelVULKAN_HPP_NAMESPACE::ImageSubresourceLayers8976     VULKAN_HPP_CONSTEXPR_14 ImageSubresourceLayers & setMipLevel( uint32_t mipLevel_ ) VULKAN_HPP_NOEXCEPT
8977     {
8978       mipLevel = mipLevel_;
8979       return *this;
8980     }
8981 
setBaseArrayLayerVULKAN_HPP_NAMESPACE::ImageSubresourceLayers8982     VULKAN_HPP_CONSTEXPR_14 ImageSubresourceLayers & setBaseArrayLayer( uint32_t baseArrayLayer_ ) VULKAN_HPP_NOEXCEPT
8983     {
8984       baseArrayLayer = baseArrayLayer_;
8985       return *this;
8986     }
8987 
setLayerCountVULKAN_HPP_NAMESPACE::ImageSubresourceLayers8988     VULKAN_HPP_CONSTEXPR_14 ImageSubresourceLayers & setLayerCount( uint32_t layerCount_ ) VULKAN_HPP_NOEXCEPT
8989     {
8990       layerCount = layerCount_;
8991       return *this;
8992     }
8993 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
8994 
operator VkImageSubresourceLayers const&VULKAN_HPP_NAMESPACE::ImageSubresourceLayers8995     explicit operator VkImageSubresourceLayers const &() const VULKAN_HPP_NOEXCEPT
8996     {
8997       return *reinterpret_cast<const VkImageSubresourceLayers *>( this );
8998     }
8999 
operator VkImageSubresourceLayers&VULKAN_HPP_NAMESPACE::ImageSubresourceLayers9000     explicit operator VkImageSubresourceLayers &() VULKAN_HPP_NOEXCEPT
9001     {
9002       return *reinterpret_cast<VkImageSubresourceLayers *>( this );
9003     }
9004 
9005 #if 14 <= VULKAN_HPP_CPP_VERSION
9006     auto
9007 #else
9008     std::tuple<VULKAN_HPP_NAMESPACE::ImageAspectFlags const &, uint32_t const &, uint32_t const &, uint32_t const &>
9009 #endif
reflectVULKAN_HPP_NAMESPACE::ImageSubresourceLayers9010       reflect() const VULKAN_HPP_NOEXCEPT
9011     {
9012       return std::tie( aspectMask, mipLevel, baseArrayLayer, layerCount );
9013     }
9014 
9015 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
9016     auto operator<=>( ImageSubresourceLayers const & ) const = default;
9017 #else
operator ==VULKAN_HPP_NAMESPACE::ImageSubresourceLayers9018     bool operator==( ImageSubresourceLayers const & rhs ) const VULKAN_HPP_NOEXCEPT
9019     {
9020       return this->reflect() == rhs.reflect();
9021     }
9022 
operator !=VULKAN_HPP_NAMESPACE::ImageSubresourceLayers9023     bool operator!=( ImageSubresourceLayers const & rhs ) const VULKAN_HPP_NOEXCEPT
9024     {
9025       return this->reflect() != rhs.reflect();
9026     }
9027 #endif
9028 
9029   public:
9030     VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask     = {};
9031     uint32_t                               mipLevel       = {};
9032     uint32_t                               baseArrayLayer = {};
9033     uint32_t                               layerCount     = {};
9034   };
9035   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers ) ==
9036                               sizeof( VkImageSubresourceLayers ),
9037                             "struct and wrapper have different size!" );
9038   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImageSubresourceLayers>::value,
9039                             "struct wrapper is not a standard layout!" );
9040   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImageSubresourceLayers>::value,
9041                             "ImageSubresourceLayers is not nothrow_move_constructible!" );
9042 
9043   struct ImageBlit2KHR
9044   {
9045     using NativeType = VkImageBlit2KHR;
9046 
9047     static const bool                                  allowDuplicate = false;
9048     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageBlit2KHR;
9049 
9050 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
9051     VULKAN_HPP_CONSTEXPR_14
ImageBlit2KHRVULKAN_HPP_NAMESPACE::ImageBlit2KHR9052       ImageBlit2KHR( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers          srcSubresource_ = {},
9053                      std::array<VULKAN_HPP_NAMESPACE::Offset3D, 2> const & srcOffsets_     = {},
9054                      VULKAN_HPP_NAMESPACE::ImageSubresourceLayers          dstSubresource_ = {},
9055                      std::array<VULKAN_HPP_NAMESPACE::Offset3D, 2> const & dstOffsets_     = {} ) VULKAN_HPP_NOEXCEPT
9056       : srcSubresource( srcSubresource_ )
9057       , srcOffsets( srcOffsets_ )
9058       , dstSubresource( dstSubresource_ )
9059       , dstOffsets( dstOffsets_ )
9060     {}
9061 
9062     VULKAN_HPP_CONSTEXPR_14 ImageBlit2KHR( ImageBlit2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9063 
ImageBlit2KHRVULKAN_HPP_NAMESPACE::ImageBlit2KHR9064     ImageBlit2KHR( VkImageBlit2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
9065       : ImageBlit2KHR( *reinterpret_cast<ImageBlit2KHR const *>( &rhs ) )
9066     {}
9067 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
9068 
9069     ImageBlit2KHR & operator=( ImageBlit2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9070 
operator =VULKAN_HPP_NAMESPACE::ImageBlit2KHR9071     ImageBlit2KHR & operator=( VkImageBlit2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
9072     {
9073       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageBlit2KHR const *>( &rhs );
9074       return *this;
9075     }
9076 
9077 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageBlit2KHR9078     VULKAN_HPP_CONSTEXPR_14 ImageBlit2KHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
9079     {
9080       pNext = pNext_;
9081       return *this;
9082     }
9083 
9084     VULKAN_HPP_CONSTEXPR_14 ImageBlit2KHR &
setSrcSubresourceVULKAN_HPP_NAMESPACE::ImageBlit2KHR9085       setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT
9086     {
9087       srcSubresource = srcSubresource_;
9088       return *this;
9089     }
9090 
9091     VULKAN_HPP_CONSTEXPR_14 ImageBlit2KHR &
setSrcOffsetsVULKAN_HPP_NAMESPACE::ImageBlit2KHR9092       setSrcOffsets( std::array<VULKAN_HPP_NAMESPACE::Offset3D, 2> const & srcOffsets_ ) VULKAN_HPP_NOEXCEPT
9093     {
9094       srcOffsets = srcOffsets_;
9095       return *this;
9096     }
9097 
9098     VULKAN_HPP_CONSTEXPR_14 ImageBlit2KHR &
setDstSubresourceVULKAN_HPP_NAMESPACE::ImageBlit2KHR9099       setDstSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & dstSubresource_ ) VULKAN_HPP_NOEXCEPT
9100     {
9101       dstSubresource = dstSubresource_;
9102       return *this;
9103     }
9104 
9105     VULKAN_HPP_CONSTEXPR_14 ImageBlit2KHR &
setDstOffsetsVULKAN_HPP_NAMESPACE::ImageBlit2KHR9106       setDstOffsets( std::array<VULKAN_HPP_NAMESPACE::Offset3D, 2> const & dstOffsets_ ) VULKAN_HPP_NOEXCEPT
9107     {
9108       dstOffsets = dstOffsets_;
9109       return *this;
9110     }
9111 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
9112 
operator VkImageBlit2KHR const&VULKAN_HPP_NAMESPACE::ImageBlit2KHR9113     explicit operator VkImageBlit2KHR const &() const VULKAN_HPP_NOEXCEPT
9114     {
9115       return *reinterpret_cast<const VkImageBlit2KHR *>( this );
9116     }
9117 
operator VkImageBlit2KHR&VULKAN_HPP_NAMESPACE::ImageBlit2KHR9118     explicit operator VkImageBlit2KHR &() VULKAN_HPP_NOEXCEPT
9119     {
9120       return *reinterpret_cast<VkImageBlit2KHR *>( this );
9121     }
9122 
9123 #if 14 <= VULKAN_HPP_CPP_VERSION
9124     auto
9125 #else
9126     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
9127                const void * const &,
9128                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
9129                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::Offset3D, 2> const &,
9130                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
9131                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::Offset3D, 2> const &>
9132 #endif
reflectVULKAN_HPP_NAMESPACE::ImageBlit2KHR9133       reflect() const VULKAN_HPP_NOEXCEPT
9134     {
9135       return std::tie( sType, pNext, srcSubresource, srcOffsets, dstSubresource, dstOffsets );
9136     }
9137 
9138 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
9139     auto operator<=>( ImageBlit2KHR const & ) const = default;
9140 #else
operator ==VULKAN_HPP_NAMESPACE::ImageBlit2KHR9141     bool operator==( ImageBlit2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
9142     {
9143       return this->reflect() == rhs.reflect();
9144     }
9145 
operator !=VULKAN_HPP_NAMESPACE::ImageBlit2KHR9146     bool operator!=( ImageBlit2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
9147     {
9148       return this->reflect() != rhs.reflect();
9149     }
9150 #endif
9151 
9152   public:
9153     VULKAN_HPP_NAMESPACE::StructureType                                     sType = StructureType::eImageBlit2KHR;
9154     const void *                                                            pNext = {};
9155     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers                            srcSubresource = {};
9156     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::Offset3D, 2> srcOffsets     = {};
9157     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers                            dstSubresource = {};
9158     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::Offset3D, 2> dstOffsets     = {};
9159   };
9160   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageBlit2KHR ) == sizeof( VkImageBlit2KHR ),
9161                             "struct and wrapper have different size!" );
9162   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImageBlit2KHR>::value,
9163                             "struct wrapper is not a standard layout!" );
9164   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImageBlit2KHR>::value,
9165                             "ImageBlit2KHR is not nothrow_move_constructible!" );
9166 
9167   template <>
9168   struct CppType<StructureType, StructureType::eImageBlit2KHR>
9169   {
9170     using Type = ImageBlit2KHR;
9171   };
9172 
9173   struct BlitImageInfo2KHR
9174   {
9175     using NativeType = VkBlitImageInfo2KHR;
9176 
9177     static const bool                                  allowDuplicate = false;
9178     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBlitImageInfo2KHR;
9179 
9180 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BlitImageInfo2KHRVULKAN_HPP_NAMESPACE::BlitImageInfo2KHR9181     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2KHR(
9182       VULKAN_HPP_NAMESPACE::Image                 srcImage_       = {},
9183       VULKAN_HPP_NAMESPACE::ImageLayout           srcImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
9184       VULKAN_HPP_NAMESPACE::Image                 dstImage_       = {},
9185       VULKAN_HPP_NAMESPACE::ImageLayout           dstImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
9186       uint32_t                                    regionCount_    = {},
9187       const VULKAN_HPP_NAMESPACE::ImageBlit2KHR * pRegions_       = {},
9188       VULKAN_HPP_NAMESPACE::Filter                filter_ = VULKAN_HPP_NAMESPACE::Filter::eNearest ) VULKAN_HPP_NOEXCEPT
9189       : srcImage( srcImage_ )
9190       , srcImageLayout( srcImageLayout_ )
9191       , dstImage( dstImage_ )
9192       , dstImageLayout( dstImageLayout_ )
9193       , regionCount( regionCount_ )
9194       , pRegions( pRegions_ )
9195       , filter( filter_ )
9196     {}
9197 
9198     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2KHR( BlitImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9199 
BlitImageInfo2KHRVULKAN_HPP_NAMESPACE::BlitImageInfo2KHR9200     BlitImageInfo2KHR( VkBlitImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
9201       : BlitImageInfo2KHR( *reinterpret_cast<BlitImageInfo2KHR const *>( &rhs ) )
9202     {}
9203 
9204 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
BlitImageInfo2KHRVULKAN_HPP_NAMESPACE::BlitImageInfo2KHR9205     BlitImageInfo2KHR(
9206       VULKAN_HPP_NAMESPACE::Image                                                                      srcImage_,
9207       VULKAN_HPP_NAMESPACE::ImageLayout                                                                srcImageLayout_,
9208       VULKAN_HPP_NAMESPACE::Image                                                                      dstImage_,
9209       VULKAN_HPP_NAMESPACE::ImageLayout                                                                dstImageLayout_,
9210       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageBlit2KHR> const & regions_,
9211       VULKAN_HPP_NAMESPACE::Filter filter_ = VULKAN_HPP_NAMESPACE::Filter::eNearest )
9212       : srcImage( srcImage_ )
9213       , srcImageLayout( srcImageLayout_ )
9214       , dstImage( dstImage_ )
9215       , dstImageLayout( dstImageLayout_ )
9216       , regionCount( static_cast<uint32_t>( regions_.size() ) )
9217       , pRegions( regions_.data() )
9218       , filter( filter_ )
9219     {}
9220 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
9221 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
9222 
9223     BlitImageInfo2KHR & operator=( BlitImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9224 
operator =VULKAN_HPP_NAMESPACE::BlitImageInfo2KHR9225     BlitImageInfo2KHR & operator=( VkBlitImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
9226     {
9227       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BlitImageInfo2KHR const *>( &rhs );
9228       return *this;
9229     }
9230 
9231 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BlitImageInfo2KHR9232     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2KHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
9233     {
9234       pNext = pNext_;
9235       return *this;
9236     }
9237 
setSrcImageVULKAN_HPP_NAMESPACE::BlitImageInfo2KHR9238     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2KHR & setSrcImage( VULKAN_HPP_NAMESPACE::Image srcImage_ ) VULKAN_HPP_NOEXCEPT
9239     {
9240       srcImage = srcImage_;
9241       return *this;
9242     }
9243 
9244     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2KHR &
setSrcImageLayoutVULKAN_HPP_NAMESPACE::BlitImageInfo2KHR9245                             setSrcImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ ) VULKAN_HPP_NOEXCEPT
9246     {
9247       srcImageLayout = srcImageLayout_;
9248       return *this;
9249     }
9250 
setDstImageVULKAN_HPP_NAMESPACE::BlitImageInfo2KHR9251     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2KHR & setDstImage( VULKAN_HPP_NAMESPACE::Image dstImage_ ) VULKAN_HPP_NOEXCEPT
9252     {
9253       dstImage = dstImage_;
9254       return *this;
9255     }
9256 
9257     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2KHR &
setDstImageLayoutVULKAN_HPP_NAMESPACE::BlitImageInfo2KHR9258                             setDstImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ ) VULKAN_HPP_NOEXCEPT
9259     {
9260       dstImageLayout = dstImageLayout_;
9261       return *this;
9262     }
9263 
setRegionCountVULKAN_HPP_NAMESPACE::BlitImageInfo2KHR9264     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2KHR & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT
9265     {
9266       regionCount = regionCount_;
9267       return *this;
9268     }
9269 
9270     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2KHR &
setPRegionsVULKAN_HPP_NAMESPACE::BlitImageInfo2KHR9271                             setPRegions( const VULKAN_HPP_NAMESPACE::ImageBlit2KHR * pRegions_ ) VULKAN_HPP_NOEXCEPT
9272     {
9273       pRegions = pRegions_;
9274       return *this;
9275     }
9276 
9277 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setRegionsVULKAN_HPP_NAMESPACE::BlitImageInfo2KHR9278     BlitImageInfo2KHR & setRegions(
9279       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageBlit2KHR> const & regions_ )
9280       VULKAN_HPP_NOEXCEPT
9281     {
9282       regionCount = static_cast<uint32_t>( regions_.size() );
9283       pRegions    = regions_.data();
9284       return *this;
9285     }
9286 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
9287 
setFilterVULKAN_HPP_NAMESPACE::BlitImageInfo2KHR9288     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2KHR & setFilter( VULKAN_HPP_NAMESPACE::Filter filter_ ) VULKAN_HPP_NOEXCEPT
9289     {
9290       filter = filter_;
9291       return *this;
9292     }
9293 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
9294 
operator VkBlitImageInfo2KHR const&VULKAN_HPP_NAMESPACE::BlitImageInfo2KHR9295     explicit operator VkBlitImageInfo2KHR const &() const VULKAN_HPP_NOEXCEPT
9296     {
9297       return *reinterpret_cast<const VkBlitImageInfo2KHR *>( this );
9298     }
9299 
operator VkBlitImageInfo2KHR&VULKAN_HPP_NAMESPACE::BlitImageInfo2KHR9300     explicit operator VkBlitImageInfo2KHR &() VULKAN_HPP_NOEXCEPT
9301     {
9302       return *reinterpret_cast<VkBlitImageInfo2KHR *>( this );
9303     }
9304 
9305 #if 14 <= VULKAN_HPP_CPP_VERSION
9306     auto
9307 #else
9308     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
9309                const void * const &,
9310                VULKAN_HPP_NAMESPACE::Image const &,
9311                VULKAN_HPP_NAMESPACE::ImageLayout const &,
9312                VULKAN_HPP_NAMESPACE::Image const &,
9313                VULKAN_HPP_NAMESPACE::ImageLayout const &,
9314                uint32_t const &,
9315                const VULKAN_HPP_NAMESPACE::ImageBlit2KHR * const &,
9316                VULKAN_HPP_NAMESPACE::Filter const &>
9317 #endif
reflectVULKAN_HPP_NAMESPACE::BlitImageInfo2KHR9318       reflect() const VULKAN_HPP_NOEXCEPT
9319     {
9320       return std::tie(
9321         sType, pNext, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter );
9322     }
9323 
9324 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
9325     auto operator<=>( BlitImageInfo2KHR const & ) const = default;
9326 #else
operator ==VULKAN_HPP_NAMESPACE::BlitImageInfo2KHR9327     bool operator==( BlitImageInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
9328     {
9329       return this->reflect() == rhs.reflect();
9330     }
9331 
operator !=VULKAN_HPP_NAMESPACE::BlitImageInfo2KHR9332     bool operator!=( BlitImageInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
9333     {
9334       return this->reflect() != rhs.reflect();
9335     }
9336 #endif
9337 
9338   public:
9339     VULKAN_HPP_NAMESPACE::StructureType         sType          = StructureType::eBlitImageInfo2KHR;
9340     const void *                                pNext          = {};
9341     VULKAN_HPP_NAMESPACE::Image                 srcImage       = {};
9342     VULKAN_HPP_NAMESPACE::ImageLayout           srcImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
9343     VULKAN_HPP_NAMESPACE::Image                 dstImage       = {};
9344     VULKAN_HPP_NAMESPACE::ImageLayout           dstImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
9345     uint32_t                                    regionCount    = {};
9346     const VULKAN_HPP_NAMESPACE::ImageBlit2KHR * pRegions       = {};
9347     VULKAN_HPP_NAMESPACE::Filter                filter         = VULKAN_HPP_NAMESPACE::Filter::eNearest;
9348   };
9349   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BlitImageInfo2KHR ) == sizeof( VkBlitImageInfo2KHR ),
9350                             "struct and wrapper have different size!" );
9351   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::BlitImageInfo2KHR>::value,
9352                             "struct wrapper is not a standard layout!" );
9353   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::BlitImageInfo2KHR>::value,
9354                             "BlitImageInfo2KHR is not nothrow_move_constructible!" );
9355 
9356   template <>
9357   struct CppType<StructureType, StructureType::eBlitImageInfo2KHR>
9358   {
9359     using Type = BlitImageInfo2KHR;
9360   };
9361 
9362 #if defined( VK_USE_PLATFORM_FUCHSIA )
9363   struct BufferCollectionBufferCreateInfoFUCHSIA
9364   {
9365     using NativeType = VkBufferCollectionBufferCreateInfoFUCHSIA;
9366 
9367     static const bool                                  allowDuplicate = false;
9368     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
9369       StructureType::eBufferCollectionBufferCreateInfoFUCHSIA;
9370 
9371 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
9372     VULKAN_HPP_CONSTEXPR
BufferCollectionBufferCreateInfoFUCHSIAVULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA9373       BufferCollectionBufferCreateInfoFUCHSIA( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection_ = {},
9374                                                uint32_t index_ = {} ) VULKAN_HPP_NOEXCEPT
9375       : collection( collection_ )
9376       , index( index_ )
9377     {}
9378 
9379     VULKAN_HPP_CONSTEXPR BufferCollectionBufferCreateInfoFUCHSIA( BufferCollectionBufferCreateInfoFUCHSIA const & rhs )
9380       VULKAN_HPP_NOEXCEPT = default;
9381 
BufferCollectionBufferCreateInfoFUCHSIAVULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA9382     BufferCollectionBufferCreateInfoFUCHSIA( VkBufferCollectionBufferCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
9383       : BufferCollectionBufferCreateInfoFUCHSIA(
9384           *reinterpret_cast<BufferCollectionBufferCreateInfoFUCHSIA const *>( &rhs ) )
9385     {}
9386 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
9387 
9388     BufferCollectionBufferCreateInfoFUCHSIA &
9389       operator=( BufferCollectionBufferCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9390 
9391     BufferCollectionBufferCreateInfoFUCHSIA &
operator =VULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA9392       operator=( VkBufferCollectionBufferCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
9393     {
9394       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA const *>( &rhs );
9395       return *this;
9396     }
9397 
9398 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
9399     VULKAN_HPP_CONSTEXPR_14 BufferCollectionBufferCreateInfoFUCHSIA &
setPNextVULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA9400                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
9401     {
9402       pNext = pNext_;
9403       return *this;
9404     }
9405 
9406     VULKAN_HPP_CONSTEXPR_14 BufferCollectionBufferCreateInfoFUCHSIA &
setCollectionVULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA9407       setCollection( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection_ ) VULKAN_HPP_NOEXCEPT
9408     {
9409       collection = collection_;
9410       return *this;
9411     }
9412 
setIndexVULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA9413     VULKAN_HPP_CONSTEXPR_14 BufferCollectionBufferCreateInfoFUCHSIA & setIndex( uint32_t index_ ) VULKAN_HPP_NOEXCEPT
9414     {
9415       index = index_;
9416       return *this;
9417     }
9418 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
9419 
operator VkBufferCollectionBufferCreateInfoFUCHSIA const&VULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA9420     explicit operator VkBufferCollectionBufferCreateInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
9421     {
9422       return *reinterpret_cast<const VkBufferCollectionBufferCreateInfoFUCHSIA *>( this );
9423     }
9424 
operator VkBufferCollectionBufferCreateInfoFUCHSIA&VULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA9425     explicit operator VkBufferCollectionBufferCreateInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT
9426     {
9427       return *reinterpret_cast<VkBufferCollectionBufferCreateInfoFUCHSIA *>( this );
9428     }
9429 
9430 #  if 14 <= VULKAN_HPP_CPP_VERSION
9431     auto
9432 #  else
9433     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
9434                const void * const &,
9435                VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA const &,
9436                uint32_t const &>
9437 #  endif
reflectVULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA9438       reflect() const VULKAN_HPP_NOEXCEPT
9439     {
9440       return std::tie( sType, pNext, collection, index );
9441     }
9442 
9443 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
9444     auto operator<=>( BufferCollectionBufferCreateInfoFUCHSIA const & ) const = default;
9445 #  else
operator ==VULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA9446     bool operator==( BufferCollectionBufferCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
9447     {
9448       return this->reflect() == rhs.reflect();
9449     }
9450 
operator !=VULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA9451     bool operator!=( BufferCollectionBufferCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
9452     {
9453       return this->reflect() != rhs.reflect();
9454     }
9455 #  endif
9456 
9457   public:
9458     VULKAN_HPP_NAMESPACE::StructureType           sType      = StructureType::eBufferCollectionBufferCreateInfoFUCHSIA;
9459     const void *                                  pNext      = {};
9460     VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection = {};
9461     uint32_t                                      index      = {};
9462   };
9463   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA ) ==
9464                               sizeof( VkBufferCollectionBufferCreateInfoFUCHSIA ),
9465                             "struct and wrapper have different size!" );
9466   VULKAN_HPP_STATIC_ASSERT(
9467     std::is_standard_layout<VULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA>::value,
9468     "struct wrapper is not a standard layout!" );
9469   VULKAN_HPP_STATIC_ASSERT(
9470     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA>::value,
9471     "BufferCollectionBufferCreateInfoFUCHSIA is not nothrow_move_constructible!" );
9472 
9473   template <>
9474   struct CppType<StructureType, StructureType::eBufferCollectionBufferCreateInfoFUCHSIA>
9475   {
9476     using Type = BufferCollectionBufferCreateInfoFUCHSIA;
9477   };
9478 #endif /*VK_USE_PLATFORM_FUCHSIA*/
9479 
9480 #if defined( VK_USE_PLATFORM_FUCHSIA )
9481   struct BufferCollectionConstraintsInfoFUCHSIA
9482   {
9483     using NativeType = VkBufferCollectionConstraintsInfoFUCHSIA;
9484 
9485     static const bool                                  allowDuplicate = false;
9486     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
9487       StructureType::eBufferCollectionConstraintsInfoFUCHSIA;
9488 
9489 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
9490     VULKAN_HPP_CONSTEXPR
BufferCollectionConstraintsInfoFUCHSIAVULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA9491       BufferCollectionConstraintsInfoFUCHSIA( uint32_t minBufferCount_                  = {},
9492                                               uint32_t maxBufferCount_                  = {},
9493                                               uint32_t minBufferCountForCamping_        = {},
9494                                               uint32_t minBufferCountForDedicatedSlack_ = {},
9495                                               uint32_t minBufferCountForSharedSlack_    = {} ) VULKAN_HPP_NOEXCEPT
9496       : minBufferCount( minBufferCount_ )
9497       , maxBufferCount( maxBufferCount_ )
9498       , minBufferCountForCamping( minBufferCountForCamping_ )
9499       , minBufferCountForDedicatedSlack( minBufferCountForDedicatedSlack_ )
9500       , minBufferCountForSharedSlack( minBufferCountForSharedSlack_ )
9501     {}
9502 
9503     VULKAN_HPP_CONSTEXPR BufferCollectionConstraintsInfoFUCHSIA( BufferCollectionConstraintsInfoFUCHSIA const & rhs )
9504       VULKAN_HPP_NOEXCEPT = default;
9505 
BufferCollectionConstraintsInfoFUCHSIAVULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA9506     BufferCollectionConstraintsInfoFUCHSIA( VkBufferCollectionConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
9507       : BufferCollectionConstraintsInfoFUCHSIA(
9508           *reinterpret_cast<BufferCollectionConstraintsInfoFUCHSIA const *>( &rhs ) )
9509     {}
9510 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
9511 
9512     BufferCollectionConstraintsInfoFUCHSIA &
9513       operator=( BufferCollectionConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9514 
9515     BufferCollectionConstraintsInfoFUCHSIA &
operator =VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA9516       operator=( VkBufferCollectionConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
9517     {
9518       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA const *>( &rhs );
9519       return *this;
9520     }
9521 
9522 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA9523     VULKAN_HPP_CONSTEXPR_14 BufferCollectionConstraintsInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
9524     {
9525       pNext = pNext_;
9526       return *this;
9527     }
9528 
9529     VULKAN_HPP_CONSTEXPR_14 BufferCollectionConstraintsInfoFUCHSIA &
setMinBufferCountVULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA9530                             setMinBufferCount( uint32_t minBufferCount_ ) VULKAN_HPP_NOEXCEPT
9531     {
9532       minBufferCount = minBufferCount_;
9533       return *this;
9534     }
9535 
9536     VULKAN_HPP_CONSTEXPR_14 BufferCollectionConstraintsInfoFUCHSIA &
setMaxBufferCountVULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA9537                             setMaxBufferCount( uint32_t maxBufferCount_ ) VULKAN_HPP_NOEXCEPT
9538     {
9539       maxBufferCount = maxBufferCount_;
9540       return *this;
9541     }
9542 
9543     VULKAN_HPP_CONSTEXPR_14 BufferCollectionConstraintsInfoFUCHSIA &
setMinBufferCountForCampingVULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA9544                             setMinBufferCountForCamping( uint32_t minBufferCountForCamping_ ) VULKAN_HPP_NOEXCEPT
9545     {
9546       minBufferCountForCamping = minBufferCountForCamping_;
9547       return *this;
9548     }
9549 
9550     VULKAN_HPP_CONSTEXPR_14 BufferCollectionConstraintsInfoFUCHSIA &
setMinBufferCountForDedicatedSlackVULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA9551       setMinBufferCountForDedicatedSlack( uint32_t minBufferCountForDedicatedSlack_ ) VULKAN_HPP_NOEXCEPT
9552     {
9553       minBufferCountForDedicatedSlack = minBufferCountForDedicatedSlack_;
9554       return *this;
9555     }
9556 
9557     VULKAN_HPP_CONSTEXPR_14 BufferCollectionConstraintsInfoFUCHSIA &
setMinBufferCountForSharedSlackVULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA9558       setMinBufferCountForSharedSlack( uint32_t minBufferCountForSharedSlack_ ) VULKAN_HPP_NOEXCEPT
9559     {
9560       minBufferCountForSharedSlack = minBufferCountForSharedSlack_;
9561       return *this;
9562     }
9563 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
9564 
operator VkBufferCollectionConstraintsInfoFUCHSIA const&VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA9565     explicit operator VkBufferCollectionConstraintsInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
9566     {
9567       return *reinterpret_cast<const VkBufferCollectionConstraintsInfoFUCHSIA *>( this );
9568     }
9569 
operator VkBufferCollectionConstraintsInfoFUCHSIA&VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA9570     explicit operator VkBufferCollectionConstraintsInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT
9571     {
9572       return *reinterpret_cast<VkBufferCollectionConstraintsInfoFUCHSIA *>( this );
9573     }
9574 
9575 #  if 14 <= VULKAN_HPP_CPP_VERSION
9576     auto
9577 #  else
9578     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
9579                const void * const &,
9580                uint32_t const &,
9581                uint32_t const &,
9582                uint32_t const &,
9583                uint32_t const &,
9584                uint32_t const &>
9585 #  endif
reflectVULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA9586       reflect() const VULKAN_HPP_NOEXCEPT
9587     {
9588       return std::tie( sType,
9589                        pNext,
9590                        minBufferCount,
9591                        maxBufferCount,
9592                        minBufferCountForCamping,
9593                        minBufferCountForDedicatedSlack,
9594                        minBufferCountForSharedSlack );
9595     }
9596 
9597 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
9598     auto operator<=>( BufferCollectionConstraintsInfoFUCHSIA const & ) const = default;
9599 #  else
operator ==VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA9600     bool operator==( BufferCollectionConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
9601     {
9602       return this->reflect() == rhs.reflect();
9603     }
9604 
operator !=VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA9605     bool operator!=( BufferCollectionConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
9606     {
9607       return this->reflect() != rhs.reflect();
9608     }
9609 #  endif
9610 
9611   public:
9612     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eBufferCollectionConstraintsInfoFUCHSIA;
9613     const void *                        pNext          = {};
9614     uint32_t                            minBufferCount = {};
9615     uint32_t                            maxBufferCount = {};
9616     uint32_t                            minBufferCountForCamping        = {};
9617     uint32_t                            minBufferCountForDedicatedSlack = {};
9618     uint32_t                            minBufferCountForSharedSlack    = {};
9619   };
9620   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA ) ==
9621                               sizeof( VkBufferCollectionConstraintsInfoFUCHSIA ),
9622                             "struct and wrapper have different size!" );
9623   VULKAN_HPP_STATIC_ASSERT(
9624     std::is_standard_layout<VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA>::value,
9625     "struct wrapper is not a standard layout!" );
9626   VULKAN_HPP_STATIC_ASSERT(
9627     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA>::value,
9628     "BufferCollectionConstraintsInfoFUCHSIA is not nothrow_move_constructible!" );
9629 
9630   template <>
9631   struct CppType<StructureType, StructureType::eBufferCollectionConstraintsInfoFUCHSIA>
9632   {
9633     using Type = BufferCollectionConstraintsInfoFUCHSIA;
9634   };
9635 #endif /*VK_USE_PLATFORM_FUCHSIA*/
9636 
9637 #if defined( VK_USE_PLATFORM_FUCHSIA )
9638   struct BufferCollectionCreateInfoFUCHSIA
9639   {
9640     using NativeType = VkBufferCollectionCreateInfoFUCHSIA;
9641 
9642     static const bool                                  allowDuplicate = false;
9643     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
9644       StructureType::eBufferCollectionCreateInfoFUCHSIA;
9645 
9646 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferCollectionCreateInfoFUCHSIAVULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA9647     VULKAN_HPP_CONSTEXPR BufferCollectionCreateInfoFUCHSIA( zx_handle_t collectionToken_ = {} ) VULKAN_HPP_NOEXCEPT
9648       : collectionToken( collectionToken_ )
9649     {}
9650 
9651     VULKAN_HPP_CONSTEXPR
9652       BufferCollectionCreateInfoFUCHSIA( BufferCollectionCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9653 
BufferCollectionCreateInfoFUCHSIAVULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA9654     BufferCollectionCreateInfoFUCHSIA( VkBufferCollectionCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
9655       : BufferCollectionCreateInfoFUCHSIA( *reinterpret_cast<BufferCollectionCreateInfoFUCHSIA const *>( &rhs ) )
9656     {}
9657 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
9658 
9659     BufferCollectionCreateInfoFUCHSIA &
9660       operator=( BufferCollectionCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9661 
operator =VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA9662     BufferCollectionCreateInfoFUCHSIA & operator=( VkBufferCollectionCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
9663     {
9664       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA const *>( &rhs );
9665       return *this;
9666     }
9667 
9668 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA9669     VULKAN_HPP_CONSTEXPR_14 BufferCollectionCreateInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
9670     {
9671       pNext = pNext_;
9672       return *this;
9673     }
9674 
9675     VULKAN_HPP_CONSTEXPR_14 BufferCollectionCreateInfoFUCHSIA &
setCollectionTokenVULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA9676                             setCollectionToken( zx_handle_t collectionToken_ ) VULKAN_HPP_NOEXCEPT
9677     {
9678       collectionToken = collectionToken_;
9679       return *this;
9680     }
9681 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
9682 
operator VkBufferCollectionCreateInfoFUCHSIA const&VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA9683     explicit operator VkBufferCollectionCreateInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
9684     {
9685       return *reinterpret_cast<const VkBufferCollectionCreateInfoFUCHSIA *>( this );
9686     }
9687 
operator VkBufferCollectionCreateInfoFUCHSIA&VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA9688     explicit operator VkBufferCollectionCreateInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT
9689     {
9690       return *reinterpret_cast<VkBufferCollectionCreateInfoFUCHSIA *>( this );
9691     }
9692 
9693 #  if 14 <= VULKAN_HPP_CPP_VERSION
9694     auto
9695 #  else
9696     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, zx_handle_t const &>
9697 #  endif
reflectVULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA9698       reflect() const VULKAN_HPP_NOEXCEPT
9699     {
9700       return std::tie( sType, pNext, collectionToken );
9701     }
9702 
9703 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
9704     auto operator<=>( BufferCollectionCreateInfoFUCHSIA const & ) const = default;
9705 #  else
operator ==VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA9706     bool operator==( BufferCollectionCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
9707     {
9708       return this->reflect() == rhs.reflect();
9709     }
9710 
operator !=VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA9711     bool operator!=( BufferCollectionCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
9712     {
9713       return this->reflect() != rhs.reflect();
9714     }
9715 #  endif
9716 
9717   public:
9718     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::eBufferCollectionCreateInfoFUCHSIA;
9719     const void *                        pNext           = {};
9720     zx_handle_t                         collectionToken = {};
9721   };
9722   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA ) ==
9723                               sizeof( VkBufferCollectionCreateInfoFUCHSIA ),
9724                             "struct and wrapper have different size!" );
9725   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA>::value,
9726                             "struct wrapper is not a standard layout!" );
9727   VULKAN_HPP_STATIC_ASSERT(
9728     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA>::value,
9729     "BufferCollectionCreateInfoFUCHSIA is not nothrow_move_constructible!" );
9730 
9731   template <>
9732   struct CppType<StructureType, StructureType::eBufferCollectionCreateInfoFUCHSIA>
9733   {
9734     using Type = BufferCollectionCreateInfoFUCHSIA;
9735   };
9736 #endif /*VK_USE_PLATFORM_FUCHSIA*/
9737 
9738 #if defined( VK_USE_PLATFORM_FUCHSIA )
9739   struct BufferCollectionImageCreateInfoFUCHSIA
9740   {
9741     using NativeType = VkBufferCollectionImageCreateInfoFUCHSIA;
9742 
9743     static const bool                                  allowDuplicate = false;
9744     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
9745       StructureType::eBufferCollectionImageCreateInfoFUCHSIA;
9746 
9747 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
9748     VULKAN_HPP_CONSTEXPR
BufferCollectionImageCreateInfoFUCHSIAVULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA9749       BufferCollectionImageCreateInfoFUCHSIA( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection_ = {},
9750                                               uint32_t index_ = {} ) VULKAN_HPP_NOEXCEPT
9751       : collection( collection_ )
9752       , index( index_ )
9753     {}
9754 
9755     VULKAN_HPP_CONSTEXPR BufferCollectionImageCreateInfoFUCHSIA( BufferCollectionImageCreateInfoFUCHSIA const & rhs )
9756       VULKAN_HPP_NOEXCEPT = default;
9757 
BufferCollectionImageCreateInfoFUCHSIAVULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA9758     BufferCollectionImageCreateInfoFUCHSIA( VkBufferCollectionImageCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
9759       : BufferCollectionImageCreateInfoFUCHSIA(
9760           *reinterpret_cast<BufferCollectionImageCreateInfoFUCHSIA const *>( &rhs ) )
9761     {}
9762 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
9763 
9764     BufferCollectionImageCreateInfoFUCHSIA &
9765       operator=( BufferCollectionImageCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9766 
9767     BufferCollectionImageCreateInfoFUCHSIA &
operator =VULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA9768       operator=( VkBufferCollectionImageCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
9769     {
9770       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA const *>( &rhs );
9771       return *this;
9772     }
9773 
9774 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA9775     VULKAN_HPP_CONSTEXPR_14 BufferCollectionImageCreateInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
9776     {
9777       pNext = pNext_;
9778       return *this;
9779     }
9780 
9781     VULKAN_HPP_CONSTEXPR_14 BufferCollectionImageCreateInfoFUCHSIA &
setCollectionVULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA9782       setCollection( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection_ ) VULKAN_HPP_NOEXCEPT
9783     {
9784       collection = collection_;
9785       return *this;
9786     }
9787 
setIndexVULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA9788     VULKAN_HPP_CONSTEXPR_14 BufferCollectionImageCreateInfoFUCHSIA & setIndex( uint32_t index_ ) VULKAN_HPP_NOEXCEPT
9789     {
9790       index = index_;
9791       return *this;
9792     }
9793 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
9794 
operator VkBufferCollectionImageCreateInfoFUCHSIA const&VULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA9795     explicit operator VkBufferCollectionImageCreateInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
9796     {
9797       return *reinterpret_cast<const VkBufferCollectionImageCreateInfoFUCHSIA *>( this );
9798     }
9799 
operator VkBufferCollectionImageCreateInfoFUCHSIA&VULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA9800     explicit operator VkBufferCollectionImageCreateInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT
9801     {
9802       return *reinterpret_cast<VkBufferCollectionImageCreateInfoFUCHSIA *>( this );
9803     }
9804 
9805 #  if 14 <= VULKAN_HPP_CPP_VERSION
9806     auto
9807 #  else
9808     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
9809                const void * const &,
9810                VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA const &,
9811                uint32_t const &>
9812 #  endif
reflectVULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA9813       reflect() const VULKAN_HPP_NOEXCEPT
9814     {
9815       return std::tie( sType, pNext, collection, index );
9816     }
9817 
9818 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
9819     auto operator<=>( BufferCollectionImageCreateInfoFUCHSIA const & ) const = default;
9820 #  else
operator ==VULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA9821     bool operator==( BufferCollectionImageCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
9822     {
9823       return this->reflect() == rhs.reflect();
9824     }
9825 
operator !=VULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA9826     bool operator!=( BufferCollectionImageCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
9827     {
9828       return this->reflect() != rhs.reflect();
9829     }
9830 #  endif
9831 
9832   public:
9833     VULKAN_HPP_NAMESPACE::StructureType           sType      = StructureType::eBufferCollectionImageCreateInfoFUCHSIA;
9834     const void *                                  pNext      = {};
9835     VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection = {};
9836     uint32_t                                      index      = {};
9837   };
9838   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA ) ==
9839                               sizeof( VkBufferCollectionImageCreateInfoFUCHSIA ),
9840                             "struct and wrapper have different size!" );
9841   VULKAN_HPP_STATIC_ASSERT(
9842     std::is_standard_layout<VULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA>::value,
9843     "struct wrapper is not a standard layout!" );
9844   VULKAN_HPP_STATIC_ASSERT(
9845     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA>::value,
9846     "BufferCollectionImageCreateInfoFUCHSIA is not nothrow_move_constructible!" );
9847 
9848   template <>
9849   struct CppType<StructureType, StructureType::eBufferCollectionImageCreateInfoFUCHSIA>
9850   {
9851     using Type = BufferCollectionImageCreateInfoFUCHSIA;
9852   };
9853 #endif /*VK_USE_PLATFORM_FUCHSIA*/
9854 
9855 #if defined( VK_USE_PLATFORM_FUCHSIA )
9856   struct SysmemColorSpaceFUCHSIA
9857   {
9858     using NativeType = VkSysmemColorSpaceFUCHSIA;
9859 
9860     static const bool                                  allowDuplicate = false;
9861     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSysmemColorSpaceFUCHSIA;
9862 
9863 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SysmemColorSpaceFUCHSIAVULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA9864     VULKAN_HPP_CONSTEXPR SysmemColorSpaceFUCHSIA( uint32_t colorSpace_ = {} ) VULKAN_HPP_NOEXCEPT
9865       : colorSpace( colorSpace_ )
9866     {}
9867 
9868     VULKAN_HPP_CONSTEXPR SysmemColorSpaceFUCHSIA( SysmemColorSpaceFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9869 
SysmemColorSpaceFUCHSIAVULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA9870     SysmemColorSpaceFUCHSIA( VkSysmemColorSpaceFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
9871       : SysmemColorSpaceFUCHSIA( *reinterpret_cast<SysmemColorSpaceFUCHSIA const *>( &rhs ) )
9872     {}
9873 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
9874 
9875     SysmemColorSpaceFUCHSIA & operator=( SysmemColorSpaceFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9876 
operator =VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA9877     SysmemColorSpaceFUCHSIA & operator=( VkSysmemColorSpaceFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
9878     {
9879       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA const *>( &rhs );
9880       return *this;
9881     }
9882 
9883 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA9884     VULKAN_HPP_CONSTEXPR_14 SysmemColorSpaceFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
9885     {
9886       pNext = pNext_;
9887       return *this;
9888     }
9889 
setColorSpaceVULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA9890     VULKAN_HPP_CONSTEXPR_14 SysmemColorSpaceFUCHSIA & setColorSpace( uint32_t colorSpace_ ) VULKAN_HPP_NOEXCEPT
9891     {
9892       colorSpace = colorSpace_;
9893       return *this;
9894     }
9895 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
9896 
operator VkSysmemColorSpaceFUCHSIA const&VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA9897     explicit operator VkSysmemColorSpaceFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
9898     {
9899       return *reinterpret_cast<const VkSysmemColorSpaceFUCHSIA *>( this );
9900     }
9901 
operator VkSysmemColorSpaceFUCHSIA&VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA9902     explicit operator VkSysmemColorSpaceFUCHSIA &() VULKAN_HPP_NOEXCEPT
9903     {
9904       return *reinterpret_cast<VkSysmemColorSpaceFUCHSIA *>( this );
9905     }
9906 
9907 #  if 14 <= VULKAN_HPP_CPP_VERSION
9908     auto
9909 #  else
9910     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &>
9911 #  endif
reflectVULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA9912       reflect() const VULKAN_HPP_NOEXCEPT
9913     {
9914       return std::tie( sType, pNext, colorSpace );
9915     }
9916 
9917 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
9918     auto operator<=>( SysmemColorSpaceFUCHSIA const & ) const = default;
9919 #  else
operator ==VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA9920     bool operator==( SysmemColorSpaceFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
9921     {
9922       return this->reflect() == rhs.reflect();
9923     }
9924 
operator !=VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA9925     bool operator!=( SysmemColorSpaceFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
9926     {
9927       return this->reflect() != rhs.reflect();
9928     }
9929 #  endif
9930 
9931   public:
9932     VULKAN_HPP_NAMESPACE::StructureType sType      = StructureType::eSysmemColorSpaceFUCHSIA;
9933     const void *                        pNext      = {};
9934     uint32_t                            colorSpace = {};
9935   };
9936   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA ) ==
9937                               sizeof( VkSysmemColorSpaceFUCHSIA ),
9938                             "struct and wrapper have different size!" );
9939   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA>::value,
9940                             "struct wrapper is not a standard layout!" );
9941   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA>::value,
9942                             "SysmemColorSpaceFUCHSIA is not nothrow_move_constructible!" );
9943 
9944   template <>
9945   struct CppType<StructureType, StructureType::eSysmemColorSpaceFUCHSIA>
9946   {
9947     using Type = SysmemColorSpaceFUCHSIA;
9948   };
9949 #endif /*VK_USE_PLATFORM_FUCHSIA*/
9950 
9951 #if defined( VK_USE_PLATFORM_FUCHSIA )
9952   struct BufferCollectionPropertiesFUCHSIA
9953   {
9954     using NativeType = VkBufferCollectionPropertiesFUCHSIA;
9955 
9956     static const bool                                  allowDuplicate = false;
9957     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
9958       StructureType::eBufferCollectionPropertiesFUCHSIA;
9959 
9960 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferCollectionPropertiesFUCHSIAVULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA9961     VULKAN_HPP_CONSTEXPR BufferCollectionPropertiesFUCHSIA(
9962       uint32_t                                          memoryTypeBits_                   = {},
9963       uint32_t                                          bufferCount_                      = {},
9964       uint32_t                                          createInfoIndex_                  = {},
9965       uint64_t                                          sysmemPixelFormat_                = {},
9966       VULKAN_HPP_NAMESPACE::FormatFeatureFlags          formatFeatures_                   = {},
9967       VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA     sysmemColorSpaceIndex_            = {},
9968       VULKAN_HPP_NAMESPACE::ComponentMapping            samplerYcbcrConversionComponents_ = {},
9969       VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion suggestedYcbcrModel_ =
9970         VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity,
9971       VULKAN_HPP_NAMESPACE::SamplerYcbcrRange suggestedYcbcrRange_ = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull,
9972       VULKAN_HPP_NAMESPACE::ChromaLocation suggestedXChromaOffset_ = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven,
9973       VULKAN_HPP_NAMESPACE::ChromaLocation suggestedYChromaOffset_ =
9974         VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven ) VULKAN_HPP_NOEXCEPT
9975       : memoryTypeBits( memoryTypeBits_ )
9976       , bufferCount( bufferCount_ )
9977       , createInfoIndex( createInfoIndex_ )
9978       , sysmemPixelFormat( sysmemPixelFormat_ )
9979       , formatFeatures( formatFeatures_ )
9980       , sysmemColorSpaceIndex( sysmemColorSpaceIndex_ )
9981       , samplerYcbcrConversionComponents( samplerYcbcrConversionComponents_ )
9982       , suggestedYcbcrModel( suggestedYcbcrModel_ )
9983       , suggestedYcbcrRange( suggestedYcbcrRange_ )
9984       , suggestedXChromaOffset( suggestedXChromaOffset_ )
9985       , suggestedYChromaOffset( suggestedYChromaOffset_ )
9986     {}
9987 
9988     VULKAN_HPP_CONSTEXPR
9989       BufferCollectionPropertiesFUCHSIA( BufferCollectionPropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9990 
BufferCollectionPropertiesFUCHSIAVULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA9991     BufferCollectionPropertiesFUCHSIA( VkBufferCollectionPropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
9992       : BufferCollectionPropertiesFUCHSIA( *reinterpret_cast<BufferCollectionPropertiesFUCHSIA const *>( &rhs ) )
9993     {}
9994 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
9995 
9996     BufferCollectionPropertiesFUCHSIA &
9997       operator=( BufferCollectionPropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9998 
operator =VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA9999     BufferCollectionPropertiesFUCHSIA & operator=( VkBufferCollectionPropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
10000     {
10001       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA const *>( &rhs );
10002       return *this;
10003     }
10004 
10005 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA10006     VULKAN_HPP_CONSTEXPR_14 BufferCollectionPropertiesFUCHSIA & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
10007     {
10008       pNext = pNext_;
10009       return *this;
10010     }
10011 
10012     VULKAN_HPP_CONSTEXPR_14 BufferCollectionPropertiesFUCHSIA &
setMemoryTypeBitsVULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA10013                             setMemoryTypeBits( uint32_t memoryTypeBits_ ) VULKAN_HPP_NOEXCEPT
10014     {
10015       memoryTypeBits = memoryTypeBits_;
10016       return *this;
10017     }
10018 
10019     VULKAN_HPP_CONSTEXPR_14 BufferCollectionPropertiesFUCHSIA &
setBufferCountVULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA10020                             setBufferCount( uint32_t bufferCount_ ) VULKAN_HPP_NOEXCEPT
10021     {
10022       bufferCount = bufferCount_;
10023       return *this;
10024     }
10025 
10026     VULKAN_HPP_CONSTEXPR_14 BufferCollectionPropertiesFUCHSIA &
setCreateInfoIndexVULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA10027                             setCreateInfoIndex( uint32_t createInfoIndex_ ) VULKAN_HPP_NOEXCEPT
10028     {
10029       createInfoIndex = createInfoIndex_;
10030       return *this;
10031     }
10032 
10033     VULKAN_HPP_CONSTEXPR_14 BufferCollectionPropertiesFUCHSIA &
setSysmemPixelFormatVULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA10034                             setSysmemPixelFormat( uint64_t sysmemPixelFormat_ ) VULKAN_HPP_NOEXCEPT
10035     {
10036       sysmemPixelFormat = sysmemPixelFormat_;
10037       return *this;
10038     }
10039 
10040     VULKAN_HPP_CONSTEXPR_14 BufferCollectionPropertiesFUCHSIA &
setFormatFeaturesVULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA10041       setFormatFeatures( VULKAN_HPP_NAMESPACE::FormatFeatureFlags formatFeatures_ ) VULKAN_HPP_NOEXCEPT
10042     {
10043       formatFeatures = formatFeatures_;
10044       return *this;
10045     }
10046 
setSysmemColorSpaceIndexVULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA10047     VULKAN_HPP_CONSTEXPR_14 BufferCollectionPropertiesFUCHSIA & setSysmemColorSpaceIndex(
10048       VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA const & sysmemColorSpaceIndex_ ) VULKAN_HPP_NOEXCEPT
10049     {
10050       sysmemColorSpaceIndex = sysmemColorSpaceIndex_;
10051       return *this;
10052     }
10053 
setSamplerYcbcrConversionComponentsVULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA10054     VULKAN_HPP_CONSTEXPR_14 BufferCollectionPropertiesFUCHSIA & setSamplerYcbcrConversionComponents(
10055       VULKAN_HPP_NAMESPACE::ComponentMapping const & samplerYcbcrConversionComponents_ ) VULKAN_HPP_NOEXCEPT
10056     {
10057       samplerYcbcrConversionComponents = samplerYcbcrConversionComponents_;
10058       return *this;
10059     }
10060 
setSuggestedYcbcrModelVULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA10061     VULKAN_HPP_CONSTEXPR_14 BufferCollectionPropertiesFUCHSIA & setSuggestedYcbcrModel(
10062       VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion suggestedYcbcrModel_ ) VULKAN_HPP_NOEXCEPT
10063     {
10064       suggestedYcbcrModel = suggestedYcbcrModel_;
10065       return *this;
10066     }
10067 
10068     VULKAN_HPP_CONSTEXPR_14 BufferCollectionPropertiesFUCHSIA &
setSuggestedYcbcrRangeVULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA10069       setSuggestedYcbcrRange( VULKAN_HPP_NAMESPACE::SamplerYcbcrRange suggestedYcbcrRange_ ) VULKAN_HPP_NOEXCEPT
10070     {
10071       suggestedYcbcrRange = suggestedYcbcrRange_;
10072       return *this;
10073     }
10074 
10075     VULKAN_HPP_CONSTEXPR_14 BufferCollectionPropertiesFUCHSIA &
setSuggestedXChromaOffsetVULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA10076       setSuggestedXChromaOffset( VULKAN_HPP_NAMESPACE::ChromaLocation suggestedXChromaOffset_ ) VULKAN_HPP_NOEXCEPT
10077     {
10078       suggestedXChromaOffset = suggestedXChromaOffset_;
10079       return *this;
10080     }
10081 
10082     VULKAN_HPP_CONSTEXPR_14 BufferCollectionPropertiesFUCHSIA &
setSuggestedYChromaOffsetVULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA10083       setSuggestedYChromaOffset( VULKAN_HPP_NAMESPACE::ChromaLocation suggestedYChromaOffset_ ) VULKAN_HPP_NOEXCEPT
10084     {
10085       suggestedYChromaOffset = suggestedYChromaOffset_;
10086       return *this;
10087     }
10088 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
10089 
operator VkBufferCollectionPropertiesFUCHSIA const&VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA10090     explicit operator VkBufferCollectionPropertiesFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
10091     {
10092       return *reinterpret_cast<const VkBufferCollectionPropertiesFUCHSIA *>( this );
10093     }
10094 
operator VkBufferCollectionPropertiesFUCHSIA&VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA10095     explicit operator VkBufferCollectionPropertiesFUCHSIA &() VULKAN_HPP_NOEXCEPT
10096     {
10097       return *reinterpret_cast<VkBufferCollectionPropertiesFUCHSIA *>( this );
10098     }
10099 
10100 #  if 14 <= VULKAN_HPP_CPP_VERSION
10101     auto
10102 #  else
10103     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
10104                void * const &,
10105                uint32_t const &,
10106                uint32_t const &,
10107                uint32_t const &,
10108                uint64_t const &,
10109                VULKAN_HPP_NAMESPACE::FormatFeatureFlags const &,
10110                VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA const &,
10111                VULKAN_HPP_NAMESPACE::ComponentMapping const &,
10112                VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion const &,
10113                VULKAN_HPP_NAMESPACE::SamplerYcbcrRange const &,
10114                VULKAN_HPP_NAMESPACE::ChromaLocation const &,
10115                VULKAN_HPP_NAMESPACE::ChromaLocation const &>
10116 #  endif
reflectVULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA10117       reflect() const VULKAN_HPP_NOEXCEPT
10118     {
10119       return std::tie( sType,
10120                        pNext,
10121                        memoryTypeBits,
10122                        bufferCount,
10123                        createInfoIndex,
10124                        sysmemPixelFormat,
10125                        formatFeatures,
10126                        sysmemColorSpaceIndex,
10127                        samplerYcbcrConversionComponents,
10128                        suggestedYcbcrModel,
10129                        suggestedYcbcrRange,
10130                        suggestedXChromaOffset,
10131                        suggestedYChromaOffset );
10132     }
10133 
10134 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
10135     auto operator<=>( BufferCollectionPropertiesFUCHSIA const & ) const = default;
10136 #  else
operator ==VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA10137     bool operator==( BufferCollectionPropertiesFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
10138     {
10139       return this->reflect() == rhs.reflect();
10140     }
10141 
operator !=VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA10142     bool operator!=( BufferCollectionPropertiesFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
10143     {
10144       return this->reflect() != rhs.reflect();
10145     }
10146 #  endif
10147 
10148   public:
10149     VULKAN_HPP_NAMESPACE::StructureType               sType = StructureType::eBufferCollectionPropertiesFUCHSIA;
10150     void *                                            pNext = {};
10151     uint32_t                                          memoryTypeBits                   = {};
10152     uint32_t                                          bufferCount                      = {};
10153     uint32_t                                          createInfoIndex                  = {};
10154     uint64_t                                          sysmemPixelFormat                = {};
10155     VULKAN_HPP_NAMESPACE::FormatFeatureFlags          formatFeatures                   = {};
10156     VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA     sysmemColorSpaceIndex            = {};
10157     VULKAN_HPP_NAMESPACE::ComponentMapping            samplerYcbcrConversionComponents = {};
10158     VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion suggestedYcbcrModel =
10159       VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity;
10160     VULKAN_HPP_NAMESPACE::SamplerYcbcrRange suggestedYcbcrRange    = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull;
10161     VULKAN_HPP_NAMESPACE::ChromaLocation    suggestedXChromaOffset = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven;
10162     VULKAN_HPP_NAMESPACE::ChromaLocation    suggestedYChromaOffset = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven;
10163   };
10164   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA ) ==
10165                               sizeof( VkBufferCollectionPropertiesFUCHSIA ),
10166                             "struct and wrapper have different size!" );
10167   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA>::value,
10168                             "struct wrapper is not a standard layout!" );
10169   VULKAN_HPP_STATIC_ASSERT(
10170     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA>::value,
10171     "BufferCollectionPropertiesFUCHSIA is not nothrow_move_constructible!" );
10172 
10173   template <>
10174   struct CppType<StructureType, StructureType::eBufferCollectionPropertiesFUCHSIA>
10175   {
10176     using Type = BufferCollectionPropertiesFUCHSIA;
10177   };
10178 #endif /*VK_USE_PLATFORM_FUCHSIA*/
10179 
10180   struct BufferCreateInfo
10181   {
10182     using NativeType = VkBufferCreateInfo;
10183 
10184     static const bool                                  allowDuplicate = false;
10185     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferCreateInfo;
10186 
10187 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
10188     VULKAN_HPP_CONSTEXPR
BufferCreateInfoVULKAN_HPP_NAMESPACE::BufferCreateInfo10189       BufferCreateInfo( VULKAN_HPP_NAMESPACE::BufferCreateFlags flags_ = {},
10190                         VULKAN_HPP_NAMESPACE::DeviceSize        size_  = {},
10191                         VULKAN_HPP_NAMESPACE::BufferUsageFlags  usage_ = {},
10192                         VULKAN_HPP_NAMESPACE::SharingMode sharingMode_ = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive,
10193                         uint32_t                          queueFamilyIndexCount_ = {},
10194                         const uint32_t *                  pQueueFamilyIndices_   = {} ) VULKAN_HPP_NOEXCEPT
10195       : flags( flags_ )
10196       , size( size_ )
10197       , usage( usage_ )
10198       , sharingMode( sharingMode_ )
10199       , queueFamilyIndexCount( queueFamilyIndexCount_ )
10200       , pQueueFamilyIndices( pQueueFamilyIndices_ )
10201     {}
10202 
10203     VULKAN_HPP_CONSTEXPR BufferCreateInfo( BufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10204 
BufferCreateInfoVULKAN_HPP_NAMESPACE::BufferCreateInfo10205     BufferCreateInfo( VkBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
10206       : BufferCreateInfo( *reinterpret_cast<BufferCreateInfo const *>( &rhs ) )
10207     {}
10208 
10209 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
BufferCreateInfoVULKAN_HPP_NAMESPACE::BufferCreateInfo10210     BufferCreateInfo( VULKAN_HPP_NAMESPACE::BufferCreateFlags                               flags_,
10211                       VULKAN_HPP_NAMESPACE::DeviceSize                                      size_,
10212                       VULKAN_HPP_NAMESPACE::BufferUsageFlags                                usage_,
10213                       VULKAN_HPP_NAMESPACE::SharingMode                                     sharingMode_,
10214                       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & queueFamilyIndices_ )
10215       : flags( flags_ )
10216       , size( size_ )
10217       , usage( usage_ )
10218       , sharingMode( sharingMode_ )
10219       , queueFamilyIndexCount( static_cast<uint32_t>( queueFamilyIndices_.size() ) )
10220       , pQueueFamilyIndices( queueFamilyIndices_.data() )
10221     {}
10222 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
10223 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
10224 
10225     BufferCreateInfo & operator=( BufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10226 
operator =VULKAN_HPP_NAMESPACE::BufferCreateInfo10227     BufferCreateInfo & operator=( VkBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
10228     {
10229       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferCreateInfo const *>( &rhs );
10230       return *this;
10231     }
10232 
10233 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferCreateInfo10234     VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
10235     {
10236       pNext = pNext_;
10237       return *this;
10238     }
10239 
10240     VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::BufferCreateInfo10241                             setFlags( VULKAN_HPP_NAMESPACE::BufferCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
10242     {
10243       flags = flags_;
10244       return *this;
10245     }
10246 
setSizeVULKAN_HPP_NAMESPACE::BufferCreateInfo10247     VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
10248     {
10249       size = size_;
10250       return *this;
10251     }
10252 
10253     VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo &
setUsageVULKAN_HPP_NAMESPACE::BufferCreateInfo10254                             setUsage( VULKAN_HPP_NAMESPACE::BufferUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT
10255     {
10256       usage = usage_;
10257       return *this;
10258     }
10259 
10260     VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo &
setSharingModeVULKAN_HPP_NAMESPACE::BufferCreateInfo10261                             setSharingMode( VULKAN_HPP_NAMESPACE::SharingMode sharingMode_ ) VULKAN_HPP_NOEXCEPT
10262     {
10263       sharingMode = sharingMode_;
10264       return *this;
10265     }
10266 
10267     VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo &
setQueueFamilyIndexCountVULKAN_HPP_NAMESPACE::BufferCreateInfo10268                             setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) VULKAN_HPP_NOEXCEPT
10269     {
10270       queueFamilyIndexCount = queueFamilyIndexCount_;
10271       return *this;
10272     }
10273 
10274     VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo &
setPQueueFamilyIndicesVULKAN_HPP_NAMESPACE::BufferCreateInfo10275                             setPQueueFamilyIndices( const uint32_t * pQueueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT
10276     {
10277       pQueueFamilyIndices = pQueueFamilyIndices_;
10278       return *this;
10279     }
10280 
10281 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setQueueFamilyIndicesVULKAN_HPP_NAMESPACE::BufferCreateInfo10282     BufferCreateInfo & setQueueFamilyIndices(
10283       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & queueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT
10284     {
10285       queueFamilyIndexCount = static_cast<uint32_t>( queueFamilyIndices_.size() );
10286       pQueueFamilyIndices   = queueFamilyIndices_.data();
10287       return *this;
10288     }
10289 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
10290 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
10291 
operator VkBufferCreateInfo const&VULKAN_HPP_NAMESPACE::BufferCreateInfo10292     explicit operator VkBufferCreateInfo const &() const VULKAN_HPP_NOEXCEPT
10293     {
10294       return *reinterpret_cast<const VkBufferCreateInfo *>( this );
10295     }
10296 
operator VkBufferCreateInfo&VULKAN_HPP_NAMESPACE::BufferCreateInfo10297     explicit operator VkBufferCreateInfo &() VULKAN_HPP_NOEXCEPT
10298     {
10299       return *reinterpret_cast<VkBufferCreateInfo *>( this );
10300     }
10301 
10302 #if 14 <= VULKAN_HPP_CPP_VERSION
10303     auto
10304 #else
10305     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
10306                const void * const &,
10307                VULKAN_HPP_NAMESPACE::BufferCreateFlags const &,
10308                VULKAN_HPP_NAMESPACE::DeviceSize const &,
10309                VULKAN_HPP_NAMESPACE::BufferUsageFlags const &,
10310                VULKAN_HPP_NAMESPACE::SharingMode const &,
10311                uint32_t const &,
10312                const uint32_t * const &>
10313 #endif
reflectVULKAN_HPP_NAMESPACE::BufferCreateInfo10314       reflect() const VULKAN_HPP_NOEXCEPT
10315     {
10316       return std::tie( sType, pNext, flags, size, usage, sharingMode, queueFamilyIndexCount, pQueueFamilyIndices );
10317     }
10318 
10319 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
10320     auto operator<=>( BufferCreateInfo const & ) const = default;
10321 #else
operator ==VULKAN_HPP_NAMESPACE::BufferCreateInfo10322     bool operator==( BufferCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
10323     {
10324       return this->reflect() == rhs.reflect();
10325     }
10326 
operator !=VULKAN_HPP_NAMESPACE::BufferCreateInfo10327     bool operator!=( BufferCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
10328     {
10329       return this->reflect() != rhs.reflect();
10330     }
10331 #endif
10332 
10333   public:
10334     VULKAN_HPP_NAMESPACE::StructureType     sType                 = StructureType::eBufferCreateInfo;
10335     const void *                            pNext                 = {};
10336     VULKAN_HPP_NAMESPACE::BufferCreateFlags flags                 = {};
10337     VULKAN_HPP_NAMESPACE::DeviceSize        size                  = {};
10338     VULKAN_HPP_NAMESPACE::BufferUsageFlags  usage                 = {};
10339     VULKAN_HPP_NAMESPACE::SharingMode       sharingMode           = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive;
10340     uint32_t                                queueFamilyIndexCount = {};
10341     const uint32_t *                        pQueueFamilyIndices   = {};
10342   };
10343   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferCreateInfo ) == sizeof( VkBufferCreateInfo ),
10344                             "struct and wrapper have different size!" );
10345   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::BufferCreateInfo>::value,
10346                             "struct wrapper is not a standard layout!" );
10347   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::BufferCreateInfo>::value,
10348                             "BufferCreateInfo is not nothrow_move_constructible!" );
10349 
10350   template <>
10351   struct CppType<StructureType, StructureType::eBufferCreateInfo>
10352   {
10353     using Type = BufferCreateInfo;
10354   };
10355 
10356 #if defined( VK_USE_PLATFORM_FUCHSIA )
10357   struct BufferConstraintsInfoFUCHSIA
10358   {
10359     using NativeType = VkBufferConstraintsInfoFUCHSIA;
10360 
10361     static const bool                                  allowDuplicate = false;
10362     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferConstraintsInfoFUCHSIA;
10363 
10364 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferConstraintsInfoFUCHSIAVULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA10365     VULKAN_HPP_CONSTEXPR BufferConstraintsInfoFUCHSIA(
10366       VULKAN_HPP_NAMESPACE::BufferCreateInfo                       createInfo_                  = {},
10367       VULKAN_HPP_NAMESPACE::FormatFeatureFlags                     requiredFormatFeatures_      = {},
10368       VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints_ = {} )
10369       VULKAN_HPP_NOEXCEPT
10370       : createInfo( createInfo_ )
10371       , requiredFormatFeatures( requiredFormatFeatures_ )
10372       , bufferCollectionConstraints( bufferCollectionConstraints_ )
10373     {}
10374 
10375     VULKAN_HPP_CONSTEXPR
10376       BufferConstraintsInfoFUCHSIA( BufferConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10377 
BufferConstraintsInfoFUCHSIAVULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA10378     BufferConstraintsInfoFUCHSIA( VkBufferConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
10379       : BufferConstraintsInfoFUCHSIA( *reinterpret_cast<BufferConstraintsInfoFUCHSIA const *>( &rhs ) )
10380     {}
10381 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
10382 
10383     BufferConstraintsInfoFUCHSIA & operator=( BufferConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10384 
operator =VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA10385     BufferConstraintsInfoFUCHSIA & operator=( VkBufferConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
10386     {
10387       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA const *>( &rhs );
10388       return *this;
10389     }
10390 
10391 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA10392     VULKAN_HPP_CONSTEXPR_14 BufferConstraintsInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
10393     {
10394       pNext = pNext_;
10395       return *this;
10396     }
10397 
10398     VULKAN_HPP_CONSTEXPR_14 BufferConstraintsInfoFUCHSIA &
setCreateInfoVULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA10399       setCreateInfo( VULKAN_HPP_NAMESPACE::BufferCreateInfo const & createInfo_ ) VULKAN_HPP_NOEXCEPT
10400     {
10401       createInfo = createInfo_;
10402       return *this;
10403     }
10404 
10405     VULKAN_HPP_CONSTEXPR_14 BufferConstraintsInfoFUCHSIA &
setRequiredFormatFeaturesVULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA10406       setRequiredFormatFeatures( VULKAN_HPP_NAMESPACE::FormatFeatureFlags requiredFormatFeatures_ ) VULKAN_HPP_NOEXCEPT
10407     {
10408       requiredFormatFeatures = requiredFormatFeatures_;
10409       return *this;
10410     }
10411 
setBufferCollectionConstraintsVULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA10412     VULKAN_HPP_CONSTEXPR_14 BufferConstraintsInfoFUCHSIA & setBufferCollectionConstraints(
10413       VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA const & bufferCollectionConstraints_ )
10414       VULKAN_HPP_NOEXCEPT
10415     {
10416       bufferCollectionConstraints = bufferCollectionConstraints_;
10417       return *this;
10418     }
10419 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
10420 
operator VkBufferConstraintsInfoFUCHSIA const&VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA10421     explicit operator VkBufferConstraintsInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
10422     {
10423       return *reinterpret_cast<const VkBufferConstraintsInfoFUCHSIA *>( this );
10424     }
10425 
operator VkBufferConstraintsInfoFUCHSIA&VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA10426     explicit operator VkBufferConstraintsInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT
10427     {
10428       return *reinterpret_cast<VkBufferConstraintsInfoFUCHSIA *>( this );
10429     }
10430 
10431 #  if 14 <= VULKAN_HPP_CPP_VERSION
10432     auto
10433 #  else
10434     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
10435                const void * const &,
10436                VULKAN_HPP_NAMESPACE::BufferCreateInfo const &,
10437                VULKAN_HPP_NAMESPACE::FormatFeatureFlags const &,
10438                VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA const &>
10439 #  endif
reflectVULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA10440       reflect() const VULKAN_HPP_NOEXCEPT
10441     {
10442       return std::tie( sType, pNext, createInfo, requiredFormatFeatures, bufferCollectionConstraints );
10443     }
10444 
10445 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
10446     auto operator<=>( BufferConstraintsInfoFUCHSIA const & ) const = default;
10447 #  else
operator ==VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA10448     bool operator==( BufferConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
10449     {
10450       return this->reflect() == rhs.reflect();
10451     }
10452 
operator !=VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA10453     bool operator!=( BufferConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
10454     {
10455       return this->reflect() != rhs.reflect();
10456     }
10457 #  endif
10458 
10459   public:
10460     VULKAN_HPP_NAMESPACE::StructureType                          sType = StructureType::eBufferConstraintsInfoFUCHSIA;
10461     const void *                                                 pNext = {};
10462     VULKAN_HPP_NAMESPACE::BufferCreateInfo                       createInfo                  = {};
10463     VULKAN_HPP_NAMESPACE::FormatFeatureFlags                     requiredFormatFeatures      = {};
10464     VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints = {};
10465   };
10466   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA ) ==
10467                               sizeof( VkBufferConstraintsInfoFUCHSIA ),
10468                             "struct and wrapper have different size!" );
10469   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA>::value,
10470                             "struct wrapper is not a standard layout!" );
10471   VULKAN_HPP_STATIC_ASSERT(
10472     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA>::value,
10473     "BufferConstraintsInfoFUCHSIA is not nothrow_move_constructible!" );
10474 
10475   template <>
10476   struct CppType<StructureType, StructureType::eBufferConstraintsInfoFUCHSIA>
10477   {
10478     using Type = BufferConstraintsInfoFUCHSIA;
10479   };
10480 #endif /*VK_USE_PLATFORM_FUCHSIA*/
10481 
10482   struct BufferCopy
10483   {
10484     using NativeType = VkBufferCopy;
10485 
10486 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferCopyVULKAN_HPP_NAMESPACE::BufferCopy10487     VULKAN_HPP_CONSTEXPR BufferCopy( VULKAN_HPP_NAMESPACE::DeviceSize srcOffset_ = {},
10488                                      VULKAN_HPP_NAMESPACE::DeviceSize dstOffset_ = {},
10489                                      VULKAN_HPP_NAMESPACE::DeviceSize size_      = {} ) VULKAN_HPP_NOEXCEPT
10490       : srcOffset( srcOffset_ )
10491       , dstOffset( dstOffset_ )
10492       , size( size_ )
10493     {}
10494 
10495     VULKAN_HPP_CONSTEXPR BufferCopy( BufferCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10496 
BufferCopyVULKAN_HPP_NAMESPACE::BufferCopy10497     BufferCopy( VkBufferCopy const & rhs ) VULKAN_HPP_NOEXCEPT
10498       : BufferCopy( *reinterpret_cast<BufferCopy const *>( &rhs ) )
10499     {}
10500 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
10501 
10502     BufferCopy & operator=( BufferCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10503 
operator =VULKAN_HPP_NAMESPACE::BufferCopy10504     BufferCopy & operator=( VkBufferCopy const & rhs ) VULKAN_HPP_NOEXCEPT
10505     {
10506       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferCopy const *>( &rhs );
10507       return *this;
10508     }
10509 
10510 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSrcOffsetVULKAN_HPP_NAMESPACE::BufferCopy10511     VULKAN_HPP_CONSTEXPR_14 BufferCopy & setSrcOffset( VULKAN_HPP_NAMESPACE::DeviceSize srcOffset_ ) VULKAN_HPP_NOEXCEPT
10512     {
10513       srcOffset = srcOffset_;
10514       return *this;
10515     }
10516 
setDstOffsetVULKAN_HPP_NAMESPACE::BufferCopy10517     VULKAN_HPP_CONSTEXPR_14 BufferCopy & setDstOffset( VULKAN_HPP_NAMESPACE::DeviceSize dstOffset_ ) VULKAN_HPP_NOEXCEPT
10518     {
10519       dstOffset = dstOffset_;
10520       return *this;
10521     }
10522 
setSizeVULKAN_HPP_NAMESPACE::BufferCopy10523     VULKAN_HPP_CONSTEXPR_14 BufferCopy & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
10524     {
10525       size = size_;
10526       return *this;
10527     }
10528 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
10529 
operator VkBufferCopy const&VULKAN_HPP_NAMESPACE::BufferCopy10530     explicit operator VkBufferCopy const &() const VULKAN_HPP_NOEXCEPT
10531     {
10532       return *reinterpret_cast<const VkBufferCopy *>( this );
10533     }
10534 
operator VkBufferCopy&VULKAN_HPP_NAMESPACE::BufferCopy10535     explicit operator VkBufferCopy &() VULKAN_HPP_NOEXCEPT
10536     {
10537       return *reinterpret_cast<VkBufferCopy *>( this );
10538     }
10539 
10540 #if 14 <= VULKAN_HPP_CPP_VERSION
10541     auto
10542 #else
10543     std::tuple<VULKAN_HPP_NAMESPACE::DeviceSize const &,
10544                VULKAN_HPP_NAMESPACE::DeviceSize const &,
10545                VULKAN_HPP_NAMESPACE::DeviceSize const &>
10546 #endif
reflectVULKAN_HPP_NAMESPACE::BufferCopy10547       reflect() const VULKAN_HPP_NOEXCEPT
10548     {
10549       return std::tie( srcOffset, dstOffset, size );
10550     }
10551 
10552 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
10553     auto operator<=>( BufferCopy const & ) const = default;
10554 #else
operator ==VULKAN_HPP_NAMESPACE::BufferCopy10555     bool operator==( BufferCopy const & rhs ) const VULKAN_HPP_NOEXCEPT
10556     {
10557       return this->reflect() == rhs.reflect();
10558     }
10559 
operator !=VULKAN_HPP_NAMESPACE::BufferCopy10560     bool operator!=( BufferCopy const & rhs ) const VULKAN_HPP_NOEXCEPT
10561     {
10562       return this->reflect() != rhs.reflect();
10563     }
10564 #endif
10565 
10566   public:
10567     VULKAN_HPP_NAMESPACE::DeviceSize srcOffset = {};
10568     VULKAN_HPP_NAMESPACE::DeviceSize dstOffset = {};
10569     VULKAN_HPP_NAMESPACE::DeviceSize size      = {};
10570   };
10571   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferCopy ) == sizeof( VkBufferCopy ),
10572                             "struct and wrapper have different size!" );
10573   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::BufferCopy>::value,
10574                             "struct wrapper is not a standard layout!" );
10575   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::BufferCopy>::value,
10576                             "BufferCopy is not nothrow_move_constructible!" );
10577 
10578   struct BufferCopy2KHR
10579   {
10580     using NativeType = VkBufferCopy2KHR;
10581 
10582     static const bool                                  allowDuplicate = false;
10583     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferCopy2KHR;
10584 
10585 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferCopy2KHRVULKAN_HPP_NAMESPACE::BufferCopy2KHR10586     VULKAN_HPP_CONSTEXPR BufferCopy2KHR( VULKAN_HPP_NAMESPACE::DeviceSize srcOffset_ = {},
10587                                          VULKAN_HPP_NAMESPACE::DeviceSize dstOffset_ = {},
10588                                          VULKAN_HPP_NAMESPACE::DeviceSize size_      = {} ) VULKAN_HPP_NOEXCEPT
10589       : srcOffset( srcOffset_ )
10590       , dstOffset( dstOffset_ )
10591       , size( size_ )
10592     {}
10593 
10594     VULKAN_HPP_CONSTEXPR BufferCopy2KHR( BufferCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10595 
BufferCopy2KHRVULKAN_HPP_NAMESPACE::BufferCopy2KHR10596     BufferCopy2KHR( VkBufferCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
10597       : BufferCopy2KHR( *reinterpret_cast<BufferCopy2KHR const *>( &rhs ) )
10598     {}
10599 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
10600 
10601     BufferCopy2KHR & operator=( BufferCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10602 
operator =VULKAN_HPP_NAMESPACE::BufferCopy2KHR10603     BufferCopy2KHR & operator=( VkBufferCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
10604     {
10605       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferCopy2KHR const *>( &rhs );
10606       return *this;
10607     }
10608 
10609 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferCopy2KHR10610     VULKAN_HPP_CONSTEXPR_14 BufferCopy2KHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
10611     {
10612       pNext = pNext_;
10613       return *this;
10614     }
10615 
10616     VULKAN_HPP_CONSTEXPR_14 BufferCopy2KHR &
setSrcOffsetVULKAN_HPP_NAMESPACE::BufferCopy2KHR10617                             setSrcOffset( VULKAN_HPP_NAMESPACE::DeviceSize srcOffset_ ) VULKAN_HPP_NOEXCEPT
10618     {
10619       srcOffset = srcOffset_;
10620       return *this;
10621     }
10622 
10623     VULKAN_HPP_CONSTEXPR_14 BufferCopy2KHR &
setDstOffsetVULKAN_HPP_NAMESPACE::BufferCopy2KHR10624                             setDstOffset( VULKAN_HPP_NAMESPACE::DeviceSize dstOffset_ ) VULKAN_HPP_NOEXCEPT
10625     {
10626       dstOffset = dstOffset_;
10627       return *this;
10628     }
10629 
setSizeVULKAN_HPP_NAMESPACE::BufferCopy2KHR10630     VULKAN_HPP_CONSTEXPR_14 BufferCopy2KHR & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
10631     {
10632       size = size_;
10633       return *this;
10634     }
10635 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
10636 
operator VkBufferCopy2KHR const&VULKAN_HPP_NAMESPACE::BufferCopy2KHR10637     explicit operator VkBufferCopy2KHR const &() const VULKAN_HPP_NOEXCEPT
10638     {
10639       return *reinterpret_cast<const VkBufferCopy2KHR *>( this );
10640     }
10641 
operator VkBufferCopy2KHR&VULKAN_HPP_NAMESPACE::BufferCopy2KHR10642     explicit operator VkBufferCopy2KHR &() VULKAN_HPP_NOEXCEPT
10643     {
10644       return *reinterpret_cast<VkBufferCopy2KHR *>( this );
10645     }
10646 
10647 #if 14 <= VULKAN_HPP_CPP_VERSION
10648     auto
10649 #else
10650     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
10651                const void * const &,
10652                VULKAN_HPP_NAMESPACE::DeviceSize const &,
10653                VULKAN_HPP_NAMESPACE::DeviceSize const &,
10654                VULKAN_HPP_NAMESPACE::DeviceSize const &>
10655 #endif
reflectVULKAN_HPP_NAMESPACE::BufferCopy2KHR10656       reflect() const VULKAN_HPP_NOEXCEPT
10657     {
10658       return std::tie( sType, pNext, srcOffset, dstOffset, size );
10659     }
10660 
10661 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
10662     auto operator<=>( BufferCopy2KHR const & ) const = default;
10663 #else
operator ==VULKAN_HPP_NAMESPACE::BufferCopy2KHR10664     bool operator==( BufferCopy2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
10665     {
10666       return this->reflect() == rhs.reflect();
10667     }
10668 
operator !=VULKAN_HPP_NAMESPACE::BufferCopy2KHR10669     bool operator!=( BufferCopy2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
10670     {
10671       return this->reflect() != rhs.reflect();
10672     }
10673 #endif
10674 
10675   public:
10676     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::eBufferCopy2KHR;
10677     const void *                        pNext     = {};
10678     VULKAN_HPP_NAMESPACE::DeviceSize    srcOffset = {};
10679     VULKAN_HPP_NAMESPACE::DeviceSize    dstOffset = {};
10680     VULKAN_HPP_NAMESPACE::DeviceSize    size      = {};
10681   };
10682   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferCopy2KHR ) == sizeof( VkBufferCopy2KHR ),
10683                             "struct and wrapper have different size!" );
10684   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::BufferCopy2KHR>::value,
10685                             "struct wrapper is not a standard layout!" );
10686   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::BufferCopy2KHR>::value,
10687                             "BufferCopy2KHR is not nothrow_move_constructible!" );
10688 
10689   template <>
10690   struct CppType<StructureType, StructureType::eBufferCopy2KHR>
10691   {
10692     using Type = BufferCopy2KHR;
10693   };
10694 
10695   struct BufferDeviceAddressCreateInfoEXT
10696   {
10697     using NativeType = VkBufferDeviceAddressCreateInfoEXT;
10698 
10699     static const bool                                  allowDuplicate = false;
10700     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferDeviceAddressCreateInfoEXT;
10701 
10702 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
10703     VULKAN_HPP_CONSTEXPR
BufferDeviceAddressCreateInfoEXTVULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT10704       BufferDeviceAddressCreateInfoEXT( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ = {} ) VULKAN_HPP_NOEXCEPT
10705       : deviceAddress( deviceAddress_ )
10706     {}
10707 
10708     VULKAN_HPP_CONSTEXPR
10709       BufferDeviceAddressCreateInfoEXT( BufferDeviceAddressCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10710 
BufferDeviceAddressCreateInfoEXTVULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT10711     BufferDeviceAddressCreateInfoEXT( VkBufferDeviceAddressCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
10712       : BufferDeviceAddressCreateInfoEXT( *reinterpret_cast<BufferDeviceAddressCreateInfoEXT const *>( &rhs ) )
10713     {}
10714 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
10715 
10716     BufferDeviceAddressCreateInfoEXT &
10717       operator=( BufferDeviceAddressCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10718 
operator =VULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT10719     BufferDeviceAddressCreateInfoEXT & operator=( VkBufferDeviceAddressCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
10720     {
10721       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT const *>( &rhs );
10722       return *this;
10723     }
10724 
10725 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT10726     VULKAN_HPP_CONSTEXPR_14 BufferDeviceAddressCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
10727     {
10728       pNext = pNext_;
10729       return *this;
10730     }
10731 
10732     VULKAN_HPP_CONSTEXPR_14 BufferDeviceAddressCreateInfoEXT &
setDeviceAddressVULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT10733                             setDeviceAddress( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ ) VULKAN_HPP_NOEXCEPT
10734     {
10735       deviceAddress = deviceAddress_;
10736       return *this;
10737     }
10738 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
10739 
operator VkBufferDeviceAddressCreateInfoEXT const&VULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT10740     explicit operator VkBufferDeviceAddressCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
10741     {
10742       return *reinterpret_cast<const VkBufferDeviceAddressCreateInfoEXT *>( this );
10743     }
10744 
operator VkBufferDeviceAddressCreateInfoEXT&VULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT10745     explicit operator VkBufferDeviceAddressCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
10746     {
10747       return *reinterpret_cast<VkBufferDeviceAddressCreateInfoEXT *>( this );
10748     }
10749 
10750 #if 14 <= VULKAN_HPP_CPP_VERSION
10751     auto
10752 #else
10753     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
10754                const void * const &,
10755                VULKAN_HPP_NAMESPACE::DeviceAddress const &>
10756 #endif
reflectVULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT10757       reflect() const VULKAN_HPP_NOEXCEPT
10758     {
10759       return std::tie( sType, pNext, deviceAddress );
10760     }
10761 
10762 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
10763     auto operator<=>( BufferDeviceAddressCreateInfoEXT const & ) const = default;
10764 #else
operator ==VULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT10765     bool operator==( BufferDeviceAddressCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
10766     {
10767       return this->reflect() == rhs.reflect();
10768     }
10769 
operator !=VULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT10770     bool operator!=( BufferDeviceAddressCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
10771     {
10772       return this->reflect() != rhs.reflect();
10773     }
10774 #endif
10775 
10776   public:
10777     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::eBufferDeviceAddressCreateInfoEXT;
10778     const void *                        pNext         = {};
10779     VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress = {};
10780   };
10781   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT ) ==
10782                               sizeof( VkBufferDeviceAddressCreateInfoEXT ),
10783                             "struct and wrapper have different size!" );
10784   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT>::value,
10785                             "struct wrapper is not a standard layout!" );
10786   VULKAN_HPP_STATIC_ASSERT(
10787     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT>::value,
10788     "BufferDeviceAddressCreateInfoEXT is not nothrow_move_constructible!" );
10789 
10790   template <>
10791   struct CppType<StructureType, StructureType::eBufferDeviceAddressCreateInfoEXT>
10792   {
10793     using Type = BufferDeviceAddressCreateInfoEXT;
10794   };
10795 
10796   struct BufferDeviceAddressInfo
10797   {
10798     using NativeType = VkBufferDeviceAddressInfo;
10799 
10800     static const bool                                  allowDuplicate = false;
10801     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferDeviceAddressInfo;
10802 
10803 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferDeviceAddressInfoVULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo10804     VULKAN_HPP_CONSTEXPR BufferDeviceAddressInfo( VULKAN_HPP_NAMESPACE::Buffer buffer_ = {} ) VULKAN_HPP_NOEXCEPT
10805       : buffer( buffer_ )
10806     {}
10807 
10808     VULKAN_HPP_CONSTEXPR BufferDeviceAddressInfo( BufferDeviceAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10809 
BufferDeviceAddressInfoVULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo10810     BufferDeviceAddressInfo( VkBufferDeviceAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT
10811       : BufferDeviceAddressInfo( *reinterpret_cast<BufferDeviceAddressInfo const *>( &rhs ) )
10812     {}
10813 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
10814 
10815     BufferDeviceAddressInfo & operator=( BufferDeviceAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10816 
operator =VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo10817     BufferDeviceAddressInfo & operator=( VkBufferDeviceAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT
10818     {
10819       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo const *>( &rhs );
10820       return *this;
10821     }
10822 
10823 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo10824     VULKAN_HPP_CONSTEXPR_14 BufferDeviceAddressInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
10825     {
10826       pNext = pNext_;
10827       return *this;
10828     }
10829 
10830     VULKAN_HPP_CONSTEXPR_14 BufferDeviceAddressInfo &
setBufferVULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo10831                             setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
10832     {
10833       buffer = buffer_;
10834       return *this;
10835     }
10836 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
10837 
operator VkBufferDeviceAddressInfo const&VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo10838     explicit operator VkBufferDeviceAddressInfo const &() const VULKAN_HPP_NOEXCEPT
10839     {
10840       return *reinterpret_cast<const VkBufferDeviceAddressInfo *>( this );
10841     }
10842 
operator VkBufferDeviceAddressInfo&VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo10843     explicit operator VkBufferDeviceAddressInfo &() VULKAN_HPP_NOEXCEPT
10844     {
10845       return *reinterpret_cast<VkBufferDeviceAddressInfo *>( this );
10846     }
10847 
10848 #if 14 <= VULKAN_HPP_CPP_VERSION
10849     auto
10850 #else
10851     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Buffer const &>
10852 #endif
reflectVULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo10853       reflect() const VULKAN_HPP_NOEXCEPT
10854     {
10855       return std::tie( sType, pNext, buffer );
10856     }
10857 
10858 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
10859     auto operator<=>( BufferDeviceAddressInfo const & ) const = default;
10860 #else
operator ==VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo10861     bool operator==( BufferDeviceAddressInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
10862     {
10863       return this->reflect() == rhs.reflect();
10864     }
10865 
operator !=VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo10866     bool operator!=( BufferDeviceAddressInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
10867     {
10868       return this->reflect() != rhs.reflect();
10869     }
10870 #endif
10871 
10872   public:
10873     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eBufferDeviceAddressInfo;
10874     const void *                        pNext  = {};
10875     VULKAN_HPP_NAMESPACE::Buffer        buffer = {};
10876   };
10877   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo ) ==
10878                               sizeof( VkBufferDeviceAddressInfo ),
10879                             "struct and wrapper have different size!" );
10880   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo>::value,
10881                             "struct wrapper is not a standard layout!" );
10882   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo>::value,
10883                             "BufferDeviceAddressInfo is not nothrow_move_constructible!" );
10884 
10885   template <>
10886   struct CppType<StructureType, StructureType::eBufferDeviceAddressInfo>
10887   {
10888     using Type = BufferDeviceAddressInfo;
10889   };
10890   using BufferDeviceAddressInfoEXT = BufferDeviceAddressInfo;
10891   using BufferDeviceAddressInfoKHR = BufferDeviceAddressInfo;
10892 
10893   struct BufferImageCopy
10894   {
10895     using NativeType = VkBufferImageCopy;
10896 
10897 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferImageCopyVULKAN_HPP_NAMESPACE::BufferImageCopy10898     VULKAN_HPP_CONSTEXPR BufferImageCopy( VULKAN_HPP_NAMESPACE::DeviceSize             bufferOffset_      = {},
10899                                           uint32_t                                     bufferRowLength_   = {},
10900                                           uint32_t                                     bufferImageHeight_ = {},
10901                                           VULKAN_HPP_NAMESPACE::ImageSubresourceLayers imageSubresource_  = {},
10902                                           VULKAN_HPP_NAMESPACE::Offset3D               imageOffset_       = {},
10903                                           VULKAN_HPP_NAMESPACE::Extent3D imageExtent_ = {} ) VULKAN_HPP_NOEXCEPT
10904       : bufferOffset( bufferOffset_ )
10905       , bufferRowLength( bufferRowLength_ )
10906       , bufferImageHeight( bufferImageHeight_ )
10907       , imageSubresource( imageSubresource_ )
10908       , imageOffset( imageOffset_ )
10909       , imageExtent( imageExtent_ )
10910     {}
10911 
10912     VULKAN_HPP_CONSTEXPR BufferImageCopy( BufferImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10913 
BufferImageCopyVULKAN_HPP_NAMESPACE::BufferImageCopy10914     BufferImageCopy( VkBufferImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT
10915       : BufferImageCopy( *reinterpret_cast<BufferImageCopy const *>( &rhs ) )
10916     {}
10917 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
10918 
10919     BufferImageCopy & operator=( BufferImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10920 
operator =VULKAN_HPP_NAMESPACE::BufferImageCopy10921     BufferImageCopy & operator=( VkBufferImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT
10922     {
10923       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferImageCopy const *>( &rhs );
10924       return *this;
10925     }
10926 
10927 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
10928     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy &
setBufferOffsetVULKAN_HPP_NAMESPACE::BufferImageCopy10929                             setBufferOffset( VULKAN_HPP_NAMESPACE::DeviceSize bufferOffset_ ) VULKAN_HPP_NOEXCEPT
10930     {
10931       bufferOffset = bufferOffset_;
10932       return *this;
10933     }
10934 
setBufferRowLengthVULKAN_HPP_NAMESPACE::BufferImageCopy10935     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy & setBufferRowLength( uint32_t bufferRowLength_ ) VULKAN_HPP_NOEXCEPT
10936     {
10937       bufferRowLength = bufferRowLength_;
10938       return *this;
10939     }
10940 
setBufferImageHeightVULKAN_HPP_NAMESPACE::BufferImageCopy10941     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy & setBufferImageHeight( uint32_t bufferImageHeight_ ) VULKAN_HPP_NOEXCEPT
10942     {
10943       bufferImageHeight = bufferImageHeight_;
10944       return *this;
10945     }
10946 
10947     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy &
setImageSubresourceVULKAN_HPP_NAMESPACE::BufferImageCopy10948       setImageSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & imageSubresource_ ) VULKAN_HPP_NOEXCEPT
10949     {
10950       imageSubresource = imageSubresource_;
10951       return *this;
10952     }
10953 
10954     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy &
setImageOffsetVULKAN_HPP_NAMESPACE::BufferImageCopy10955                             setImageOffset( VULKAN_HPP_NAMESPACE::Offset3D const & imageOffset_ ) VULKAN_HPP_NOEXCEPT
10956     {
10957       imageOffset = imageOffset_;
10958       return *this;
10959     }
10960 
10961     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy &
setImageExtentVULKAN_HPP_NAMESPACE::BufferImageCopy10962                             setImageExtent( VULKAN_HPP_NAMESPACE::Extent3D const & imageExtent_ ) VULKAN_HPP_NOEXCEPT
10963     {
10964       imageExtent = imageExtent_;
10965       return *this;
10966     }
10967 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
10968 
operator VkBufferImageCopy const&VULKAN_HPP_NAMESPACE::BufferImageCopy10969     explicit operator VkBufferImageCopy const &() const VULKAN_HPP_NOEXCEPT
10970     {
10971       return *reinterpret_cast<const VkBufferImageCopy *>( this );
10972     }
10973 
operator VkBufferImageCopy&VULKAN_HPP_NAMESPACE::BufferImageCopy10974     explicit operator VkBufferImageCopy &() VULKAN_HPP_NOEXCEPT
10975     {
10976       return *reinterpret_cast<VkBufferImageCopy *>( this );
10977     }
10978 
10979 #if 14 <= VULKAN_HPP_CPP_VERSION
10980     auto
10981 #else
10982     std::tuple<VULKAN_HPP_NAMESPACE::DeviceSize const &,
10983                uint32_t const &,
10984                uint32_t const &,
10985                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
10986                VULKAN_HPP_NAMESPACE::Offset3D const &,
10987                VULKAN_HPP_NAMESPACE::Extent3D const &>
10988 #endif
reflectVULKAN_HPP_NAMESPACE::BufferImageCopy10989       reflect() const VULKAN_HPP_NOEXCEPT
10990     {
10991       return std::tie( bufferOffset, bufferRowLength, bufferImageHeight, imageSubresource, imageOffset, imageExtent );
10992     }
10993 
10994 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
10995     auto operator<=>( BufferImageCopy const & ) const = default;
10996 #else
operator ==VULKAN_HPP_NAMESPACE::BufferImageCopy10997     bool operator==( BufferImageCopy const & rhs ) const VULKAN_HPP_NOEXCEPT
10998     {
10999       return this->reflect() == rhs.reflect();
11000     }
11001 
operator !=VULKAN_HPP_NAMESPACE::BufferImageCopy11002     bool operator!=( BufferImageCopy const & rhs ) const VULKAN_HPP_NOEXCEPT
11003     {
11004       return this->reflect() != rhs.reflect();
11005     }
11006 #endif
11007 
11008   public:
11009     VULKAN_HPP_NAMESPACE::DeviceSize             bufferOffset      = {};
11010     uint32_t                                     bufferRowLength   = {};
11011     uint32_t                                     bufferImageHeight = {};
11012     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers imageSubresource  = {};
11013     VULKAN_HPP_NAMESPACE::Offset3D               imageOffset       = {};
11014     VULKAN_HPP_NAMESPACE::Extent3D               imageExtent       = {};
11015   };
11016   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferImageCopy ) == sizeof( VkBufferImageCopy ),
11017                             "struct and wrapper have different size!" );
11018   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::BufferImageCopy>::value,
11019                             "struct wrapper is not a standard layout!" );
11020   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::BufferImageCopy>::value,
11021                             "BufferImageCopy is not nothrow_move_constructible!" );
11022 
11023   struct BufferImageCopy2KHR
11024   {
11025     using NativeType = VkBufferImageCopy2KHR;
11026 
11027     static const bool                                  allowDuplicate = false;
11028     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferImageCopy2KHR;
11029 
11030 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferImageCopy2KHRVULKAN_HPP_NAMESPACE::BufferImageCopy2KHR11031     VULKAN_HPP_CONSTEXPR BufferImageCopy2KHR( VULKAN_HPP_NAMESPACE::DeviceSize             bufferOffset_      = {},
11032                                               uint32_t                                     bufferRowLength_   = {},
11033                                               uint32_t                                     bufferImageHeight_ = {},
11034                                               VULKAN_HPP_NAMESPACE::ImageSubresourceLayers imageSubresource_  = {},
11035                                               VULKAN_HPP_NAMESPACE::Offset3D               imageOffset_       = {},
11036                                               VULKAN_HPP_NAMESPACE::Extent3D imageExtent_ = {} ) VULKAN_HPP_NOEXCEPT
11037       : bufferOffset( bufferOffset_ )
11038       , bufferRowLength( bufferRowLength_ )
11039       , bufferImageHeight( bufferImageHeight_ )
11040       , imageSubresource( imageSubresource_ )
11041       , imageOffset( imageOffset_ )
11042       , imageExtent( imageExtent_ )
11043     {}
11044 
11045     VULKAN_HPP_CONSTEXPR BufferImageCopy2KHR( BufferImageCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11046 
BufferImageCopy2KHRVULKAN_HPP_NAMESPACE::BufferImageCopy2KHR11047     BufferImageCopy2KHR( VkBufferImageCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
11048       : BufferImageCopy2KHR( *reinterpret_cast<BufferImageCopy2KHR const *>( &rhs ) )
11049     {}
11050 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
11051 
11052     BufferImageCopy2KHR & operator=( BufferImageCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11053 
operator =VULKAN_HPP_NAMESPACE::BufferImageCopy2KHR11054     BufferImageCopy2KHR & operator=( VkBufferImageCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
11055     {
11056       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferImageCopy2KHR const *>( &rhs );
11057       return *this;
11058     }
11059 
11060 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferImageCopy2KHR11061     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2KHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
11062     {
11063       pNext = pNext_;
11064       return *this;
11065     }
11066 
11067     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2KHR &
setBufferOffsetVULKAN_HPP_NAMESPACE::BufferImageCopy2KHR11068                             setBufferOffset( VULKAN_HPP_NAMESPACE::DeviceSize bufferOffset_ ) VULKAN_HPP_NOEXCEPT
11069     {
11070       bufferOffset = bufferOffset_;
11071       return *this;
11072     }
11073 
setBufferRowLengthVULKAN_HPP_NAMESPACE::BufferImageCopy2KHR11074     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2KHR & setBufferRowLength( uint32_t bufferRowLength_ ) VULKAN_HPP_NOEXCEPT
11075     {
11076       bufferRowLength = bufferRowLength_;
11077       return *this;
11078     }
11079 
11080     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2KHR &
setBufferImageHeightVULKAN_HPP_NAMESPACE::BufferImageCopy2KHR11081                             setBufferImageHeight( uint32_t bufferImageHeight_ ) VULKAN_HPP_NOEXCEPT
11082     {
11083       bufferImageHeight = bufferImageHeight_;
11084       return *this;
11085     }
11086 
11087     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2KHR &
setImageSubresourceVULKAN_HPP_NAMESPACE::BufferImageCopy2KHR11088       setImageSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & imageSubresource_ ) VULKAN_HPP_NOEXCEPT
11089     {
11090       imageSubresource = imageSubresource_;
11091       return *this;
11092     }
11093 
11094     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2KHR &
setImageOffsetVULKAN_HPP_NAMESPACE::BufferImageCopy2KHR11095                             setImageOffset( VULKAN_HPP_NAMESPACE::Offset3D const & imageOffset_ ) VULKAN_HPP_NOEXCEPT
11096     {
11097       imageOffset = imageOffset_;
11098       return *this;
11099     }
11100 
11101     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2KHR &
setImageExtentVULKAN_HPP_NAMESPACE::BufferImageCopy2KHR11102                             setImageExtent( VULKAN_HPP_NAMESPACE::Extent3D const & imageExtent_ ) VULKAN_HPP_NOEXCEPT
11103     {
11104       imageExtent = imageExtent_;
11105       return *this;
11106     }
11107 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
11108 
operator VkBufferImageCopy2KHR const&VULKAN_HPP_NAMESPACE::BufferImageCopy2KHR11109     explicit operator VkBufferImageCopy2KHR const &() const VULKAN_HPP_NOEXCEPT
11110     {
11111       return *reinterpret_cast<const VkBufferImageCopy2KHR *>( this );
11112     }
11113 
operator VkBufferImageCopy2KHR&VULKAN_HPP_NAMESPACE::BufferImageCopy2KHR11114     explicit operator VkBufferImageCopy2KHR &() VULKAN_HPP_NOEXCEPT
11115     {
11116       return *reinterpret_cast<VkBufferImageCopy2KHR *>( this );
11117     }
11118 
11119 #if 14 <= VULKAN_HPP_CPP_VERSION
11120     auto
11121 #else
11122     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
11123                const void * const &,
11124                VULKAN_HPP_NAMESPACE::DeviceSize const &,
11125                uint32_t const &,
11126                uint32_t const &,
11127                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
11128                VULKAN_HPP_NAMESPACE::Offset3D const &,
11129                VULKAN_HPP_NAMESPACE::Extent3D const &>
11130 #endif
reflectVULKAN_HPP_NAMESPACE::BufferImageCopy2KHR11131       reflect() const VULKAN_HPP_NOEXCEPT
11132     {
11133       return std::tie(
11134         sType, pNext, bufferOffset, bufferRowLength, bufferImageHeight, imageSubresource, imageOffset, imageExtent );
11135     }
11136 
11137 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
11138     auto operator<=>( BufferImageCopy2KHR const & ) const = default;
11139 #else
operator ==VULKAN_HPP_NAMESPACE::BufferImageCopy2KHR11140     bool operator==( BufferImageCopy2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
11141     {
11142       return this->reflect() == rhs.reflect();
11143     }
11144 
operator !=VULKAN_HPP_NAMESPACE::BufferImageCopy2KHR11145     bool operator!=( BufferImageCopy2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
11146     {
11147       return this->reflect() != rhs.reflect();
11148     }
11149 #endif
11150 
11151   public:
11152     VULKAN_HPP_NAMESPACE::StructureType          sType             = StructureType::eBufferImageCopy2KHR;
11153     const void *                                 pNext             = {};
11154     VULKAN_HPP_NAMESPACE::DeviceSize             bufferOffset      = {};
11155     uint32_t                                     bufferRowLength   = {};
11156     uint32_t                                     bufferImageHeight = {};
11157     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers imageSubresource  = {};
11158     VULKAN_HPP_NAMESPACE::Offset3D               imageOffset       = {};
11159     VULKAN_HPP_NAMESPACE::Extent3D               imageExtent       = {};
11160   };
11161   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferImageCopy2KHR ) == sizeof( VkBufferImageCopy2KHR ),
11162                             "struct and wrapper have different size!" );
11163   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::BufferImageCopy2KHR>::value,
11164                             "struct wrapper is not a standard layout!" );
11165   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::BufferImageCopy2KHR>::value,
11166                             "BufferImageCopy2KHR is not nothrow_move_constructible!" );
11167 
11168   template <>
11169   struct CppType<StructureType, StructureType::eBufferImageCopy2KHR>
11170   {
11171     using Type = BufferImageCopy2KHR;
11172   };
11173 
11174   struct BufferMemoryBarrier
11175   {
11176     using NativeType = VkBufferMemoryBarrier;
11177 
11178     static const bool                                  allowDuplicate = false;
11179     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferMemoryBarrier;
11180 
11181 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferMemoryBarrierVULKAN_HPP_NAMESPACE::BufferMemoryBarrier11182     VULKAN_HPP_CONSTEXPR BufferMemoryBarrier( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_       = {},
11183                                               VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_       = {},
11184                                               uint32_t                          srcQueueFamilyIndex_ = {},
11185                                               uint32_t                          dstQueueFamilyIndex_ = {},
11186                                               VULKAN_HPP_NAMESPACE::Buffer      buffer_              = {},
11187                                               VULKAN_HPP_NAMESPACE::DeviceSize  offset_              = {},
11188                                               VULKAN_HPP_NAMESPACE::DeviceSize  size_ = {} ) VULKAN_HPP_NOEXCEPT
11189       : srcAccessMask( srcAccessMask_ )
11190       , dstAccessMask( dstAccessMask_ )
11191       , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
11192       , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
11193       , buffer( buffer_ )
11194       , offset( offset_ )
11195       , size( size_ )
11196     {}
11197 
11198     VULKAN_HPP_CONSTEXPR BufferMemoryBarrier( BufferMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11199 
BufferMemoryBarrierVULKAN_HPP_NAMESPACE::BufferMemoryBarrier11200     BufferMemoryBarrier( VkBufferMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT
11201       : BufferMemoryBarrier( *reinterpret_cast<BufferMemoryBarrier const *>( &rhs ) )
11202     {}
11203 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
11204 
11205     BufferMemoryBarrier & operator=( BufferMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11206 
operator =VULKAN_HPP_NAMESPACE::BufferMemoryBarrier11207     BufferMemoryBarrier & operator=( VkBufferMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT
11208     {
11209       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferMemoryBarrier const *>( &rhs );
11210       return *this;
11211     }
11212 
11213 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferMemoryBarrier11214     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
11215     {
11216       pNext = pNext_;
11217       return *this;
11218     }
11219 
11220     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier &
setSrcAccessMaskVULKAN_HPP_NAMESPACE::BufferMemoryBarrier11221                             setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ ) VULKAN_HPP_NOEXCEPT
11222     {
11223       srcAccessMask = srcAccessMask_;
11224       return *this;
11225     }
11226 
11227     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier &
setDstAccessMaskVULKAN_HPP_NAMESPACE::BufferMemoryBarrier11228                             setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ ) VULKAN_HPP_NOEXCEPT
11229     {
11230       dstAccessMask = dstAccessMask_;
11231       return *this;
11232     }
11233 
11234     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier &
setSrcQueueFamilyIndexVULKAN_HPP_NAMESPACE::BufferMemoryBarrier11235                             setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
11236     {
11237       srcQueueFamilyIndex = srcQueueFamilyIndex_;
11238       return *this;
11239     }
11240 
11241     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier &
setDstQueueFamilyIndexVULKAN_HPP_NAMESPACE::BufferMemoryBarrier11242                             setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
11243     {
11244       dstQueueFamilyIndex = dstQueueFamilyIndex_;
11245       return *this;
11246     }
11247 
setBufferVULKAN_HPP_NAMESPACE::BufferMemoryBarrier11248     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
11249     {
11250       buffer = buffer_;
11251       return *this;
11252     }
11253 
11254     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier &
setOffsetVULKAN_HPP_NAMESPACE::BufferMemoryBarrier11255                             setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
11256     {
11257       offset = offset_;
11258       return *this;
11259     }
11260 
setSizeVULKAN_HPP_NAMESPACE::BufferMemoryBarrier11261     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
11262     {
11263       size = size_;
11264       return *this;
11265     }
11266 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
11267 
operator VkBufferMemoryBarrier const&VULKAN_HPP_NAMESPACE::BufferMemoryBarrier11268     explicit operator VkBufferMemoryBarrier const &() const VULKAN_HPP_NOEXCEPT
11269     {
11270       return *reinterpret_cast<const VkBufferMemoryBarrier *>( this );
11271     }
11272 
operator VkBufferMemoryBarrier&VULKAN_HPP_NAMESPACE::BufferMemoryBarrier11273     explicit operator VkBufferMemoryBarrier &() VULKAN_HPP_NOEXCEPT
11274     {
11275       return *reinterpret_cast<VkBufferMemoryBarrier *>( this );
11276     }
11277 
11278 #if 14 <= VULKAN_HPP_CPP_VERSION
11279     auto
11280 #else
11281     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
11282                const void * const &,
11283                VULKAN_HPP_NAMESPACE::AccessFlags const &,
11284                VULKAN_HPP_NAMESPACE::AccessFlags const &,
11285                uint32_t const &,
11286                uint32_t const &,
11287                VULKAN_HPP_NAMESPACE::Buffer const &,
11288                VULKAN_HPP_NAMESPACE::DeviceSize const &,
11289                VULKAN_HPP_NAMESPACE::DeviceSize const &>
11290 #endif
reflectVULKAN_HPP_NAMESPACE::BufferMemoryBarrier11291       reflect() const VULKAN_HPP_NOEXCEPT
11292     {
11293       return std::tie(
11294         sType, pNext, srcAccessMask, dstAccessMask, srcQueueFamilyIndex, dstQueueFamilyIndex, buffer, offset, size );
11295     }
11296 
11297 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
11298     auto operator<=>( BufferMemoryBarrier const & ) const = default;
11299 #else
operator ==VULKAN_HPP_NAMESPACE::BufferMemoryBarrier11300     bool operator==( BufferMemoryBarrier const & rhs ) const VULKAN_HPP_NOEXCEPT
11301     {
11302       return this->reflect() == rhs.reflect();
11303     }
11304 
operator !=VULKAN_HPP_NAMESPACE::BufferMemoryBarrier11305     bool operator!=( BufferMemoryBarrier const & rhs ) const VULKAN_HPP_NOEXCEPT
11306     {
11307       return this->reflect() != rhs.reflect();
11308     }
11309 #endif
11310 
11311   public:
11312     VULKAN_HPP_NAMESPACE::StructureType sType               = StructureType::eBufferMemoryBarrier;
11313     const void *                        pNext               = {};
11314     VULKAN_HPP_NAMESPACE::AccessFlags   srcAccessMask       = {};
11315     VULKAN_HPP_NAMESPACE::AccessFlags   dstAccessMask       = {};
11316     uint32_t                            srcQueueFamilyIndex = {};
11317     uint32_t                            dstQueueFamilyIndex = {};
11318     VULKAN_HPP_NAMESPACE::Buffer        buffer              = {};
11319     VULKAN_HPP_NAMESPACE::DeviceSize    offset              = {};
11320     VULKAN_HPP_NAMESPACE::DeviceSize    size                = {};
11321   };
11322   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferMemoryBarrier ) == sizeof( VkBufferMemoryBarrier ),
11323                             "struct and wrapper have different size!" );
11324   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::BufferMemoryBarrier>::value,
11325                             "struct wrapper is not a standard layout!" );
11326   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::BufferMemoryBarrier>::value,
11327                             "BufferMemoryBarrier is not nothrow_move_constructible!" );
11328 
11329   template <>
11330   struct CppType<StructureType, StructureType::eBufferMemoryBarrier>
11331   {
11332     using Type = BufferMemoryBarrier;
11333   };
11334 
11335   struct BufferMemoryBarrier2KHR
11336   {
11337     using NativeType = VkBufferMemoryBarrier2KHR;
11338 
11339     static const bool                                  allowDuplicate = false;
11340     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferMemoryBarrier2KHR;
11341 
11342 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferMemoryBarrier2KHRVULKAN_HPP_NAMESPACE::BufferMemoryBarrier2KHR11343     VULKAN_HPP_CONSTEXPR BufferMemoryBarrier2KHR( VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR srcStageMask_  = {},
11344                                                   VULKAN_HPP_NAMESPACE::AccessFlags2KHR        srcAccessMask_ = {},
11345                                                   VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR dstStageMask_  = {},
11346                                                   VULKAN_HPP_NAMESPACE::AccessFlags2KHR        dstAccessMask_ = {},
11347                                                   uint32_t                         srcQueueFamilyIndex_       = {},
11348                                                   uint32_t                         dstQueueFamilyIndex_       = {},
11349                                                   VULKAN_HPP_NAMESPACE::Buffer     buffer_                    = {},
11350                                                   VULKAN_HPP_NAMESPACE::DeviceSize offset_                    = {},
11351                                                   VULKAN_HPP_NAMESPACE::DeviceSize size_ = {} ) VULKAN_HPP_NOEXCEPT
11352       : srcStageMask( srcStageMask_ )
11353       , srcAccessMask( srcAccessMask_ )
11354       , dstStageMask( dstStageMask_ )
11355       , dstAccessMask( dstAccessMask_ )
11356       , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
11357       , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
11358       , buffer( buffer_ )
11359       , offset( offset_ )
11360       , size( size_ )
11361     {}
11362 
11363     VULKAN_HPP_CONSTEXPR BufferMemoryBarrier2KHR( BufferMemoryBarrier2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11364 
BufferMemoryBarrier2KHRVULKAN_HPP_NAMESPACE::BufferMemoryBarrier2KHR11365     BufferMemoryBarrier2KHR( VkBufferMemoryBarrier2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
11366       : BufferMemoryBarrier2KHR( *reinterpret_cast<BufferMemoryBarrier2KHR const *>( &rhs ) )
11367     {}
11368 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
11369 
11370     BufferMemoryBarrier2KHR & operator=( BufferMemoryBarrier2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11371 
operator =VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2KHR11372     BufferMemoryBarrier2KHR & operator=( VkBufferMemoryBarrier2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
11373     {
11374       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2KHR const *>( &rhs );
11375       return *this;
11376     }
11377 
11378 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferMemoryBarrier2KHR11379     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2KHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
11380     {
11381       pNext = pNext_;
11382       return *this;
11383     }
11384 
11385     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2KHR &
setSrcStageMaskVULKAN_HPP_NAMESPACE::BufferMemoryBarrier2KHR11386       setSrcStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR srcStageMask_ ) VULKAN_HPP_NOEXCEPT
11387     {
11388       srcStageMask = srcStageMask_;
11389       return *this;
11390     }
11391 
11392     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2KHR &
setSrcAccessMaskVULKAN_HPP_NAMESPACE::BufferMemoryBarrier2KHR11393                             setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags2KHR srcAccessMask_ ) VULKAN_HPP_NOEXCEPT
11394     {
11395       srcAccessMask = srcAccessMask_;
11396       return *this;
11397     }
11398 
11399     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2KHR &
setDstStageMaskVULKAN_HPP_NAMESPACE::BufferMemoryBarrier2KHR11400       setDstStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR dstStageMask_ ) VULKAN_HPP_NOEXCEPT
11401     {
11402       dstStageMask = dstStageMask_;
11403       return *this;
11404     }
11405 
11406     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2KHR &
setDstAccessMaskVULKAN_HPP_NAMESPACE::BufferMemoryBarrier2KHR11407                             setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags2KHR dstAccessMask_ ) VULKAN_HPP_NOEXCEPT
11408     {
11409       dstAccessMask = dstAccessMask_;
11410       return *this;
11411     }
11412 
11413     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2KHR &
setSrcQueueFamilyIndexVULKAN_HPP_NAMESPACE::BufferMemoryBarrier2KHR11414                             setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
11415     {
11416       srcQueueFamilyIndex = srcQueueFamilyIndex_;
11417       return *this;
11418     }
11419 
11420     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2KHR &
setDstQueueFamilyIndexVULKAN_HPP_NAMESPACE::BufferMemoryBarrier2KHR11421                             setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
11422     {
11423       dstQueueFamilyIndex = dstQueueFamilyIndex_;
11424       return *this;
11425     }
11426 
11427     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2KHR &
setBufferVULKAN_HPP_NAMESPACE::BufferMemoryBarrier2KHR11428                             setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
11429     {
11430       buffer = buffer_;
11431       return *this;
11432     }
11433 
11434     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2KHR &
setOffsetVULKAN_HPP_NAMESPACE::BufferMemoryBarrier2KHR11435                             setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
11436     {
11437       offset = offset_;
11438       return *this;
11439     }
11440 
11441     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2KHR &
setSizeVULKAN_HPP_NAMESPACE::BufferMemoryBarrier2KHR11442                             setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
11443     {
11444       size = size_;
11445       return *this;
11446     }
11447 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
11448 
operator VkBufferMemoryBarrier2KHR const&VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2KHR11449     explicit operator VkBufferMemoryBarrier2KHR const &() const VULKAN_HPP_NOEXCEPT
11450     {
11451       return *reinterpret_cast<const VkBufferMemoryBarrier2KHR *>( this );
11452     }
11453 
operator VkBufferMemoryBarrier2KHR&VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2KHR11454     explicit operator VkBufferMemoryBarrier2KHR &() VULKAN_HPP_NOEXCEPT
11455     {
11456       return *reinterpret_cast<VkBufferMemoryBarrier2KHR *>( this );
11457     }
11458 
11459 #if 14 <= VULKAN_HPP_CPP_VERSION
11460     auto
11461 #else
11462     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
11463                const void * const &,
11464                VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR const &,
11465                VULKAN_HPP_NAMESPACE::AccessFlags2KHR const &,
11466                VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR const &,
11467                VULKAN_HPP_NAMESPACE::AccessFlags2KHR const &,
11468                uint32_t const &,
11469                uint32_t const &,
11470                VULKAN_HPP_NAMESPACE::Buffer const &,
11471                VULKAN_HPP_NAMESPACE::DeviceSize const &,
11472                VULKAN_HPP_NAMESPACE::DeviceSize const &>
11473 #endif
reflectVULKAN_HPP_NAMESPACE::BufferMemoryBarrier2KHR11474       reflect() const VULKAN_HPP_NOEXCEPT
11475     {
11476       return std::tie( sType,
11477                        pNext,
11478                        srcStageMask,
11479                        srcAccessMask,
11480                        dstStageMask,
11481                        dstAccessMask,
11482                        srcQueueFamilyIndex,
11483                        dstQueueFamilyIndex,
11484                        buffer,
11485                        offset,
11486                        size );
11487     }
11488 
11489 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
11490     auto operator<=>( BufferMemoryBarrier2KHR const & ) const = default;
11491 #else
operator ==VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2KHR11492     bool operator==( BufferMemoryBarrier2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
11493     {
11494       return this->reflect() == rhs.reflect();
11495     }
11496 
operator !=VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2KHR11497     bool operator!=( BufferMemoryBarrier2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
11498     {
11499       return this->reflect() != rhs.reflect();
11500     }
11501 #endif
11502 
11503   public:
11504     VULKAN_HPP_NAMESPACE::StructureType          sType               = StructureType::eBufferMemoryBarrier2KHR;
11505     const void *                                 pNext               = {};
11506     VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR srcStageMask        = {};
11507     VULKAN_HPP_NAMESPACE::AccessFlags2KHR        srcAccessMask       = {};
11508     VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR dstStageMask        = {};
11509     VULKAN_HPP_NAMESPACE::AccessFlags2KHR        dstAccessMask       = {};
11510     uint32_t                                     srcQueueFamilyIndex = {};
11511     uint32_t                                     dstQueueFamilyIndex = {};
11512     VULKAN_HPP_NAMESPACE::Buffer                 buffer              = {};
11513     VULKAN_HPP_NAMESPACE::DeviceSize             offset              = {};
11514     VULKAN_HPP_NAMESPACE::DeviceSize             size                = {};
11515   };
11516   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2KHR ) ==
11517                               sizeof( VkBufferMemoryBarrier2KHR ),
11518                             "struct and wrapper have different size!" );
11519   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2KHR>::value,
11520                             "struct wrapper is not a standard layout!" );
11521   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2KHR>::value,
11522                             "BufferMemoryBarrier2KHR is not nothrow_move_constructible!" );
11523 
11524   template <>
11525   struct CppType<StructureType, StructureType::eBufferMemoryBarrier2KHR>
11526   {
11527     using Type = BufferMemoryBarrier2KHR;
11528   };
11529 
11530   struct BufferMemoryRequirementsInfo2
11531   {
11532     using NativeType = VkBufferMemoryRequirementsInfo2;
11533 
11534     static const bool                                  allowDuplicate = false;
11535     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferMemoryRequirementsInfo2;
11536 
11537 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferMemoryRequirementsInfo2VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo211538     VULKAN_HPP_CONSTEXPR BufferMemoryRequirementsInfo2( VULKAN_HPP_NAMESPACE::Buffer buffer_ = {} ) VULKAN_HPP_NOEXCEPT
11539       : buffer( buffer_ )
11540     {}
11541 
11542     VULKAN_HPP_CONSTEXPR
11543       BufferMemoryRequirementsInfo2( BufferMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11544 
BufferMemoryRequirementsInfo2VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo211545     BufferMemoryRequirementsInfo2( VkBufferMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
11546       : BufferMemoryRequirementsInfo2( *reinterpret_cast<BufferMemoryRequirementsInfo2 const *>( &rhs ) )
11547     {}
11548 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
11549 
11550     BufferMemoryRequirementsInfo2 &
11551       operator=( BufferMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11552 
operator =VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo211553     BufferMemoryRequirementsInfo2 & operator=( VkBufferMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
11554     {
11555       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 const *>( &rhs );
11556       return *this;
11557     }
11558 
11559 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo211560     VULKAN_HPP_CONSTEXPR_14 BufferMemoryRequirementsInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
11561     {
11562       pNext = pNext_;
11563       return *this;
11564     }
11565 
11566     VULKAN_HPP_CONSTEXPR_14 BufferMemoryRequirementsInfo2 &
setBufferVULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo211567                             setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
11568     {
11569       buffer = buffer_;
11570       return *this;
11571     }
11572 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
11573 
operator VkBufferMemoryRequirementsInfo2 const&VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo211574     explicit operator VkBufferMemoryRequirementsInfo2 const &() const VULKAN_HPP_NOEXCEPT
11575     {
11576       return *reinterpret_cast<const VkBufferMemoryRequirementsInfo2 *>( this );
11577     }
11578 
operator VkBufferMemoryRequirementsInfo2&VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo211579     explicit operator VkBufferMemoryRequirementsInfo2 &() VULKAN_HPP_NOEXCEPT
11580     {
11581       return *reinterpret_cast<VkBufferMemoryRequirementsInfo2 *>( this );
11582     }
11583 
11584 #if 14 <= VULKAN_HPP_CPP_VERSION
11585     auto
11586 #else
11587     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Buffer const &>
11588 #endif
reflectVULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo211589       reflect() const VULKAN_HPP_NOEXCEPT
11590     {
11591       return std::tie( sType, pNext, buffer );
11592     }
11593 
11594 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
11595     auto operator<=>( BufferMemoryRequirementsInfo2 const & ) const = default;
11596 #else
operator ==VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo211597     bool operator==( BufferMemoryRequirementsInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
11598     {
11599       return this->reflect() == rhs.reflect();
11600     }
11601 
operator !=VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo211602     bool operator!=( BufferMemoryRequirementsInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
11603     {
11604       return this->reflect() != rhs.reflect();
11605     }
11606 #endif
11607 
11608   public:
11609     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eBufferMemoryRequirementsInfo2;
11610     const void *                        pNext  = {};
11611     VULKAN_HPP_NAMESPACE::Buffer        buffer = {};
11612   };
11613   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 ) ==
11614                               sizeof( VkBufferMemoryRequirementsInfo2 ),
11615                             "struct and wrapper have different size!" );
11616   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2>::value,
11617                             "struct wrapper is not a standard layout!" );
11618   VULKAN_HPP_STATIC_ASSERT(
11619     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2>::value,
11620     "BufferMemoryRequirementsInfo2 is not nothrow_move_constructible!" );
11621 
11622   template <>
11623   struct CppType<StructureType, StructureType::eBufferMemoryRequirementsInfo2>
11624   {
11625     using Type = BufferMemoryRequirementsInfo2;
11626   };
11627   using BufferMemoryRequirementsInfo2KHR = BufferMemoryRequirementsInfo2;
11628 
11629   struct BufferOpaqueCaptureAddressCreateInfo
11630   {
11631     using NativeType = VkBufferOpaqueCaptureAddressCreateInfo;
11632 
11633     static const bool                                  allowDuplicate = false;
11634     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
11635       StructureType::eBufferOpaqueCaptureAddressCreateInfo;
11636 
11637 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferOpaqueCaptureAddressCreateInfoVULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo11638     VULKAN_HPP_CONSTEXPR BufferOpaqueCaptureAddressCreateInfo( uint64_t opaqueCaptureAddress_ = {} ) VULKAN_HPP_NOEXCEPT
11639       : opaqueCaptureAddress( opaqueCaptureAddress_ )
11640     {}
11641 
11642     VULKAN_HPP_CONSTEXPR BufferOpaqueCaptureAddressCreateInfo( BufferOpaqueCaptureAddressCreateInfo const & rhs )
11643       VULKAN_HPP_NOEXCEPT = default;
11644 
BufferOpaqueCaptureAddressCreateInfoVULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo11645     BufferOpaqueCaptureAddressCreateInfo( VkBufferOpaqueCaptureAddressCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
11646       : BufferOpaqueCaptureAddressCreateInfo( *reinterpret_cast<BufferOpaqueCaptureAddressCreateInfo const *>( &rhs ) )
11647     {}
11648 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
11649 
11650     BufferOpaqueCaptureAddressCreateInfo &
11651       operator=( BufferOpaqueCaptureAddressCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11652 
11653     BufferOpaqueCaptureAddressCreateInfo &
operator =VULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo11654       operator=( VkBufferOpaqueCaptureAddressCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
11655     {
11656       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo const *>( &rhs );
11657       return *this;
11658     }
11659 
11660 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo11661     VULKAN_HPP_CONSTEXPR_14 BufferOpaqueCaptureAddressCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
11662     {
11663       pNext = pNext_;
11664       return *this;
11665     }
11666 
11667     VULKAN_HPP_CONSTEXPR_14 BufferOpaqueCaptureAddressCreateInfo &
setOpaqueCaptureAddressVULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo11668                             setOpaqueCaptureAddress( uint64_t opaqueCaptureAddress_ ) VULKAN_HPP_NOEXCEPT
11669     {
11670       opaqueCaptureAddress = opaqueCaptureAddress_;
11671       return *this;
11672     }
11673 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
11674 
operator VkBufferOpaqueCaptureAddressCreateInfo const&VULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo11675     explicit operator VkBufferOpaqueCaptureAddressCreateInfo const &() const VULKAN_HPP_NOEXCEPT
11676     {
11677       return *reinterpret_cast<const VkBufferOpaqueCaptureAddressCreateInfo *>( this );
11678     }
11679 
operator VkBufferOpaqueCaptureAddressCreateInfo&VULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo11680     explicit operator VkBufferOpaqueCaptureAddressCreateInfo &() VULKAN_HPP_NOEXCEPT
11681     {
11682       return *reinterpret_cast<VkBufferOpaqueCaptureAddressCreateInfo *>( this );
11683     }
11684 
11685 #if 14 <= VULKAN_HPP_CPP_VERSION
11686     auto
11687 #else
11688     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint64_t const &>
11689 #endif
reflectVULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo11690       reflect() const VULKAN_HPP_NOEXCEPT
11691     {
11692       return std::tie( sType, pNext, opaqueCaptureAddress );
11693     }
11694 
11695 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
11696     auto operator<=>( BufferOpaqueCaptureAddressCreateInfo const & ) const = default;
11697 #else
operator ==VULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo11698     bool operator==( BufferOpaqueCaptureAddressCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
11699     {
11700       return this->reflect() == rhs.reflect();
11701     }
11702 
operator !=VULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo11703     bool operator!=( BufferOpaqueCaptureAddressCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
11704     {
11705       return this->reflect() != rhs.reflect();
11706     }
11707 #endif
11708 
11709   public:
11710     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::eBufferOpaqueCaptureAddressCreateInfo;
11711     const void *                        pNext                = {};
11712     uint64_t                            opaqueCaptureAddress = {};
11713   };
11714   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo ) ==
11715                               sizeof( VkBufferOpaqueCaptureAddressCreateInfo ),
11716                             "struct and wrapper have different size!" );
11717   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo>::value,
11718                             "struct wrapper is not a standard layout!" );
11719   VULKAN_HPP_STATIC_ASSERT(
11720     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo>::value,
11721     "BufferOpaqueCaptureAddressCreateInfo is not nothrow_move_constructible!" );
11722 
11723   template <>
11724   struct CppType<StructureType, StructureType::eBufferOpaqueCaptureAddressCreateInfo>
11725   {
11726     using Type = BufferOpaqueCaptureAddressCreateInfo;
11727   };
11728   using BufferOpaqueCaptureAddressCreateInfoKHR = BufferOpaqueCaptureAddressCreateInfo;
11729 
11730   struct BufferViewCreateInfo
11731   {
11732     using NativeType = VkBufferViewCreateInfo;
11733 
11734     static const bool                                  allowDuplicate = false;
11735     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferViewCreateInfo;
11736 
11737 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
11738     VULKAN_HPP_CONSTEXPR
BufferViewCreateInfoVULKAN_HPP_NAMESPACE::BufferViewCreateInfo11739       BufferViewCreateInfo( VULKAN_HPP_NAMESPACE::BufferViewCreateFlags flags_  = {},
11740                             VULKAN_HPP_NAMESPACE::Buffer                buffer_ = {},
11741                             VULKAN_HPP_NAMESPACE::Format     format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined,
11742                             VULKAN_HPP_NAMESPACE::DeviceSize offset_ = {},
11743                             VULKAN_HPP_NAMESPACE::DeviceSize range_  = {} ) VULKAN_HPP_NOEXCEPT
11744       : flags( flags_ )
11745       , buffer( buffer_ )
11746       , format( format_ )
11747       , offset( offset_ )
11748       , range( range_ )
11749     {}
11750 
11751     VULKAN_HPP_CONSTEXPR BufferViewCreateInfo( BufferViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11752 
BufferViewCreateInfoVULKAN_HPP_NAMESPACE::BufferViewCreateInfo11753     BufferViewCreateInfo( VkBufferViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
11754       : BufferViewCreateInfo( *reinterpret_cast<BufferViewCreateInfo const *>( &rhs ) )
11755     {}
11756 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
11757 
11758     BufferViewCreateInfo & operator=( BufferViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11759 
operator =VULKAN_HPP_NAMESPACE::BufferViewCreateInfo11760     BufferViewCreateInfo & operator=( VkBufferViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
11761     {
11762       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferViewCreateInfo const *>( &rhs );
11763       return *this;
11764     }
11765 
11766 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferViewCreateInfo11767     VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
11768     {
11769       pNext = pNext_;
11770       return *this;
11771     }
11772 
11773     VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::BufferViewCreateInfo11774                             setFlags( VULKAN_HPP_NAMESPACE::BufferViewCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
11775     {
11776       flags = flags_;
11777       return *this;
11778     }
11779 
setBufferVULKAN_HPP_NAMESPACE::BufferViewCreateInfo11780     VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
11781     {
11782       buffer = buffer_;
11783       return *this;
11784     }
11785 
setFormatVULKAN_HPP_NAMESPACE::BufferViewCreateInfo11786     VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
11787     {
11788       format = format_;
11789       return *this;
11790     }
11791 
11792     VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo &
setOffsetVULKAN_HPP_NAMESPACE::BufferViewCreateInfo11793                             setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
11794     {
11795       offset = offset_;
11796       return *this;
11797     }
11798 
11799     VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo &
setRangeVULKAN_HPP_NAMESPACE::BufferViewCreateInfo11800                             setRange( VULKAN_HPP_NAMESPACE::DeviceSize range_ ) VULKAN_HPP_NOEXCEPT
11801     {
11802       range = range_;
11803       return *this;
11804     }
11805 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
11806 
operator VkBufferViewCreateInfo const&VULKAN_HPP_NAMESPACE::BufferViewCreateInfo11807     explicit operator VkBufferViewCreateInfo const &() const VULKAN_HPP_NOEXCEPT
11808     {
11809       return *reinterpret_cast<const VkBufferViewCreateInfo *>( this );
11810     }
11811 
operator VkBufferViewCreateInfo&VULKAN_HPP_NAMESPACE::BufferViewCreateInfo11812     explicit operator VkBufferViewCreateInfo &() VULKAN_HPP_NOEXCEPT
11813     {
11814       return *reinterpret_cast<VkBufferViewCreateInfo *>( this );
11815     }
11816 
11817 #if 14 <= VULKAN_HPP_CPP_VERSION
11818     auto
11819 #else
11820     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
11821                const void * const &,
11822                VULKAN_HPP_NAMESPACE::BufferViewCreateFlags const &,
11823                VULKAN_HPP_NAMESPACE::Buffer const &,
11824                VULKAN_HPP_NAMESPACE::Format const &,
11825                VULKAN_HPP_NAMESPACE::DeviceSize const &,
11826                VULKAN_HPP_NAMESPACE::DeviceSize const &>
11827 #endif
reflectVULKAN_HPP_NAMESPACE::BufferViewCreateInfo11828       reflect() const VULKAN_HPP_NOEXCEPT
11829     {
11830       return std::tie( sType, pNext, flags, buffer, format, offset, range );
11831     }
11832 
11833 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
11834     auto operator<=>( BufferViewCreateInfo const & ) const = default;
11835 #else
operator ==VULKAN_HPP_NAMESPACE::BufferViewCreateInfo11836     bool operator==( BufferViewCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
11837     {
11838       return this->reflect() == rhs.reflect();
11839     }
11840 
operator !=VULKAN_HPP_NAMESPACE::BufferViewCreateInfo11841     bool operator!=( BufferViewCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
11842     {
11843       return this->reflect() != rhs.reflect();
11844     }
11845 #endif
11846 
11847   public:
11848     VULKAN_HPP_NAMESPACE::StructureType         sType  = StructureType::eBufferViewCreateInfo;
11849     const void *                                pNext  = {};
11850     VULKAN_HPP_NAMESPACE::BufferViewCreateFlags flags  = {};
11851     VULKAN_HPP_NAMESPACE::Buffer                buffer = {};
11852     VULKAN_HPP_NAMESPACE::Format                format = VULKAN_HPP_NAMESPACE::Format::eUndefined;
11853     VULKAN_HPP_NAMESPACE::DeviceSize            offset = {};
11854     VULKAN_HPP_NAMESPACE::DeviceSize            range  = {};
11855   };
11856   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferViewCreateInfo ) == sizeof( VkBufferViewCreateInfo ),
11857                             "struct and wrapper have different size!" );
11858   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::BufferViewCreateInfo>::value,
11859                             "struct wrapper is not a standard layout!" );
11860   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::BufferViewCreateInfo>::value,
11861                             "BufferViewCreateInfo is not nothrow_move_constructible!" );
11862 
11863   template <>
11864   struct CppType<StructureType, StructureType::eBufferViewCreateInfo>
11865   {
11866     using Type = BufferViewCreateInfo;
11867   };
11868 
11869   struct CalibratedTimestampInfoEXT
11870   {
11871     using NativeType = VkCalibratedTimestampInfoEXT;
11872 
11873     static const bool                                  allowDuplicate = false;
11874     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCalibratedTimestampInfoEXT;
11875 
11876 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
11877     VULKAN_HPP_CONSTEXPR
CalibratedTimestampInfoEXTVULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT11878       CalibratedTimestampInfoEXT( VULKAN_HPP_NAMESPACE::TimeDomainEXT timeDomain_ =
11879                                     VULKAN_HPP_NAMESPACE::TimeDomainEXT::eDevice ) VULKAN_HPP_NOEXCEPT
11880       : timeDomain( timeDomain_ )
11881     {}
11882 
11883     VULKAN_HPP_CONSTEXPR
11884       CalibratedTimestampInfoEXT( CalibratedTimestampInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11885 
CalibratedTimestampInfoEXTVULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT11886     CalibratedTimestampInfoEXT( VkCalibratedTimestampInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
11887       : CalibratedTimestampInfoEXT( *reinterpret_cast<CalibratedTimestampInfoEXT const *>( &rhs ) )
11888     {}
11889 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
11890 
11891     CalibratedTimestampInfoEXT & operator=( CalibratedTimestampInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11892 
operator =VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT11893     CalibratedTimestampInfoEXT & operator=( VkCalibratedTimestampInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
11894     {
11895       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT const *>( &rhs );
11896       return *this;
11897     }
11898 
11899 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT11900     VULKAN_HPP_CONSTEXPR_14 CalibratedTimestampInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
11901     {
11902       pNext = pNext_;
11903       return *this;
11904     }
11905 
11906     VULKAN_HPP_CONSTEXPR_14 CalibratedTimestampInfoEXT &
setTimeDomainVULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT11907                             setTimeDomain( VULKAN_HPP_NAMESPACE::TimeDomainEXT timeDomain_ ) VULKAN_HPP_NOEXCEPT
11908     {
11909       timeDomain = timeDomain_;
11910       return *this;
11911     }
11912 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
11913 
operator VkCalibratedTimestampInfoEXT const&VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT11914     explicit operator VkCalibratedTimestampInfoEXT const &() const VULKAN_HPP_NOEXCEPT
11915     {
11916       return *reinterpret_cast<const VkCalibratedTimestampInfoEXT *>( this );
11917     }
11918 
operator VkCalibratedTimestampInfoEXT&VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT11919     explicit operator VkCalibratedTimestampInfoEXT &() VULKAN_HPP_NOEXCEPT
11920     {
11921       return *reinterpret_cast<VkCalibratedTimestampInfoEXT *>( this );
11922     }
11923 
11924 #if 14 <= VULKAN_HPP_CPP_VERSION
11925     auto
11926 #else
11927     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
11928                const void * const &,
11929                VULKAN_HPP_NAMESPACE::TimeDomainEXT const &>
11930 #endif
reflectVULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT11931       reflect() const VULKAN_HPP_NOEXCEPT
11932     {
11933       return std::tie( sType, pNext, timeDomain );
11934     }
11935 
11936 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
11937     auto operator<=>( CalibratedTimestampInfoEXT const & ) const = default;
11938 #else
operator ==VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT11939     bool operator==( CalibratedTimestampInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
11940     {
11941       return this->reflect() == rhs.reflect();
11942     }
11943 
operator !=VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT11944     bool operator!=( CalibratedTimestampInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
11945     {
11946       return this->reflect() != rhs.reflect();
11947     }
11948 #endif
11949 
11950   public:
11951     VULKAN_HPP_NAMESPACE::StructureType sType      = StructureType::eCalibratedTimestampInfoEXT;
11952     const void *                        pNext      = {};
11953     VULKAN_HPP_NAMESPACE::TimeDomainEXT timeDomain = VULKAN_HPP_NAMESPACE::TimeDomainEXT::eDevice;
11954   };
11955   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT ) ==
11956                               sizeof( VkCalibratedTimestampInfoEXT ),
11957                             "struct and wrapper have different size!" );
11958   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT>::value,
11959                             "struct wrapper is not a standard layout!" );
11960   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT>::value,
11961                             "CalibratedTimestampInfoEXT is not nothrow_move_constructible!" );
11962 
11963   template <>
11964   struct CppType<StructureType, StructureType::eCalibratedTimestampInfoEXT>
11965   {
11966     using Type = CalibratedTimestampInfoEXT;
11967   };
11968 
11969   struct CheckpointData2NV
11970   {
11971     using NativeType = VkCheckpointData2NV;
11972 
11973     static const bool                                  allowDuplicate = false;
11974     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCheckpointData2NV;
11975 
11976 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CheckpointData2NVVULKAN_HPP_NAMESPACE::CheckpointData2NV11977     VULKAN_HPP_CONSTEXPR CheckpointData2NV( VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR stage_ = {},
11978                                             void * pCheckpointMarker_ = {} ) VULKAN_HPP_NOEXCEPT
11979       : stage( stage_ )
11980       , pCheckpointMarker( pCheckpointMarker_ )
11981     {}
11982 
11983     VULKAN_HPP_CONSTEXPR CheckpointData2NV( CheckpointData2NV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11984 
CheckpointData2NVVULKAN_HPP_NAMESPACE::CheckpointData2NV11985     CheckpointData2NV( VkCheckpointData2NV const & rhs ) VULKAN_HPP_NOEXCEPT
11986       : CheckpointData2NV( *reinterpret_cast<CheckpointData2NV const *>( &rhs ) )
11987     {}
11988 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
11989 
11990     CheckpointData2NV & operator=( CheckpointData2NV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11991 
operator =VULKAN_HPP_NAMESPACE::CheckpointData2NV11992     CheckpointData2NV & operator=( VkCheckpointData2NV const & rhs ) VULKAN_HPP_NOEXCEPT
11993     {
11994       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CheckpointData2NV const *>( &rhs );
11995       return *this;
11996     }
11997 
operator VkCheckpointData2NV const&VULKAN_HPP_NAMESPACE::CheckpointData2NV11998     explicit operator VkCheckpointData2NV const &() const VULKAN_HPP_NOEXCEPT
11999     {
12000       return *reinterpret_cast<const VkCheckpointData2NV *>( this );
12001     }
12002 
operator VkCheckpointData2NV&VULKAN_HPP_NAMESPACE::CheckpointData2NV12003     explicit operator VkCheckpointData2NV &() VULKAN_HPP_NOEXCEPT
12004     {
12005       return *reinterpret_cast<VkCheckpointData2NV *>( this );
12006     }
12007 
12008 #if 14 <= VULKAN_HPP_CPP_VERSION
12009     auto
12010 #else
12011     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
12012                void * const &,
12013                VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR const &,
12014                void * const &>
12015 #endif
reflectVULKAN_HPP_NAMESPACE::CheckpointData2NV12016       reflect() const VULKAN_HPP_NOEXCEPT
12017     {
12018       return std::tie( sType, pNext, stage, pCheckpointMarker );
12019     }
12020 
12021 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
12022     auto operator<=>( CheckpointData2NV const & ) const = default;
12023 #else
operator ==VULKAN_HPP_NAMESPACE::CheckpointData2NV12024     bool operator==( CheckpointData2NV const & rhs ) const VULKAN_HPP_NOEXCEPT
12025     {
12026       return this->reflect() == rhs.reflect();
12027     }
12028 
operator !=VULKAN_HPP_NAMESPACE::CheckpointData2NV12029     bool operator!=( CheckpointData2NV const & rhs ) const VULKAN_HPP_NOEXCEPT
12030     {
12031       return this->reflect() != rhs.reflect();
12032     }
12033 #endif
12034 
12035   public:
12036     VULKAN_HPP_NAMESPACE::StructureType          sType             = StructureType::eCheckpointData2NV;
12037     void *                                       pNext             = {};
12038     VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR stage             = {};
12039     void *                                       pCheckpointMarker = {};
12040   };
12041   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CheckpointData2NV ) == sizeof( VkCheckpointData2NV ),
12042                             "struct and wrapper have different size!" );
12043   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::CheckpointData2NV>::value,
12044                             "struct wrapper is not a standard layout!" );
12045   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::CheckpointData2NV>::value,
12046                             "CheckpointData2NV is not nothrow_move_constructible!" );
12047 
12048   template <>
12049   struct CppType<StructureType, StructureType::eCheckpointData2NV>
12050   {
12051     using Type = CheckpointData2NV;
12052   };
12053 
12054   struct CheckpointDataNV
12055   {
12056     using NativeType = VkCheckpointDataNV;
12057 
12058     static const bool                                  allowDuplicate = false;
12059     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCheckpointDataNV;
12060 
12061 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CheckpointDataNVVULKAN_HPP_NAMESPACE::CheckpointDataNV12062     VULKAN_HPP_CONSTEXPR CheckpointDataNV(
12063       VULKAN_HPP_NAMESPACE::PipelineStageFlagBits stage_ = VULKAN_HPP_NAMESPACE::PipelineStageFlagBits::eTopOfPipe,
12064       void *                                      pCheckpointMarker_ = {} ) VULKAN_HPP_NOEXCEPT
12065       : stage( stage_ )
12066       , pCheckpointMarker( pCheckpointMarker_ )
12067     {}
12068 
12069     VULKAN_HPP_CONSTEXPR CheckpointDataNV( CheckpointDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12070 
CheckpointDataNVVULKAN_HPP_NAMESPACE::CheckpointDataNV12071     CheckpointDataNV( VkCheckpointDataNV const & rhs ) VULKAN_HPP_NOEXCEPT
12072       : CheckpointDataNV( *reinterpret_cast<CheckpointDataNV const *>( &rhs ) )
12073     {}
12074 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
12075 
12076     CheckpointDataNV & operator=( CheckpointDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12077 
operator =VULKAN_HPP_NAMESPACE::CheckpointDataNV12078     CheckpointDataNV & operator=( VkCheckpointDataNV const & rhs ) VULKAN_HPP_NOEXCEPT
12079     {
12080       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CheckpointDataNV const *>( &rhs );
12081       return *this;
12082     }
12083 
operator VkCheckpointDataNV const&VULKAN_HPP_NAMESPACE::CheckpointDataNV12084     explicit operator VkCheckpointDataNV const &() const VULKAN_HPP_NOEXCEPT
12085     {
12086       return *reinterpret_cast<const VkCheckpointDataNV *>( this );
12087     }
12088 
operator VkCheckpointDataNV&VULKAN_HPP_NAMESPACE::CheckpointDataNV12089     explicit operator VkCheckpointDataNV &() VULKAN_HPP_NOEXCEPT
12090     {
12091       return *reinterpret_cast<VkCheckpointDataNV *>( this );
12092     }
12093 
12094 #if 14 <= VULKAN_HPP_CPP_VERSION
12095     auto
12096 #else
12097     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
12098                void * const &,
12099                VULKAN_HPP_NAMESPACE::PipelineStageFlagBits const &,
12100                void * const &>
12101 #endif
reflectVULKAN_HPP_NAMESPACE::CheckpointDataNV12102       reflect() const VULKAN_HPP_NOEXCEPT
12103     {
12104       return std::tie( sType, pNext, stage, pCheckpointMarker );
12105     }
12106 
12107 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
12108     auto operator<=>( CheckpointDataNV const & ) const = default;
12109 #else
operator ==VULKAN_HPP_NAMESPACE::CheckpointDataNV12110     bool operator==( CheckpointDataNV const & rhs ) const VULKAN_HPP_NOEXCEPT
12111     {
12112       return this->reflect() == rhs.reflect();
12113     }
12114 
operator !=VULKAN_HPP_NAMESPACE::CheckpointDataNV12115     bool operator!=( CheckpointDataNV const & rhs ) const VULKAN_HPP_NOEXCEPT
12116     {
12117       return this->reflect() != rhs.reflect();
12118     }
12119 #endif
12120 
12121   public:
12122     VULKAN_HPP_NAMESPACE::StructureType         sType = StructureType::eCheckpointDataNV;
12123     void *                                      pNext = {};
12124     VULKAN_HPP_NAMESPACE::PipelineStageFlagBits stage = VULKAN_HPP_NAMESPACE::PipelineStageFlagBits::eTopOfPipe;
12125     void *                                      pCheckpointMarker = {};
12126   };
12127   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CheckpointDataNV ) == sizeof( VkCheckpointDataNV ),
12128                             "struct and wrapper have different size!" );
12129   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::CheckpointDataNV>::value,
12130                             "struct wrapper is not a standard layout!" );
12131   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::CheckpointDataNV>::value,
12132                             "CheckpointDataNV is not nothrow_move_constructible!" );
12133 
12134   template <>
12135   struct CppType<StructureType, StructureType::eCheckpointDataNV>
12136   {
12137     using Type = CheckpointDataNV;
12138   };
12139 
12140   union ClearColorValue
12141   {
12142     using NativeType = VkClearColorValue;
12143 #if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS )
12144 
ClearColorValue(const std::array<float,4> & float32_={} )12145     VULKAN_HPP_CONSTEXPR_14 ClearColorValue( const std::array<float, 4> & float32_ = {} ) : float32( float32_ ) {}
12146 
ClearColorValue(const std::array<int32_t,4> & int32_)12147     VULKAN_HPP_CONSTEXPR_14 ClearColorValue( const std::array<int32_t, 4> & int32_ ) : int32( int32_ ) {}
12148 
ClearColorValue(const std::array<uint32_t,4> & uint32_)12149     VULKAN_HPP_CONSTEXPR_14 ClearColorValue( const std::array<uint32_t, 4> & uint32_ ) : uint32( uint32_ ) {}
12150 #endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/
12151 
12152 #if !defined( VULKAN_HPP_NO_UNION_SETTERS )
setFloat32(std::array<float,4> float32_)12153     VULKAN_HPP_CONSTEXPR_14 ClearColorValue & setFloat32( std::array<float, 4> float32_ ) VULKAN_HPP_NOEXCEPT
12154     {
12155       float32 = float32_;
12156       return *this;
12157     }
12158 
setInt32(std::array<int32_t,4> int32_)12159     VULKAN_HPP_CONSTEXPR_14 ClearColorValue & setInt32( std::array<int32_t, 4> int32_ ) VULKAN_HPP_NOEXCEPT
12160     {
12161       int32 = int32_;
12162       return *this;
12163     }
12164 
setUint32(std::array<uint32_t,4> uint32_)12165     VULKAN_HPP_CONSTEXPR_14 ClearColorValue & setUint32( std::array<uint32_t, 4> uint32_ ) VULKAN_HPP_NOEXCEPT
12166     {
12167       uint32 = uint32_;
12168       return *this;
12169     }
12170 #endif /*VULKAN_HPP_NO_UNION_SETTERS*/
12171 
operator VkClearColorValue const&() const12172     operator VkClearColorValue const &() const
12173     {
12174       return *reinterpret_cast<const VkClearColorValue *>( this );
12175     }
12176 
operator VkClearColorValue&()12177     operator VkClearColorValue &()
12178     {
12179       return *reinterpret_cast<VkClearColorValue *>( this );
12180     }
12181 
12182     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 4>    float32;
12183     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<int32_t, 4>  int32;
12184     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 4> uint32;
12185   };
12186 
12187   struct ClearDepthStencilValue
12188   {
12189     using NativeType = VkClearDepthStencilValue;
12190 
12191 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ClearDepthStencilValueVULKAN_HPP_NAMESPACE::ClearDepthStencilValue12192     VULKAN_HPP_CONSTEXPR ClearDepthStencilValue( float depth_ = {}, uint32_t stencil_ = {} ) VULKAN_HPP_NOEXCEPT
12193       : depth( depth_ )
12194       , stencil( stencil_ )
12195     {}
12196 
12197     VULKAN_HPP_CONSTEXPR ClearDepthStencilValue( ClearDepthStencilValue const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12198 
ClearDepthStencilValueVULKAN_HPP_NAMESPACE::ClearDepthStencilValue12199     ClearDepthStencilValue( VkClearDepthStencilValue const & rhs ) VULKAN_HPP_NOEXCEPT
12200       : ClearDepthStencilValue( *reinterpret_cast<ClearDepthStencilValue const *>( &rhs ) )
12201     {}
12202 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
12203 
12204     ClearDepthStencilValue & operator=( ClearDepthStencilValue const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12205 
operator =VULKAN_HPP_NAMESPACE::ClearDepthStencilValue12206     ClearDepthStencilValue & operator=( VkClearDepthStencilValue const & rhs ) VULKAN_HPP_NOEXCEPT
12207     {
12208       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ClearDepthStencilValue const *>( &rhs );
12209       return *this;
12210     }
12211 
12212 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setDepthVULKAN_HPP_NAMESPACE::ClearDepthStencilValue12213     VULKAN_HPP_CONSTEXPR_14 ClearDepthStencilValue & setDepth( float depth_ ) VULKAN_HPP_NOEXCEPT
12214     {
12215       depth = depth_;
12216       return *this;
12217     }
12218 
setStencilVULKAN_HPP_NAMESPACE::ClearDepthStencilValue12219     VULKAN_HPP_CONSTEXPR_14 ClearDepthStencilValue & setStencil( uint32_t stencil_ ) VULKAN_HPP_NOEXCEPT
12220     {
12221       stencil = stencil_;
12222       return *this;
12223     }
12224 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
12225 
operator VkClearDepthStencilValue const&VULKAN_HPP_NAMESPACE::ClearDepthStencilValue12226     explicit operator VkClearDepthStencilValue const &() const VULKAN_HPP_NOEXCEPT
12227     {
12228       return *reinterpret_cast<const VkClearDepthStencilValue *>( this );
12229     }
12230 
operator VkClearDepthStencilValue&VULKAN_HPP_NAMESPACE::ClearDepthStencilValue12231     explicit operator VkClearDepthStencilValue &() VULKAN_HPP_NOEXCEPT
12232     {
12233       return *reinterpret_cast<VkClearDepthStencilValue *>( this );
12234     }
12235 
12236 #if 14 <= VULKAN_HPP_CPP_VERSION
12237     auto
12238 #else
12239     std::tuple<float const &, uint32_t const &>
12240 #endif
reflectVULKAN_HPP_NAMESPACE::ClearDepthStencilValue12241       reflect() const VULKAN_HPP_NOEXCEPT
12242     {
12243       return std::tie( depth, stencil );
12244     }
12245 
12246 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
12247     auto operator<=>( ClearDepthStencilValue const & ) const = default;
12248 #else
operator ==VULKAN_HPP_NAMESPACE::ClearDepthStencilValue12249     bool operator==( ClearDepthStencilValue const & rhs ) const VULKAN_HPP_NOEXCEPT
12250     {
12251       return this->reflect() == rhs.reflect();
12252     }
12253 
operator !=VULKAN_HPP_NAMESPACE::ClearDepthStencilValue12254     bool operator!=( ClearDepthStencilValue const & rhs ) const VULKAN_HPP_NOEXCEPT
12255     {
12256       return this->reflect() != rhs.reflect();
12257     }
12258 #endif
12259 
12260   public:
12261     float    depth   = {};
12262     uint32_t stencil = {};
12263   };
12264   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ClearDepthStencilValue ) ==
12265                               sizeof( VkClearDepthStencilValue ),
12266                             "struct and wrapper have different size!" );
12267   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ClearDepthStencilValue>::value,
12268                             "struct wrapper is not a standard layout!" );
12269   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ClearDepthStencilValue>::value,
12270                             "ClearDepthStencilValue is not nothrow_move_constructible!" );
12271 
12272   union ClearValue
12273   {
12274     using NativeType = VkClearValue;
12275 #if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS )
12276 
ClearValue(VULKAN_HPP_NAMESPACE::ClearColorValue color_={} )12277     VULKAN_HPP_CONSTEXPR_14 ClearValue( VULKAN_HPP_NAMESPACE::ClearColorValue color_ = {} ) : color( color_ ) {}
12278 
ClearValue(VULKAN_HPP_NAMESPACE::ClearDepthStencilValue depthStencil_)12279     VULKAN_HPP_CONSTEXPR_14 ClearValue( VULKAN_HPP_NAMESPACE::ClearDepthStencilValue depthStencil_ )
12280       : depthStencil( depthStencil_ )
12281     {}
12282 #endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/
12283 
12284 #if !defined( VULKAN_HPP_NO_UNION_SETTERS )
12285     VULKAN_HPP_CONSTEXPR_14 ClearValue &
setColor(VULKAN_HPP_NAMESPACE::ClearColorValue const & color_)12286                             setColor( VULKAN_HPP_NAMESPACE::ClearColorValue const & color_ ) VULKAN_HPP_NOEXCEPT
12287     {
12288       color = color_;
12289       return *this;
12290     }
12291 
12292     VULKAN_HPP_CONSTEXPR_14 ClearValue &
setDepthStencil(VULKAN_HPP_NAMESPACE::ClearDepthStencilValue const & depthStencil_)12293       setDepthStencil( VULKAN_HPP_NAMESPACE::ClearDepthStencilValue const & depthStencil_ ) VULKAN_HPP_NOEXCEPT
12294     {
12295       depthStencil = depthStencil_;
12296       return *this;
12297     }
12298 #endif /*VULKAN_HPP_NO_UNION_SETTERS*/
12299 
operator VkClearValue const&() const12300     operator VkClearValue const &() const
12301     {
12302       return *reinterpret_cast<const VkClearValue *>( this );
12303     }
12304 
operator VkClearValue&()12305     operator VkClearValue &()
12306     {
12307       return *reinterpret_cast<VkClearValue *>( this );
12308     }
12309 
12310 #ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
12311     VULKAN_HPP_NAMESPACE::ClearColorValue        color;
12312     VULKAN_HPP_NAMESPACE::ClearDepthStencilValue depthStencil;
12313 #else
12314     VkClearColorValue        color;
12315     VkClearDepthStencilValue depthStencil;
12316 #endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/
12317   };
12318 
12319   struct ClearAttachment
12320   {
12321     using NativeType = VkClearAttachment;
12322 
12323 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ClearAttachmentVULKAN_HPP_NAMESPACE::ClearAttachment12324     VULKAN_HPP_CONSTEXPR_14 ClearAttachment( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_      = {},
12325                                              uint32_t                               colorAttachment_ = {},
12326                                              VULKAN_HPP_NAMESPACE::ClearValue clearValue_ = {} ) VULKAN_HPP_NOEXCEPT
12327       : aspectMask( aspectMask_ )
12328       , colorAttachment( colorAttachment_ )
12329       , clearValue( clearValue_ )
12330     {}
12331 
12332     VULKAN_HPP_CONSTEXPR_14 ClearAttachment( ClearAttachment const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12333 
ClearAttachmentVULKAN_HPP_NAMESPACE::ClearAttachment12334     ClearAttachment( VkClearAttachment const & rhs ) VULKAN_HPP_NOEXCEPT
12335       : ClearAttachment( *reinterpret_cast<ClearAttachment const *>( &rhs ) )
12336     {}
12337 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
12338 
12339     ClearAttachment & operator=( ClearAttachment const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12340 
operator =VULKAN_HPP_NAMESPACE::ClearAttachment12341     ClearAttachment & operator=( VkClearAttachment const & rhs ) VULKAN_HPP_NOEXCEPT
12342     {
12343       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ClearAttachment const *>( &rhs );
12344       return *this;
12345     }
12346 
12347 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
12348     VULKAN_HPP_CONSTEXPR_14 ClearAttachment &
setAspectMaskVULKAN_HPP_NAMESPACE::ClearAttachment12349                             setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT
12350     {
12351       aspectMask = aspectMask_;
12352       return *this;
12353     }
12354 
setColorAttachmentVULKAN_HPP_NAMESPACE::ClearAttachment12355     VULKAN_HPP_CONSTEXPR_14 ClearAttachment & setColorAttachment( uint32_t colorAttachment_ ) VULKAN_HPP_NOEXCEPT
12356     {
12357       colorAttachment = colorAttachment_;
12358       return *this;
12359     }
12360 
12361     VULKAN_HPP_CONSTEXPR_14 ClearAttachment &
setClearValueVULKAN_HPP_NAMESPACE::ClearAttachment12362                             setClearValue( VULKAN_HPP_NAMESPACE::ClearValue const & clearValue_ ) VULKAN_HPP_NOEXCEPT
12363     {
12364       clearValue = clearValue_;
12365       return *this;
12366     }
12367 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
12368 
operator VkClearAttachment const&VULKAN_HPP_NAMESPACE::ClearAttachment12369     explicit operator VkClearAttachment const &() const VULKAN_HPP_NOEXCEPT
12370     {
12371       return *reinterpret_cast<const VkClearAttachment *>( this );
12372     }
12373 
operator VkClearAttachment&VULKAN_HPP_NAMESPACE::ClearAttachment12374     explicit operator VkClearAttachment &() VULKAN_HPP_NOEXCEPT
12375     {
12376       return *reinterpret_cast<VkClearAttachment *>( this );
12377     }
12378 
12379 #if 14 <= VULKAN_HPP_CPP_VERSION
12380     auto
12381 #else
12382     std::
12383       tuple<VULKAN_HPP_NAMESPACE::ImageAspectFlags const &, uint32_t const &, VULKAN_HPP_NAMESPACE::ClearValue const &>
12384 #endif
reflectVULKAN_HPP_NAMESPACE::ClearAttachment12385       reflect() const VULKAN_HPP_NOEXCEPT
12386     {
12387       return std::tie( aspectMask, colorAttachment, clearValue );
12388     }
12389 
12390   public:
12391     VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask      = {};
12392     uint32_t                               colorAttachment = {};
12393     VULKAN_HPP_NAMESPACE::ClearValue       clearValue      = {};
12394   };
12395   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ClearAttachment ) == sizeof( VkClearAttachment ),
12396                             "struct and wrapper have different size!" );
12397   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ClearAttachment>::value,
12398                             "struct wrapper is not a standard layout!" );
12399   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ClearAttachment>::value,
12400                             "ClearAttachment is not nothrow_move_constructible!" );
12401 
12402   struct ClearRect
12403   {
12404     using NativeType = VkClearRect;
12405 
12406 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ClearRectVULKAN_HPP_NAMESPACE::ClearRect12407     VULKAN_HPP_CONSTEXPR ClearRect( VULKAN_HPP_NAMESPACE::Rect2D rect_           = {},
12408                                     uint32_t                     baseArrayLayer_ = {},
12409                                     uint32_t                     layerCount_     = {} ) VULKAN_HPP_NOEXCEPT
12410       : rect( rect_ )
12411       , baseArrayLayer( baseArrayLayer_ )
12412       , layerCount( layerCount_ )
12413     {}
12414 
12415     VULKAN_HPP_CONSTEXPR ClearRect( ClearRect const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12416 
ClearRectVULKAN_HPP_NAMESPACE::ClearRect12417     ClearRect( VkClearRect const & rhs ) VULKAN_HPP_NOEXCEPT : ClearRect( *reinterpret_cast<ClearRect const *>( &rhs ) )
12418     {}
12419 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
12420 
12421     ClearRect & operator=( ClearRect const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12422 
operator =VULKAN_HPP_NAMESPACE::ClearRect12423     ClearRect & operator=( VkClearRect const & rhs ) VULKAN_HPP_NOEXCEPT
12424     {
12425       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ClearRect const *>( &rhs );
12426       return *this;
12427     }
12428 
12429 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setRectVULKAN_HPP_NAMESPACE::ClearRect12430     VULKAN_HPP_CONSTEXPR_14 ClearRect & setRect( VULKAN_HPP_NAMESPACE::Rect2D const & rect_ ) VULKAN_HPP_NOEXCEPT
12431     {
12432       rect = rect_;
12433       return *this;
12434     }
12435 
setBaseArrayLayerVULKAN_HPP_NAMESPACE::ClearRect12436     VULKAN_HPP_CONSTEXPR_14 ClearRect & setBaseArrayLayer( uint32_t baseArrayLayer_ ) VULKAN_HPP_NOEXCEPT
12437     {
12438       baseArrayLayer = baseArrayLayer_;
12439       return *this;
12440     }
12441 
setLayerCountVULKAN_HPP_NAMESPACE::ClearRect12442     VULKAN_HPP_CONSTEXPR_14 ClearRect & setLayerCount( uint32_t layerCount_ ) VULKAN_HPP_NOEXCEPT
12443     {
12444       layerCount = layerCount_;
12445       return *this;
12446     }
12447 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
12448 
operator VkClearRect const&VULKAN_HPP_NAMESPACE::ClearRect12449     explicit operator VkClearRect const &() const VULKAN_HPP_NOEXCEPT
12450     {
12451       return *reinterpret_cast<const VkClearRect *>( this );
12452     }
12453 
operator VkClearRect&VULKAN_HPP_NAMESPACE::ClearRect12454     explicit operator VkClearRect &() VULKAN_HPP_NOEXCEPT
12455     {
12456       return *reinterpret_cast<VkClearRect *>( this );
12457     }
12458 
12459 #if 14 <= VULKAN_HPP_CPP_VERSION
12460     auto
12461 #else
12462     std::tuple<VULKAN_HPP_NAMESPACE::Rect2D const &, uint32_t const &, uint32_t const &>
12463 #endif
reflectVULKAN_HPP_NAMESPACE::ClearRect12464       reflect() const VULKAN_HPP_NOEXCEPT
12465     {
12466       return std::tie( rect, baseArrayLayer, layerCount );
12467     }
12468 
12469 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
12470     auto operator<=>( ClearRect const & ) const = default;
12471 #else
operator ==VULKAN_HPP_NAMESPACE::ClearRect12472     bool operator==( ClearRect const & rhs ) const VULKAN_HPP_NOEXCEPT
12473     {
12474       return this->reflect() == rhs.reflect();
12475     }
12476 
operator !=VULKAN_HPP_NAMESPACE::ClearRect12477     bool operator!=( ClearRect const & rhs ) const VULKAN_HPP_NOEXCEPT
12478     {
12479       return this->reflect() != rhs.reflect();
12480     }
12481 #endif
12482 
12483   public:
12484     VULKAN_HPP_NAMESPACE::Rect2D rect           = {};
12485     uint32_t                     baseArrayLayer = {};
12486     uint32_t                     layerCount     = {};
12487   };
12488   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ClearRect ) == sizeof( VkClearRect ),
12489                             "struct and wrapper have different size!" );
12490   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ClearRect>::value,
12491                             "struct wrapper is not a standard layout!" );
12492   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ClearRect>::value,
12493                             "ClearRect is not nothrow_move_constructible!" );
12494 
12495   struct CoarseSampleLocationNV
12496   {
12497     using NativeType = VkCoarseSampleLocationNV;
12498 
12499 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
12500     VULKAN_HPP_CONSTEXPR
CoarseSampleLocationNVVULKAN_HPP_NAMESPACE::CoarseSampleLocationNV12501       CoarseSampleLocationNV( uint32_t pixelX_ = {}, uint32_t pixelY_ = {}, uint32_t sample_ = {} ) VULKAN_HPP_NOEXCEPT
12502       : pixelX( pixelX_ )
12503       , pixelY( pixelY_ )
12504       , sample( sample_ )
12505     {}
12506 
12507     VULKAN_HPP_CONSTEXPR CoarseSampleLocationNV( CoarseSampleLocationNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12508 
CoarseSampleLocationNVVULKAN_HPP_NAMESPACE::CoarseSampleLocationNV12509     CoarseSampleLocationNV( VkCoarseSampleLocationNV const & rhs ) VULKAN_HPP_NOEXCEPT
12510       : CoarseSampleLocationNV( *reinterpret_cast<CoarseSampleLocationNV const *>( &rhs ) )
12511     {}
12512 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
12513 
12514     CoarseSampleLocationNV & operator=( CoarseSampleLocationNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12515 
operator =VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV12516     CoarseSampleLocationNV & operator=( VkCoarseSampleLocationNV const & rhs ) VULKAN_HPP_NOEXCEPT
12517     {
12518       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV const *>( &rhs );
12519       return *this;
12520     }
12521 
12522 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPixelXVULKAN_HPP_NAMESPACE::CoarseSampleLocationNV12523     VULKAN_HPP_CONSTEXPR_14 CoarseSampleLocationNV & setPixelX( uint32_t pixelX_ ) VULKAN_HPP_NOEXCEPT
12524     {
12525       pixelX = pixelX_;
12526       return *this;
12527     }
12528 
setPixelYVULKAN_HPP_NAMESPACE::CoarseSampleLocationNV12529     VULKAN_HPP_CONSTEXPR_14 CoarseSampleLocationNV & setPixelY( uint32_t pixelY_ ) VULKAN_HPP_NOEXCEPT
12530     {
12531       pixelY = pixelY_;
12532       return *this;
12533     }
12534 
setSampleVULKAN_HPP_NAMESPACE::CoarseSampleLocationNV12535     VULKAN_HPP_CONSTEXPR_14 CoarseSampleLocationNV & setSample( uint32_t sample_ ) VULKAN_HPP_NOEXCEPT
12536     {
12537       sample = sample_;
12538       return *this;
12539     }
12540 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
12541 
operator VkCoarseSampleLocationNV const&VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV12542     explicit operator VkCoarseSampleLocationNV const &() const VULKAN_HPP_NOEXCEPT
12543     {
12544       return *reinterpret_cast<const VkCoarseSampleLocationNV *>( this );
12545     }
12546 
operator VkCoarseSampleLocationNV&VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV12547     explicit operator VkCoarseSampleLocationNV &() VULKAN_HPP_NOEXCEPT
12548     {
12549       return *reinterpret_cast<VkCoarseSampleLocationNV *>( this );
12550     }
12551 
12552 #if 14 <= VULKAN_HPP_CPP_VERSION
12553     auto
12554 #else
12555     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &>
12556 #endif
reflectVULKAN_HPP_NAMESPACE::CoarseSampleLocationNV12557       reflect() const VULKAN_HPP_NOEXCEPT
12558     {
12559       return std::tie( pixelX, pixelY, sample );
12560     }
12561 
12562 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
12563     auto operator<=>( CoarseSampleLocationNV const & ) const = default;
12564 #else
operator ==VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV12565     bool operator==( CoarseSampleLocationNV const & rhs ) const VULKAN_HPP_NOEXCEPT
12566     {
12567       return this->reflect() == rhs.reflect();
12568     }
12569 
operator !=VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV12570     bool operator!=( CoarseSampleLocationNV const & rhs ) const VULKAN_HPP_NOEXCEPT
12571     {
12572       return this->reflect() != rhs.reflect();
12573     }
12574 #endif
12575 
12576   public:
12577     uint32_t pixelX = {};
12578     uint32_t pixelY = {};
12579     uint32_t sample = {};
12580   };
12581   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV ) ==
12582                               sizeof( VkCoarseSampleLocationNV ),
12583                             "struct and wrapper have different size!" );
12584   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV>::value,
12585                             "struct wrapper is not a standard layout!" );
12586   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV>::value,
12587                             "CoarseSampleLocationNV is not nothrow_move_constructible!" );
12588 
12589   struct CoarseSampleOrderCustomNV
12590   {
12591     using NativeType = VkCoarseSampleOrderCustomNV;
12592 
12593 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CoarseSampleOrderCustomNVVULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV12594     VULKAN_HPP_CONSTEXPR CoarseSampleOrderCustomNV(
12595       VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV shadingRate_ =
12596         VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV::eNoInvocations,
12597       uint32_t                                             sampleCount_         = {},
12598       uint32_t                                             sampleLocationCount_ = {},
12599       const VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV * pSampleLocations_    = {} ) VULKAN_HPP_NOEXCEPT
12600       : shadingRate( shadingRate_ )
12601       , sampleCount( sampleCount_ )
12602       , sampleLocationCount( sampleLocationCount_ )
12603       , pSampleLocations( pSampleLocations_ )
12604     {}
12605 
12606     VULKAN_HPP_CONSTEXPR
12607       CoarseSampleOrderCustomNV( CoarseSampleOrderCustomNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12608 
CoarseSampleOrderCustomNVVULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV12609     CoarseSampleOrderCustomNV( VkCoarseSampleOrderCustomNV const & rhs ) VULKAN_HPP_NOEXCEPT
12610       : CoarseSampleOrderCustomNV( *reinterpret_cast<CoarseSampleOrderCustomNV const *>( &rhs ) )
12611     {}
12612 
12613 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
CoarseSampleOrderCustomNVVULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV12614     CoarseSampleOrderCustomNV(
12615       VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV shadingRate_,
12616       uint32_t                                        sampleCount_,
12617       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV> const &
12618         sampleLocations_ )
12619       : shadingRate( shadingRate_ )
12620       , sampleCount( sampleCount_ )
12621       , sampleLocationCount( static_cast<uint32_t>( sampleLocations_.size() ) )
12622       , pSampleLocations( sampleLocations_.data() )
12623     {}
12624 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
12625 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
12626 
12627     CoarseSampleOrderCustomNV & operator=( CoarseSampleOrderCustomNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12628 
operator =VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV12629     CoarseSampleOrderCustomNV & operator=( VkCoarseSampleOrderCustomNV const & rhs ) VULKAN_HPP_NOEXCEPT
12630     {
12631       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV const *>( &rhs );
12632       return *this;
12633     }
12634 
12635 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
12636     VULKAN_HPP_CONSTEXPR_14 CoarseSampleOrderCustomNV &
setShadingRateVULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV12637       setShadingRate( VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV shadingRate_ ) VULKAN_HPP_NOEXCEPT
12638     {
12639       shadingRate = shadingRate_;
12640       return *this;
12641     }
12642 
setSampleCountVULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV12643     VULKAN_HPP_CONSTEXPR_14 CoarseSampleOrderCustomNV & setSampleCount( uint32_t sampleCount_ ) VULKAN_HPP_NOEXCEPT
12644     {
12645       sampleCount = sampleCount_;
12646       return *this;
12647     }
12648 
12649     VULKAN_HPP_CONSTEXPR_14 CoarseSampleOrderCustomNV &
setSampleLocationCountVULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV12650                             setSampleLocationCount( uint32_t sampleLocationCount_ ) VULKAN_HPP_NOEXCEPT
12651     {
12652       sampleLocationCount = sampleLocationCount_;
12653       return *this;
12654     }
12655 
12656     VULKAN_HPP_CONSTEXPR_14 CoarseSampleOrderCustomNV &
setPSampleLocationsVULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV12657       setPSampleLocations( const VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV * pSampleLocations_ ) VULKAN_HPP_NOEXCEPT
12658     {
12659       pSampleLocations = pSampleLocations_;
12660       return *this;
12661     }
12662 
12663 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSampleLocationsVULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV12664     CoarseSampleOrderCustomNV & setSampleLocations(
12665       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV> const &
12666         sampleLocations_ ) VULKAN_HPP_NOEXCEPT
12667     {
12668       sampleLocationCount = static_cast<uint32_t>( sampleLocations_.size() );
12669       pSampleLocations    = sampleLocations_.data();
12670       return *this;
12671     }
12672 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
12673 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
12674 
operator VkCoarseSampleOrderCustomNV const&VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV12675     explicit operator VkCoarseSampleOrderCustomNV const &() const VULKAN_HPP_NOEXCEPT
12676     {
12677       return *reinterpret_cast<const VkCoarseSampleOrderCustomNV *>( this );
12678     }
12679 
operator VkCoarseSampleOrderCustomNV&VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV12680     explicit operator VkCoarseSampleOrderCustomNV &() VULKAN_HPP_NOEXCEPT
12681     {
12682       return *reinterpret_cast<VkCoarseSampleOrderCustomNV *>( this );
12683     }
12684 
12685 #if 14 <= VULKAN_HPP_CPP_VERSION
12686     auto
12687 #else
12688     std::tuple<VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV const &,
12689                uint32_t const &,
12690                uint32_t const &,
12691                const VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV * const &>
12692 #endif
reflectVULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV12693       reflect() const VULKAN_HPP_NOEXCEPT
12694     {
12695       return std::tie( shadingRate, sampleCount, sampleLocationCount, pSampleLocations );
12696     }
12697 
12698 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
12699     auto operator<=>( CoarseSampleOrderCustomNV const & ) const = default;
12700 #else
operator ==VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV12701     bool operator==( CoarseSampleOrderCustomNV const & rhs ) const VULKAN_HPP_NOEXCEPT
12702     {
12703       return this->reflect() == rhs.reflect();
12704     }
12705 
operator !=VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV12706     bool operator!=( CoarseSampleOrderCustomNV const & rhs ) const VULKAN_HPP_NOEXCEPT
12707     {
12708       return this->reflect() != rhs.reflect();
12709     }
12710 #endif
12711 
12712   public:
12713     VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV shadingRate =
12714       VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV::eNoInvocations;
12715     uint32_t                                             sampleCount         = {};
12716     uint32_t                                             sampleLocationCount = {};
12717     const VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV * pSampleLocations    = {};
12718   };
12719   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV ) ==
12720                               sizeof( VkCoarseSampleOrderCustomNV ),
12721                             "struct and wrapper have different size!" );
12722   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV>::value,
12723                             "struct wrapper is not a standard layout!" );
12724   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV>::value,
12725                             "CoarseSampleOrderCustomNV is not nothrow_move_constructible!" );
12726 
12727   struct CommandBufferAllocateInfo
12728   {
12729     using NativeType = VkCommandBufferAllocateInfo;
12730 
12731     static const bool                                  allowDuplicate = false;
12732     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCommandBufferAllocateInfo;
12733 
12734 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CommandBufferAllocateInfoVULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo12735     VULKAN_HPP_CONSTEXPR CommandBufferAllocateInfo(
12736       VULKAN_HPP_NAMESPACE::CommandPool        commandPool_        = {},
12737       VULKAN_HPP_NAMESPACE::CommandBufferLevel level_              = VULKAN_HPP_NAMESPACE::CommandBufferLevel::ePrimary,
12738       uint32_t                                 commandBufferCount_ = {} ) VULKAN_HPP_NOEXCEPT
12739       : commandPool( commandPool_ )
12740       , level( level_ )
12741       , commandBufferCount( commandBufferCount_ )
12742     {}
12743 
12744     VULKAN_HPP_CONSTEXPR
12745       CommandBufferAllocateInfo( CommandBufferAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12746 
CommandBufferAllocateInfoVULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo12747     CommandBufferAllocateInfo( VkCommandBufferAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
12748       : CommandBufferAllocateInfo( *reinterpret_cast<CommandBufferAllocateInfo const *>( &rhs ) )
12749     {}
12750 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
12751 
12752     CommandBufferAllocateInfo & operator=( CommandBufferAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12753 
operator =VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo12754     CommandBufferAllocateInfo & operator=( VkCommandBufferAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
12755     {
12756       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo const *>( &rhs );
12757       return *this;
12758     }
12759 
12760 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo12761     VULKAN_HPP_CONSTEXPR_14 CommandBufferAllocateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
12762     {
12763       pNext = pNext_;
12764       return *this;
12765     }
12766 
12767     VULKAN_HPP_CONSTEXPR_14 CommandBufferAllocateInfo &
setCommandPoolVULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo12768                             setCommandPool( VULKAN_HPP_NAMESPACE::CommandPool commandPool_ ) VULKAN_HPP_NOEXCEPT
12769     {
12770       commandPool = commandPool_;
12771       return *this;
12772     }
12773 
12774     VULKAN_HPP_CONSTEXPR_14 CommandBufferAllocateInfo &
setLevelVULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo12775                             setLevel( VULKAN_HPP_NAMESPACE::CommandBufferLevel level_ ) VULKAN_HPP_NOEXCEPT
12776     {
12777       level = level_;
12778       return *this;
12779     }
12780 
12781     VULKAN_HPP_CONSTEXPR_14 CommandBufferAllocateInfo &
setCommandBufferCountVULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo12782                             setCommandBufferCount( uint32_t commandBufferCount_ ) VULKAN_HPP_NOEXCEPT
12783     {
12784       commandBufferCount = commandBufferCount_;
12785       return *this;
12786     }
12787 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
12788 
operator VkCommandBufferAllocateInfo const&VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo12789     explicit operator VkCommandBufferAllocateInfo const &() const VULKAN_HPP_NOEXCEPT
12790     {
12791       return *reinterpret_cast<const VkCommandBufferAllocateInfo *>( this );
12792     }
12793 
operator VkCommandBufferAllocateInfo&VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo12794     explicit operator VkCommandBufferAllocateInfo &() VULKAN_HPP_NOEXCEPT
12795     {
12796       return *reinterpret_cast<VkCommandBufferAllocateInfo *>( this );
12797     }
12798 
12799 #if 14 <= VULKAN_HPP_CPP_VERSION
12800     auto
12801 #else
12802     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
12803                const void * const &,
12804                VULKAN_HPP_NAMESPACE::CommandPool const &,
12805                VULKAN_HPP_NAMESPACE::CommandBufferLevel const &,
12806                uint32_t const &>
12807 #endif
reflectVULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo12808       reflect() const VULKAN_HPP_NOEXCEPT
12809     {
12810       return std::tie( sType, pNext, commandPool, level, commandBufferCount );
12811     }
12812 
12813 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
12814     auto operator<=>( CommandBufferAllocateInfo const & ) const = default;
12815 #else
operator ==VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo12816     bool operator==( CommandBufferAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
12817     {
12818       return this->reflect() == rhs.reflect();
12819     }
12820 
operator !=VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo12821     bool operator!=( CommandBufferAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
12822     {
12823       return this->reflect() != rhs.reflect();
12824     }
12825 #endif
12826 
12827   public:
12828     VULKAN_HPP_NAMESPACE::StructureType      sType              = StructureType::eCommandBufferAllocateInfo;
12829     const void *                             pNext              = {};
12830     VULKAN_HPP_NAMESPACE::CommandPool        commandPool        = {};
12831     VULKAN_HPP_NAMESPACE::CommandBufferLevel level              = VULKAN_HPP_NAMESPACE::CommandBufferLevel::ePrimary;
12832     uint32_t                                 commandBufferCount = {};
12833   };
12834   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo ) ==
12835                               sizeof( VkCommandBufferAllocateInfo ),
12836                             "struct and wrapper have different size!" );
12837   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo>::value,
12838                             "struct wrapper is not a standard layout!" );
12839   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo>::value,
12840                             "CommandBufferAllocateInfo is not nothrow_move_constructible!" );
12841 
12842   template <>
12843   struct CppType<StructureType, StructureType::eCommandBufferAllocateInfo>
12844   {
12845     using Type = CommandBufferAllocateInfo;
12846   };
12847 
12848   struct CommandBufferInheritanceInfo
12849   {
12850     using NativeType = VkCommandBufferInheritanceInfo;
12851 
12852     static const bool                                  allowDuplicate = false;
12853     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCommandBufferInheritanceInfo;
12854 
12855 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CommandBufferInheritanceInfoVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo12856     VULKAN_HPP_CONSTEXPR CommandBufferInheritanceInfo(
12857       VULKAN_HPP_NAMESPACE::RenderPass                  renderPass_           = {},
12858       uint32_t                                          subpass_              = {},
12859       VULKAN_HPP_NAMESPACE::Framebuffer                 framebuffer_          = {},
12860       VULKAN_HPP_NAMESPACE::Bool32                      occlusionQueryEnable_ = {},
12861       VULKAN_HPP_NAMESPACE::QueryControlFlags           queryFlags_           = {},
12862       VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags pipelineStatistics_   = {} ) VULKAN_HPP_NOEXCEPT
12863       : renderPass( renderPass_ )
12864       , subpass( subpass_ )
12865       , framebuffer( framebuffer_ )
12866       , occlusionQueryEnable( occlusionQueryEnable_ )
12867       , queryFlags( queryFlags_ )
12868       , pipelineStatistics( pipelineStatistics_ )
12869     {}
12870 
12871     VULKAN_HPP_CONSTEXPR
12872       CommandBufferInheritanceInfo( CommandBufferInheritanceInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12873 
CommandBufferInheritanceInfoVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo12874     CommandBufferInheritanceInfo( VkCommandBufferInheritanceInfo const & rhs ) VULKAN_HPP_NOEXCEPT
12875       : CommandBufferInheritanceInfo( *reinterpret_cast<CommandBufferInheritanceInfo const *>( &rhs ) )
12876     {}
12877 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
12878 
12879     CommandBufferInheritanceInfo & operator=( CommandBufferInheritanceInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12880 
operator =VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo12881     CommandBufferInheritanceInfo & operator=( VkCommandBufferInheritanceInfo const & rhs ) VULKAN_HPP_NOEXCEPT
12882     {
12883       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo const *>( &rhs );
12884       return *this;
12885     }
12886 
12887 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo12888     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
12889     {
12890       pNext = pNext_;
12891       return *this;
12892     }
12893 
12894     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo &
setRenderPassVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo12895                             setRenderPass( VULKAN_HPP_NAMESPACE::RenderPass renderPass_ ) VULKAN_HPP_NOEXCEPT
12896     {
12897       renderPass = renderPass_;
12898       return *this;
12899     }
12900 
setSubpassVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo12901     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo & setSubpass( uint32_t subpass_ ) VULKAN_HPP_NOEXCEPT
12902     {
12903       subpass = subpass_;
12904       return *this;
12905     }
12906 
12907     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo &
setFramebufferVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo12908                             setFramebuffer( VULKAN_HPP_NAMESPACE::Framebuffer framebuffer_ ) VULKAN_HPP_NOEXCEPT
12909     {
12910       framebuffer = framebuffer_;
12911       return *this;
12912     }
12913 
12914     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo &
setOcclusionQueryEnableVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo12915       setOcclusionQueryEnable( VULKAN_HPP_NAMESPACE::Bool32 occlusionQueryEnable_ ) VULKAN_HPP_NOEXCEPT
12916     {
12917       occlusionQueryEnable = occlusionQueryEnable_;
12918       return *this;
12919     }
12920 
12921     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo &
setQueryFlagsVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo12922                             setQueryFlags( VULKAN_HPP_NAMESPACE::QueryControlFlags queryFlags_ ) VULKAN_HPP_NOEXCEPT
12923     {
12924       queryFlags = queryFlags_;
12925       return *this;
12926     }
12927 
12928     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo &
setPipelineStatisticsVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo12929       setPipelineStatistics( VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags pipelineStatistics_ ) VULKAN_HPP_NOEXCEPT
12930     {
12931       pipelineStatistics = pipelineStatistics_;
12932       return *this;
12933     }
12934 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
12935 
operator VkCommandBufferInheritanceInfo const&VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo12936     explicit operator VkCommandBufferInheritanceInfo const &() const VULKAN_HPP_NOEXCEPT
12937     {
12938       return *reinterpret_cast<const VkCommandBufferInheritanceInfo *>( this );
12939     }
12940 
operator VkCommandBufferInheritanceInfo&VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo12941     explicit operator VkCommandBufferInheritanceInfo &() VULKAN_HPP_NOEXCEPT
12942     {
12943       return *reinterpret_cast<VkCommandBufferInheritanceInfo *>( this );
12944     }
12945 
12946 #if 14 <= VULKAN_HPP_CPP_VERSION
12947     auto
12948 #else
12949     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
12950                const void * const &,
12951                VULKAN_HPP_NAMESPACE::RenderPass const &,
12952                uint32_t const &,
12953                VULKAN_HPP_NAMESPACE::Framebuffer const &,
12954                VULKAN_HPP_NAMESPACE::Bool32 const &,
12955                VULKAN_HPP_NAMESPACE::QueryControlFlags const &,
12956                VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags const &>
12957 #endif
reflectVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo12958       reflect() const VULKAN_HPP_NOEXCEPT
12959     {
12960       return std::tie(
12961         sType, pNext, renderPass, subpass, framebuffer, occlusionQueryEnable, queryFlags, pipelineStatistics );
12962     }
12963 
12964 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
12965     auto operator<=>( CommandBufferInheritanceInfo const & ) const = default;
12966 #else
operator ==VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo12967     bool operator==( CommandBufferInheritanceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
12968     {
12969       return this->reflect() == rhs.reflect();
12970     }
12971 
operator !=VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo12972     bool operator!=( CommandBufferInheritanceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
12973     {
12974       return this->reflect() != rhs.reflect();
12975     }
12976 #endif
12977 
12978   public:
12979     VULKAN_HPP_NAMESPACE::StructureType               sType       = StructureType::eCommandBufferInheritanceInfo;
12980     const void *                                      pNext       = {};
12981     VULKAN_HPP_NAMESPACE::RenderPass                  renderPass  = {};
12982     uint32_t                                          subpass     = {};
12983     VULKAN_HPP_NAMESPACE::Framebuffer                 framebuffer = {};
12984     VULKAN_HPP_NAMESPACE::Bool32                      occlusionQueryEnable = {};
12985     VULKAN_HPP_NAMESPACE::QueryControlFlags           queryFlags           = {};
12986     VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags pipelineStatistics   = {};
12987   };
12988   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo ) ==
12989                               sizeof( VkCommandBufferInheritanceInfo ),
12990                             "struct and wrapper have different size!" );
12991   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo>::value,
12992                             "struct wrapper is not a standard layout!" );
12993   VULKAN_HPP_STATIC_ASSERT(
12994     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo>::value,
12995     "CommandBufferInheritanceInfo is not nothrow_move_constructible!" );
12996 
12997   template <>
12998   struct CppType<StructureType, StructureType::eCommandBufferInheritanceInfo>
12999   {
13000     using Type = CommandBufferInheritanceInfo;
13001   };
13002 
13003   struct CommandBufferBeginInfo
13004   {
13005     using NativeType = VkCommandBufferBeginInfo;
13006 
13007     static const bool                                  allowDuplicate = false;
13008     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCommandBufferBeginInfo;
13009 
13010 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CommandBufferBeginInfoVULKAN_HPP_NAMESPACE::CommandBufferBeginInfo13011     VULKAN_HPP_CONSTEXPR CommandBufferBeginInfo(
13012       VULKAN_HPP_NAMESPACE::CommandBufferUsageFlags              flags_            = {},
13013       const VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo * pInheritanceInfo_ = {} ) VULKAN_HPP_NOEXCEPT
13014       : flags( flags_ )
13015       , pInheritanceInfo( pInheritanceInfo_ )
13016     {}
13017 
13018     VULKAN_HPP_CONSTEXPR CommandBufferBeginInfo( CommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13019 
CommandBufferBeginInfoVULKAN_HPP_NAMESPACE::CommandBufferBeginInfo13020     CommandBufferBeginInfo( VkCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
13021       : CommandBufferBeginInfo( *reinterpret_cast<CommandBufferBeginInfo const *>( &rhs ) )
13022     {}
13023 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
13024 
13025     CommandBufferBeginInfo & operator=( CommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13026 
operator =VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo13027     CommandBufferBeginInfo & operator=( VkCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
13028     {
13029       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo const *>( &rhs );
13030       return *this;
13031     }
13032 
13033 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CommandBufferBeginInfo13034     VULKAN_HPP_CONSTEXPR_14 CommandBufferBeginInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
13035     {
13036       pNext = pNext_;
13037       return *this;
13038     }
13039 
13040     VULKAN_HPP_CONSTEXPR_14 CommandBufferBeginInfo &
setFlagsVULKAN_HPP_NAMESPACE::CommandBufferBeginInfo13041                             setFlags( VULKAN_HPP_NAMESPACE::CommandBufferUsageFlags flags_ ) VULKAN_HPP_NOEXCEPT
13042     {
13043       flags = flags_;
13044       return *this;
13045     }
13046 
setPInheritanceInfoVULKAN_HPP_NAMESPACE::CommandBufferBeginInfo13047     VULKAN_HPP_CONSTEXPR_14 CommandBufferBeginInfo & setPInheritanceInfo(
13048       const VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo * pInheritanceInfo_ ) VULKAN_HPP_NOEXCEPT
13049     {
13050       pInheritanceInfo = pInheritanceInfo_;
13051       return *this;
13052     }
13053 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
13054 
operator VkCommandBufferBeginInfo const&VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo13055     explicit operator VkCommandBufferBeginInfo const &() const VULKAN_HPP_NOEXCEPT
13056     {
13057       return *reinterpret_cast<const VkCommandBufferBeginInfo *>( this );
13058     }
13059 
operator VkCommandBufferBeginInfo&VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo13060     explicit operator VkCommandBufferBeginInfo &() VULKAN_HPP_NOEXCEPT
13061     {
13062       return *reinterpret_cast<VkCommandBufferBeginInfo *>( this );
13063     }
13064 
13065 #if 14 <= VULKAN_HPP_CPP_VERSION
13066     auto
13067 #else
13068     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
13069                const void * const &,
13070                VULKAN_HPP_NAMESPACE::CommandBufferUsageFlags const &,
13071                const VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo * const &>
13072 #endif
reflectVULKAN_HPP_NAMESPACE::CommandBufferBeginInfo13073       reflect() const VULKAN_HPP_NOEXCEPT
13074     {
13075       return std::tie( sType, pNext, flags, pInheritanceInfo );
13076     }
13077 
13078 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
13079     auto operator<=>( CommandBufferBeginInfo const & ) const = default;
13080 #else
operator ==VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo13081     bool operator==( CommandBufferBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
13082     {
13083       return this->reflect() == rhs.reflect();
13084     }
13085 
operator !=VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo13086     bool operator!=( CommandBufferBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
13087     {
13088       return this->reflect() != rhs.reflect();
13089     }
13090 #endif
13091 
13092   public:
13093     VULKAN_HPP_NAMESPACE::StructureType                        sType = StructureType::eCommandBufferBeginInfo;
13094     const void *                                               pNext = {};
13095     VULKAN_HPP_NAMESPACE::CommandBufferUsageFlags              flags = {};
13096     const VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo * pInheritanceInfo = {};
13097   };
13098   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo ) ==
13099                               sizeof( VkCommandBufferBeginInfo ),
13100                             "struct and wrapper have different size!" );
13101   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo>::value,
13102                             "struct wrapper is not a standard layout!" );
13103   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo>::value,
13104                             "CommandBufferBeginInfo is not nothrow_move_constructible!" );
13105 
13106   template <>
13107   struct CppType<StructureType, StructureType::eCommandBufferBeginInfo>
13108   {
13109     using Type = CommandBufferBeginInfo;
13110   };
13111 
13112   struct CommandBufferInheritanceConditionalRenderingInfoEXT
13113   {
13114     using NativeType = VkCommandBufferInheritanceConditionalRenderingInfoEXT;
13115 
13116     static const bool                                  allowDuplicate = false;
13117     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
13118       StructureType::eCommandBufferInheritanceConditionalRenderingInfoEXT;
13119 
13120 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CommandBufferInheritanceConditionalRenderingInfoEXTVULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT13121     VULKAN_HPP_CONSTEXPR CommandBufferInheritanceConditionalRenderingInfoEXT(
13122       VULKAN_HPP_NAMESPACE::Bool32 conditionalRenderingEnable_ = {} ) VULKAN_HPP_NOEXCEPT
13123       : conditionalRenderingEnable( conditionalRenderingEnable_ )
13124     {}
13125 
13126     VULKAN_HPP_CONSTEXPR CommandBufferInheritanceConditionalRenderingInfoEXT(
13127       CommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13128 
CommandBufferInheritanceConditionalRenderingInfoEXTVULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT13129     CommandBufferInheritanceConditionalRenderingInfoEXT(
13130       VkCommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
13131       : CommandBufferInheritanceConditionalRenderingInfoEXT(
13132           *reinterpret_cast<CommandBufferInheritanceConditionalRenderingInfoEXT const *>( &rhs ) )
13133     {}
13134 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
13135 
13136     CommandBufferInheritanceConditionalRenderingInfoEXT &
13137       operator=( CommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13138 
13139     CommandBufferInheritanceConditionalRenderingInfoEXT &
operator =VULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT13140       operator=( VkCommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
13141     {
13142       *this =
13143         *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT const *>( &rhs );
13144       return *this;
13145     }
13146 
13147 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
13148     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceConditionalRenderingInfoEXT &
setPNextVULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT13149                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
13150     {
13151       pNext = pNext_;
13152       return *this;
13153     }
13154 
13155     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceConditionalRenderingInfoEXT &
setConditionalRenderingEnableVULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT13156       setConditionalRenderingEnable( VULKAN_HPP_NAMESPACE::Bool32 conditionalRenderingEnable_ ) VULKAN_HPP_NOEXCEPT
13157     {
13158       conditionalRenderingEnable = conditionalRenderingEnable_;
13159       return *this;
13160     }
13161 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
13162 
operator VkCommandBufferInheritanceConditionalRenderingInfoEXT const&VULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT13163     explicit operator VkCommandBufferInheritanceConditionalRenderingInfoEXT const &() const VULKAN_HPP_NOEXCEPT
13164     {
13165       return *reinterpret_cast<const VkCommandBufferInheritanceConditionalRenderingInfoEXT *>( this );
13166     }
13167 
operator VkCommandBufferInheritanceConditionalRenderingInfoEXT&VULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT13168     explicit operator VkCommandBufferInheritanceConditionalRenderingInfoEXT &() VULKAN_HPP_NOEXCEPT
13169     {
13170       return *reinterpret_cast<VkCommandBufferInheritanceConditionalRenderingInfoEXT *>( this );
13171     }
13172 
13173 #if 14 <= VULKAN_HPP_CPP_VERSION
13174     auto
13175 #else
13176     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
13177 #endif
reflectVULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT13178       reflect() const VULKAN_HPP_NOEXCEPT
13179     {
13180       return std::tie( sType, pNext, conditionalRenderingEnable );
13181     }
13182 
13183 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
13184     auto operator<=>( CommandBufferInheritanceConditionalRenderingInfoEXT const & ) const = default;
13185 #else
operator ==VULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT13186     bool operator==( CommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
13187     {
13188       return this->reflect() == rhs.reflect();
13189     }
13190 
operator !=VULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT13191     bool operator!=( CommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
13192     {
13193       return this->reflect() != rhs.reflect();
13194     }
13195 #endif
13196 
13197   public:
13198     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandBufferInheritanceConditionalRenderingInfoEXT;
13199     const void *                        pNext = {};
13200     VULKAN_HPP_NAMESPACE::Bool32        conditionalRenderingEnable = {};
13201   };
13202   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT ) ==
13203                               sizeof( VkCommandBufferInheritanceConditionalRenderingInfoEXT ),
13204                             "struct and wrapper have different size!" );
13205   VULKAN_HPP_STATIC_ASSERT(
13206     std::is_standard_layout<VULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT>::value,
13207     "struct wrapper is not a standard layout!" );
13208   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<
13209                               VULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT>::value,
13210                             "CommandBufferInheritanceConditionalRenderingInfoEXT is not nothrow_move_constructible!" );
13211 
13212   template <>
13213   struct CppType<StructureType, StructureType::eCommandBufferInheritanceConditionalRenderingInfoEXT>
13214   {
13215     using Type = CommandBufferInheritanceConditionalRenderingInfoEXT;
13216   };
13217 
13218   struct CommandBufferInheritanceRenderPassTransformInfoQCOM
13219   {
13220     using NativeType = VkCommandBufferInheritanceRenderPassTransformInfoQCOM;
13221 
13222     static const bool                                  allowDuplicate = false;
13223     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
13224       StructureType::eCommandBufferInheritanceRenderPassTransformInfoQCOM;
13225 
13226 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CommandBufferInheritanceRenderPassTransformInfoQCOMVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM13227     VULKAN_HPP_CONSTEXPR CommandBufferInheritanceRenderPassTransformInfoQCOM(
13228       VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_ =
13229         VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity,
13230       VULKAN_HPP_NAMESPACE::Rect2D renderArea_ = {} ) VULKAN_HPP_NOEXCEPT
13231       : transform( transform_ )
13232       , renderArea( renderArea_ )
13233     {}
13234 
13235     VULKAN_HPP_CONSTEXPR CommandBufferInheritanceRenderPassTransformInfoQCOM(
13236       CommandBufferInheritanceRenderPassTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13237 
CommandBufferInheritanceRenderPassTransformInfoQCOMVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM13238     CommandBufferInheritanceRenderPassTransformInfoQCOM(
13239       VkCommandBufferInheritanceRenderPassTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
13240       : CommandBufferInheritanceRenderPassTransformInfoQCOM(
13241           *reinterpret_cast<CommandBufferInheritanceRenderPassTransformInfoQCOM const *>( &rhs ) )
13242     {}
13243 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
13244 
13245     CommandBufferInheritanceRenderPassTransformInfoQCOM &
13246       operator=( CommandBufferInheritanceRenderPassTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13247 
13248     CommandBufferInheritanceRenderPassTransformInfoQCOM &
operator =VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM13249       operator=( VkCommandBufferInheritanceRenderPassTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
13250     {
13251       *this =
13252         *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM const *>( &rhs );
13253       return *this;
13254     }
13255 
13256 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
13257     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderPassTransformInfoQCOM &
setPNextVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM13258                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
13259     {
13260       pNext = pNext_;
13261       return *this;
13262     }
13263 
13264     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderPassTransformInfoQCOM &
setTransformVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM13265       setTransform( VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_ ) VULKAN_HPP_NOEXCEPT
13266     {
13267       transform = transform_;
13268       return *this;
13269     }
13270 
13271     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderPassTransformInfoQCOM &
setRenderAreaVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM13272                             setRenderArea( VULKAN_HPP_NAMESPACE::Rect2D const & renderArea_ ) VULKAN_HPP_NOEXCEPT
13273     {
13274       renderArea = renderArea_;
13275       return *this;
13276     }
13277 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
13278 
operator VkCommandBufferInheritanceRenderPassTransformInfoQCOM const&VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM13279     explicit operator VkCommandBufferInheritanceRenderPassTransformInfoQCOM const &() const VULKAN_HPP_NOEXCEPT
13280     {
13281       return *reinterpret_cast<const VkCommandBufferInheritanceRenderPassTransformInfoQCOM *>( this );
13282     }
13283 
operator VkCommandBufferInheritanceRenderPassTransformInfoQCOM&VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM13284     explicit operator VkCommandBufferInheritanceRenderPassTransformInfoQCOM &() VULKAN_HPP_NOEXCEPT
13285     {
13286       return *reinterpret_cast<VkCommandBufferInheritanceRenderPassTransformInfoQCOM *>( this );
13287     }
13288 
13289 #if 14 <= VULKAN_HPP_CPP_VERSION
13290     auto
13291 #else
13292     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
13293                void * const &,
13294                VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR const &,
13295                VULKAN_HPP_NAMESPACE::Rect2D const &>
13296 #endif
reflectVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM13297       reflect() const VULKAN_HPP_NOEXCEPT
13298     {
13299       return std::tie( sType, pNext, transform, renderArea );
13300     }
13301 
13302 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
13303     auto operator<=>( CommandBufferInheritanceRenderPassTransformInfoQCOM const & ) const = default;
13304 #else
operator ==VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM13305     bool operator==( CommandBufferInheritanceRenderPassTransformInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
13306     {
13307       return this->reflect() == rhs.reflect();
13308     }
13309 
operator !=VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM13310     bool operator!=( CommandBufferInheritanceRenderPassTransformInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
13311     {
13312       return this->reflect() != rhs.reflect();
13313     }
13314 #endif
13315 
13316   public:
13317     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandBufferInheritanceRenderPassTransformInfoQCOM;
13318     void *                              pNext = {};
13319     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform =
13320       VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity;
13321     VULKAN_HPP_NAMESPACE::Rect2D renderArea = {};
13322   };
13323   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM ) ==
13324                               sizeof( VkCommandBufferInheritanceRenderPassTransformInfoQCOM ),
13325                             "struct and wrapper have different size!" );
13326   VULKAN_HPP_STATIC_ASSERT(
13327     std::is_standard_layout<VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM>::value,
13328     "struct wrapper is not a standard layout!" );
13329   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<
13330                               VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM>::value,
13331                             "CommandBufferInheritanceRenderPassTransformInfoQCOM is not nothrow_move_constructible!" );
13332 
13333   template <>
13334   struct CppType<StructureType, StructureType::eCommandBufferInheritanceRenderPassTransformInfoQCOM>
13335   {
13336     using Type = CommandBufferInheritanceRenderPassTransformInfoQCOM;
13337   };
13338 
13339   struct CommandBufferInheritanceRenderingInfoKHR
13340   {
13341     using NativeType = VkCommandBufferInheritanceRenderingInfoKHR;
13342 
13343     static const bool                                  allowDuplicate = false;
13344     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
13345       StructureType::eCommandBufferInheritanceRenderingInfoKHR;
13346 
13347 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CommandBufferInheritanceRenderingInfoKHRVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfoKHR13348     VULKAN_HPP_CONSTEXPR CommandBufferInheritanceRenderingInfoKHR(
13349       VULKAN_HPP_NAMESPACE::RenderingFlagsKHR   flags_                   = {},
13350       uint32_t                                  viewMask_                = {},
13351       uint32_t                                  colorAttachmentCount_    = {},
13352       const VULKAN_HPP_NAMESPACE::Format *      pColorAttachmentFormats_ = {},
13353       VULKAN_HPP_NAMESPACE::Format              depthAttachmentFormat_   = VULKAN_HPP_NAMESPACE::Format::eUndefined,
13354       VULKAN_HPP_NAMESPACE::Format              stencilAttachmentFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined,
13355       VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1 )
13356       VULKAN_HPP_NOEXCEPT
13357       : flags( flags_ )
13358       , viewMask( viewMask_ )
13359       , colorAttachmentCount( colorAttachmentCount_ )
13360       , pColorAttachmentFormats( pColorAttachmentFormats_ )
13361       , depthAttachmentFormat( depthAttachmentFormat_ )
13362       , stencilAttachmentFormat( stencilAttachmentFormat_ )
13363       , rasterizationSamples( rasterizationSamples_ )
13364     {}
13365 
13366     VULKAN_HPP_CONSTEXPR CommandBufferInheritanceRenderingInfoKHR(
13367       CommandBufferInheritanceRenderingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13368 
CommandBufferInheritanceRenderingInfoKHRVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfoKHR13369     CommandBufferInheritanceRenderingInfoKHR( VkCommandBufferInheritanceRenderingInfoKHR const & rhs )
13370       VULKAN_HPP_NOEXCEPT
13371       : CommandBufferInheritanceRenderingInfoKHR(
13372           *reinterpret_cast<CommandBufferInheritanceRenderingInfoKHR const *>( &rhs ) )
13373     {}
13374 
13375 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
CommandBufferInheritanceRenderingInfoKHRVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfoKHR13376     CommandBufferInheritanceRenderingInfoKHR(
13377       VULKAN_HPP_NAMESPACE::RenderingFlagsKHR                                                   flags_,
13378       uint32_t                                                                                  viewMask_,
13379       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const & colorAttachmentFormats_,
13380       VULKAN_HPP_NAMESPACE::Format              depthAttachmentFormat_   = VULKAN_HPP_NAMESPACE::Format::eUndefined,
13381       VULKAN_HPP_NAMESPACE::Format              stencilAttachmentFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined,
13382       VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1 )
13383       : flags( flags_ )
13384       , viewMask( viewMask_ )
13385       , colorAttachmentCount( static_cast<uint32_t>( colorAttachmentFormats_.size() ) )
13386       , pColorAttachmentFormats( colorAttachmentFormats_.data() )
13387       , depthAttachmentFormat( depthAttachmentFormat_ )
13388       , stencilAttachmentFormat( stencilAttachmentFormat_ )
13389       , rasterizationSamples( rasterizationSamples_ )
13390     {}
13391 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
13392 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
13393 
13394     CommandBufferInheritanceRenderingInfoKHR &
13395       operator=( CommandBufferInheritanceRenderingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13396 
13397     CommandBufferInheritanceRenderingInfoKHR &
operator =VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfoKHR13398       operator=( VkCommandBufferInheritanceRenderingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
13399     {
13400       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfoKHR const *>( &rhs );
13401       return *this;
13402     }
13403 
13404 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
13405     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfoKHR &
setPNextVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfoKHR13406                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
13407     {
13408       pNext = pNext_;
13409       return *this;
13410     }
13411 
13412     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfoKHR &
setFlagsVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfoKHR13413                             setFlags( VULKAN_HPP_NAMESPACE::RenderingFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
13414     {
13415       flags = flags_;
13416       return *this;
13417     }
13418 
13419     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfoKHR &
setViewMaskVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfoKHR13420                             setViewMask( uint32_t viewMask_ ) VULKAN_HPP_NOEXCEPT
13421     {
13422       viewMask = viewMask_;
13423       return *this;
13424     }
13425 
13426     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfoKHR &
setColorAttachmentCountVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfoKHR13427                             setColorAttachmentCount( uint32_t colorAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
13428     {
13429       colorAttachmentCount = colorAttachmentCount_;
13430       return *this;
13431     }
13432 
13433     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfoKHR &
setPColorAttachmentFormatsVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfoKHR13434       setPColorAttachmentFormats( const VULKAN_HPP_NAMESPACE::Format * pColorAttachmentFormats_ ) VULKAN_HPP_NOEXCEPT
13435     {
13436       pColorAttachmentFormats = pColorAttachmentFormats_;
13437       return *this;
13438     }
13439 
13440 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setColorAttachmentFormatsVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfoKHR13441     CommandBufferInheritanceRenderingInfoKHR & setColorAttachmentFormats(
13442       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const &
13443         colorAttachmentFormats_ ) VULKAN_HPP_NOEXCEPT
13444     {
13445       colorAttachmentCount    = static_cast<uint32_t>( colorAttachmentFormats_.size() );
13446       pColorAttachmentFormats = colorAttachmentFormats_.data();
13447       return *this;
13448     }
13449 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
13450 
13451     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfoKHR &
setDepthAttachmentFormatVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfoKHR13452       setDepthAttachmentFormat( VULKAN_HPP_NAMESPACE::Format depthAttachmentFormat_ ) VULKAN_HPP_NOEXCEPT
13453     {
13454       depthAttachmentFormat = depthAttachmentFormat_;
13455       return *this;
13456     }
13457 
13458     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfoKHR &
setStencilAttachmentFormatVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfoKHR13459       setStencilAttachmentFormat( VULKAN_HPP_NAMESPACE::Format stencilAttachmentFormat_ ) VULKAN_HPP_NOEXCEPT
13460     {
13461       stencilAttachmentFormat = stencilAttachmentFormat_;
13462       return *this;
13463     }
13464 
13465     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfoKHR &
setRasterizationSamplesVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfoKHR13466       setRasterizationSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples_ ) VULKAN_HPP_NOEXCEPT
13467     {
13468       rasterizationSamples = rasterizationSamples_;
13469       return *this;
13470     }
13471 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
13472 
operator VkCommandBufferInheritanceRenderingInfoKHR const&VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfoKHR13473     explicit operator VkCommandBufferInheritanceRenderingInfoKHR const &() const VULKAN_HPP_NOEXCEPT
13474     {
13475       return *reinterpret_cast<const VkCommandBufferInheritanceRenderingInfoKHR *>( this );
13476     }
13477 
operator VkCommandBufferInheritanceRenderingInfoKHR&VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfoKHR13478     explicit operator VkCommandBufferInheritanceRenderingInfoKHR &() VULKAN_HPP_NOEXCEPT
13479     {
13480       return *reinterpret_cast<VkCommandBufferInheritanceRenderingInfoKHR *>( this );
13481     }
13482 
13483 #if 14 <= VULKAN_HPP_CPP_VERSION
13484     auto
13485 #else
13486     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
13487                const void * const &,
13488                VULKAN_HPP_NAMESPACE::RenderingFlagsKHR const &,
13489                uint32_t const &,
13490                uint32_t const &,
13491                const VULKAN_HPP_NAMESPACE::Format * const &,
13492                VULKAN_HPP_NAMESPACE::Format const &,
13493                VULKAN_HPP_NAMESPACE::Format const &,
13494                VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &>
13495 #endif
reflectVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfoKHR13496       reflect() const VULKAN_HPP_NOEXCEPT
13497     {
13498       return std::tie( sType,
13499                        pNext,
13500                        flags,
13501                        viewMask,
13502                        colorAttachmentCount,
13503                        pColorAttachmentFormats,
13504                        depthAttachmentFormat,
13505                        stencilAttachmentFormat,
13506                        rasterizationSamples );
13507     }
13508 
13509 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
13510     auto operator<=>( CommandBufferInheritanceRenderingInfoKHR const & ) const = default;
13511 #else
operator ==VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfoKHR13512     bool operator==( CommandBufferInheritanceRenderingInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
13513     {
13514       return this->reflect() == rhs.reflect();
13515     }
13516 
operator !=VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfoKHR13517     bool operator!=( CommandBufferInheritanceRenderingInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
13518     {
13519       return this->reflect() != rhs.reflect();
13520     }
13521 #endif
13522 
13523   public:
13524     VULKAN_HPP_NAMESPACE::StructureType       sType    = StructureType::eCommandBufferInheritanceRenderingInfoKHR;
13525     const void *                              pNext    = {};
13526     VULKAN_HPP_NAMESPACE::RenderingFlagsKHR   flags    = {};
13527     uint32_t                                  viewMask = {};
13528     uint32_t                                  colorAttachmentCount    = {};
13529     const VULKAN_HPP_NAMESPACE::Format *      pColorAttachmentFormats = {};
13530     VULKAN_HPP_NAMESPACE::Format              depthAttachmentFormat   = VULKAN_HPP_NAMESPACE::Format::eUndefined;
13531     VULKAN_HPP_NAMESPACE::Format              stencilAttachmentFormat = VULKAN_HPP_NAMESPACE::Format::eUndefined;
13532     VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples    = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
13533   };
13534   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfoKHR ) ==
13535                               sizeof( VkCommandBufferInheritanceRenderingInfoKHR ),
13536                             "struct and wrapper have different size!" );
13537   VULKAN_HPP_STATIC_ASSERT(
13538     std::is_standard_layout<VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfoKHR>::value,
13539     "struct wrapper is not a standard layout!" );
13540   VULKAN_HPP_STATIC_ASSERT(
13541     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfoKHR>::value,
13542     "CommandBufferInheritanceRenderingInfoKHR is not nothrow_move_constructible!" );
13543 
13544   template <>
13545   struct CppType<StructureType, StructureType::eCommandBufferInheritanceRenderingInfoKHR>
13546   {
13547     using Type = CommandBufferInheritanceRenderingInfoKHR;
13548   };
13549 
13550   struct Viewport
13551   {
13552     using NativeType = VkViewport;
13553 
13554 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ViewportVULKAN_HPP_NAMESPACE::Viewport13555     VULKAN_HPP_CONSTEXPR Viewport( float x_        = {},
13556                                    float y_        = {},
13557                                    float width_    = {},
13558                                    float height_   = {},
13559                                    float minDepth_ = {},
13560                                    float maxDepth_ = {} ) VULKAN_HPP_NOEXCEPT
13561       : x( x_ )
13562       , y( y_ )
13563       , width( width_ )
13564       , height( height_ )
13565       , minDepth( minDepth_ )
13566       , maxDepth( maxDepth_ )
13567     {}
13568 
13569     VULKAN_HPP_CONSTEXPR Viewport( Viewport const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13570 
ViewportVULKAN_HPP_NAMESPACE::Viewport13571     Viewport( VkViewport const & rhs ) VULKAN_HPP_NOEXCEPT : Viewport( *reinterpret_cast<Viewport const *>( &rhs ) ) {}
13572 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
13573 
13574     Viewport & operator=( Viewport const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13575 
operator =VULKAN_HPP_NAMESPACE::Viewport13576     Viewport & operator=( VkViewport const & rhs ) VULKAN_HPP_NOEXCEPT
13577     {
13578       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Viewport const *>( &rhs );
13579       return *this;
13580     }
13581 
13582 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setXVULKAN_HPP_NAMESPACE::Viewport13583     VULKAN_HPP_CONSTEXPR_14 Viewport & setX( float x_ ) VULKAN_HPP_NOEXCEPT
13584     {
13585       x = x_;
13586       return *this;
13587     }
13588 
setYVULKAN_HPP_NAMESPACE::Viewport13589     VULKAN_HPP_CONSTEXPR_14 Viewport & setY( float y_ ) VULKAN_HPP_NOEXCEPT
13590     {
13591       y = y_;
13592       return *this;
13593     }
13594 
setWidthVULKAN_HPP_NAMESPACE::Viewport13595     VULKAN_HPP_CONSTEXPR_14 Viewport & setWidth( float width_ ) VULKAN_HPP_NOEXCEPT
13596     {
13597       width = width_;
13598       return *this;
13599     }
13600 
setHeightVULKAN_HPP_NAMESPACE::Viewport13601     VULKAN_HPP_CONSTEXPR_14 Viewport & setHeight( float height_ ) VULKAN_HPP_NOEXCEPT
13602     {
13603       height = height_;
13604       return *this;
13605     }
13606 
setMinDepthVULKAN_HPP_NAMESPACE::Viewport13607     VULKAN_HPP_CONSTEXPR_14 Viewport & setMinDepth( float minDepth_ ) VULKAN_HPP_NOEXCEPT
13608     {
13609       minDepth = minDepth_;
13610       return *this;
13611     }
13612 
setMaxDepthVULKAN_HPP_NAMESPACE::Viewport13613     VULKAN_HPP_CONSTEXPR_14 Viewport & setMaxDepth( float maxDepth_ ) VULKAN_HPP_NOEXCEPT
13614     {
13615       maxDepth = maxDepth_;
13616       return *this;
13617     }
13618 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
13619 
operator VkViewport const&VULKAN_HPP_NAMESPACE::Viewport13620     explicit operator VkViewport const &() const VULKAN_HPP_NOEXCEPT
13621     {
13622       return *reinterpret_cast<const VkViewport *>( this );
13623     }
13624 
operator VkViewport&VULKAN_HPP_NAMESPACE::Viewport13625     explicit operator VkViewport &() VULKAN_HPP_NOEXCEPT
13626     {
13627       return *reinterpret_cast<VkViewport *>( this );
13628     }
13629 
13630 #if 14 <= VULKAN_HPP_CPP_VERSION
13631     auto
13632 #else
13633     std::tuple<float const &, float const &, float const &, float const &, float const &, float const &>
13634 #endif
reflectVULKAN_HPP_NAMESPACE::Viewport13635       reflect() const VULKAN_HPP_NOEXCEPT
13636     {
13637       return std::tie( x, y, width, height, minDepth, maxDepth );
13638     }
13639 
13640 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
13641     auto operator<=>( Viewport const & ) const = default;
13642 #else
operator ==VULKAN_HPP_NAMESPACE::Viewport13643     bool operator==( Viewport const & rhs ) const VULKAN_HPP_NOEXCEPT
13644     {
13645       return this->reflect() == rhs.reflect();
13646     }
13647 
operator !=VULKAN_HPP_NAMESPACE::Viewport13648     bool operator!=( Viewport const & rhs ) const VULKAN_HPP_NOEXCEPT
13649     {
13650       return this->reflect() != rhs.reflect();
13651     }
13652 #endif
13653 
13654   public:
13655     float x        = {};
13656     float y        = {};
13657     float width    = {};
13658     float height   = {};
13659     float minDepth = {};
13660     float maxDepth = {};
13661   };
13662   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Viewport ) == sizeof( VkViewport ),
13663                             "struct and wrapper have different size!" );
13664   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::Viewport>::value,
13665                             "struct wrapper is not a standard layout!" );
13666   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::Viewport>::value,
13667                             "Viewport is not nothrow_move_constructible!" );
13668 
13669   struct CommandBufferInheritanceViewportScissorInfoNV
13670   {
13671     using NativeType = VkCommandBufferInheritanceViewportScissorInfoNV;
13672 
13673     static const bool                                  allowDuplicate = false;
13674     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
13675       StructureType::eCommandBufferInheritanceViewportScissorInfoNV;
13676 
13677 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CommandBufferInheritanceViewportScissorInfoNVVULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV13678     VULKAN_HPP_CONSTEXPR CommandBufferInheritanceViewportScissorInfoNV(
13679       VULKAN_HPP_NAMESPACE::Bool32           viewportScissor2D_  = {},
13680       uint32_t                               viewportDepthCount_ = {},
13681       const VULKAN_HPP_NAMESPACE::Viewport * pViewportDepths_    = {} ) VULKAN_HPP_NOEXCEPT
13682       : viewportScissor2D( viewportScissor2D_ )
13683       , viewportDepthCount( viewportDepthCount_ )
13684       , pViewportDepths( pViewportDepths_ )
13685     {}
13686 
13687     VULKAN_HPP_CONSTEXPR CommandBufferInheritanceViewportScissorInfoNV(
13688       CommandBufferInheritanceViewportScissorInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13689 
CommandBufferInheritanceViewportScissorInfoNVVULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV13690     CommandBufferInheritanceViewportScissorInfoNV( VkCommandBufferInheritanceViewportScissorInfoNV const & rhs )
13691       VULKAN_HPP_NOEXCEPT
13692       : CommandBufferInheritanceViewportScissorInfoNV(
13693           *reinterpret_cast<CommandBufferInheritanceViewportScissorInfoNV const *>( &rhs ) )
13694     {}
13695 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
13696 
13697     CommandBufferInheritanceViewportScissorInfoNV &
13698       operator=( CommandBufferInheritanceViewportScissorInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13699 
13700     CommandBufferInheritanceViewportScissorInfoNV &
operator =VULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV13701       operator=( VkCommandBufferInheritanceViewportScissorInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
13702     {
13703       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV const *>( &rhs );
13704       return *this;
13705     }
13706 
13707 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
13708     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceViewportScissorInfoNV &
setPNextVULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV13709                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
13710     {
13711       pNext = pNext_;
13712       return *this;
13713     }
13714 
13715     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceViewportScissorInfoNV &
setViewportScissor2DVULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV13716                             setViewportScissor2D( VULKAN_HPP_NAMESPACE::Bool32 viewportScissor2D_ ) VULKAN_HPP_NOEXCEPT
13717     {
13718       viewportScissor2D = viewportScissor2D_;
13719       return *this;
13720     }
13721 
13722     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceViewportScissorInfoNV &
setViewportDepthCountVULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV13723                             setViewportDepthCount( uint32_t viewportDepthCount_ ) VULKAN_HPP_NOEXCEPT
13724     {
13725       viewportDepthCount = viewportDepthCount_;
13726       return *this;
13727     }
13728 
13729     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceViewportScissorInfoNV &
setPViewportDepthsVULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV13730       setPViewportDepths( const VULKAN_HPP_NAMESPACE::Viewport * pViewportDepths_ ) VULKAN_HPP_NOEXCEPT
13731     {
13732       pViewportDepths = pViewportDepths_;
13733       return *this;
13734     }
13735 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
13736 
operator VkCommandBufferInheritanceViewportScissorInfoNV const&VULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV13737     explicit operator VkCommandBufferInheritanceViewportScissorInfoNV const &() const VULKAN_HPP_NOEXCEPT
13738     {
13739       return *reinterpret_cast<const VkCommandBufferInheritanceViewportScissorInfoNV *>( this );
13740     }
13741 
operator VkCommandBufferInheritanceViewportScissorInfoNV&VULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV13742     explicit operator VkCommandBufferInheritanceViewportScissorInfoNV &() VULKAN_HPP_NOEXCEPT
13743     {
13744       return *reinterpret_cast<VkCommandBufferInheritanceViewportScissorInfoNV *>( this );
13745     }
13746 
13747 #if 14 <= VULKAN_HPP_CPP_VERSION
13748     auto
13749 #else
13750     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
13751                const void * const &,
13752                VULKAN_HPP_NAMESPACE::Bool32 const &,
13753                uint32_t const &,
13754                const VULKAN_HPP_NAMESPACE::Viewport * const &>
13755 #endif
reflectVULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV13756       reflect() const VULKAN_HPP_NOEXCEPT
13757     {
13758       return std::tie( sType, pNext, viewportScissor2D, viewportDepthCount, pViewportDepths );
13759     }
13760 
13761 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
13762     auto operator<=>( CommandBufferInheritanceViewportScissorInfoNV const & ) const = default;
13763 #else
operator ==VULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV13764     bool operator==( CommandBufferInheritanceViewportScissorInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
13765     {
13766       return this->reflect() == rhs.reflect();
13767     }
13768 
operator !=VULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV13769     bool operator!=( CommandBufferInheritanceViewportScissorInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
13770     {
13771       return this->reflect() != rhs.reflect();
13772     }
13773 #endif
13774 
13775   public:
13776     VULKAN_HPP_NAMESPACE::StructureType    sType = StructureType::eCommandBufferInheritanceViewportScissorInfoNV;
13777     const void *                           pNext = {};
13778     VULKAN_HPP_NAMESPACE::Bool32           viewportScissor2D  = {};
13779     uint32_t                               viewportDepthCount = {};
13780     const VULKAN_HPP_NAMESPACE::Viewport * pViewportDepths    = {};
13781   };
13782   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV ) ==
13783                               sizeof( VkCommandBufferInheritanceViewportScissorInfoNV ),
13784                             "struct and wrapper have different size!" );
13785   VULKAN_HPP_STATIC_ASSERT(
13786     std::is_standard_layout<VULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV>::value,
13787     "struct wrapper is not a standard layout!" );
13788   VULKAN_HPP_STATIC_ASSERT(
13789     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV>::value,
13790     "CommandBufferInheritanceViewportScissorInfoNV is not nothrow_move_constructible!" );
13791 
13792   template <>
13793   struct CppType<StructureType, StructureType::eCommandBufferInheritanceViewportScissorInfoNV>
13794   {
13795     using Type = CommandBufferInheritanceViewportScissorInfoNV;
13796   };
13797 
13798   struct CommandBufferSubmitInfoKHR
13799   {
13800     using NativeType = VkCommandBufferSubmitInfoKHR;
13801 
13802     static const bool                                  allowDuplicate = false;
13803     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCommandBufferSubmitInfoKHR;
13804 
13805 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CommandBufferSubmitInfoKHRVULKAN_HPP_NAMESPACE::CommandBufferSubmitInfoKHR13806     VULKAN_HPP_CONSTEXPR CommandBufferSubmitInfoKHR( VULKAN_HPP_NAMESPACE::CommandBuffer commandBuffer_ = {},
13807                                                      uint32_t deviceMask_ = {} ) VULKAN_HPP_NOEXCEPT
13808       : commandBuffer( commandBuffer_ )
13809       , deviceMask( deviceMask_ )
13810     {}
13811 
13812     VULKAN_HPP_CONSTEXPR
13813       CommandBufferSubmitInfoKHR( CommandBufferSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13814 
CommandBufferSubmitInfoKHRVULKAN_HPP_NAMESPACE::CommandBufferSubmitInfoKHR13815     CommandBufferSubmitInfoKHR( VkCommandBufferSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
13816       : CommandBufferSubmitInfoKHR( *reinterpret_cast<CommandBufferSubmitInfoKHR const *>( &rhs ) )
13817     {}
13818 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
13819 
13820     CommandBufferSubmitInfoKHR & operator=( CommandBufferSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13821 
operator =VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfoKHR13822     CommandBufferSubmitInfoKHR & operator=( VkCommandBufferSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
13823     {
13824       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfoKHR const *>( &rhs );
13825       return *this;
13826     }
13827 
13828 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CommandBufferSubmitInfoKHR13829     VULKAN_HPP_CONSTEXPR_14 CommandBufferSubmitInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
13830     {
13831       pNext = pNext_;
13832       return *this;
13833     }
13834 
13835     VULKAN_HPP_CONSTEXPR_14 CommandBufferSubmitInfoKHR &
setCommandBufferVULKAN_HPP_NAMESPACE::CommandBufferSubmitInfoKHR13836                             setCommandBuffer( VULKAN_HPP_NAMESPACE::CommandBuffer commandBuffer_ ) VULKAN_HPP_NOEXCEPT
13837     {
13838       commandBuffer = commandBuffer_;
13839       return *this;
13840     }
13841 
setDeviceMaskVULKAN_HPP_NAMESPACE::CommandBufferSubmitInfoKHR13842     VULKAN_HPP_CONSTEXPR_14 CommandBufferSubmitInfoKHR & setDeviceMask( uint32_t deviceMask_ ) VULKAN_HPP_NOEXCEPT
13843     {
13844       deviceMask = deviceMask_;
13845       return *this;
13846     }
13847 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
13848 
operator VkCommandBufferSubmitInfoKHR const&VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfoKHR13849     explicit operator VkCommandBufferSubmitInfoKHR const &() const VULKAN_HPP_NOEXCEPT
13850     {
13851       return *reinterpret_cast<const VkCommandBufferSubmitInfoKHR *>( this );
13852     }
13853 
operator VkCommandBufferSubmitInfoKHR&VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfoKHR13854     explicit operator VkCommandBufferSubmitInfoKHR &() VULKAN_HPP_NOEXCEPT
13855     {
13856       return *reinterpret_cast<VkCommandBufferSubmitInfoKHR *>( this );
13857     }
13858 
13859 #if 14 <= VULKAN_HPP_CPP_VERSION
13860     auto
13861 #else
13862     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
13863                const void * const &,
13864                VULKAN_HPP_NAMESPACE::CommandBuffer const &,
13865                uint32_t const &>
13866 #endif
reflectVULKAN_HPP_NAMESPACE::CommandBufferSubmitInfoKHR13867       reflect() const VULKAN_HPP_NOEXCEPT
13868     {
13869       return std::tie( sType, pNext, commandBuffer, deviceMask );
13870     }
13871 
13872 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
13873     auto operator<=>( CommandBufferSubmitInfoKHR const & ) const = default;
13874 #else
operator ==VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfoKHR13875     bool operator==( CommandBufferSubmitInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
13876     {
13877       return this->reflect() == rhs.reflect();
13878     }
13879 
operator !=VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfoKHR13880     bool operator!=( CommandBufferSubmitInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
13881     {
13882       return this->reflect() != rhs.reflect();
13883     }
13884 #endif
13885 
13886   public:
13887     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::eCommandBufferSubmitInfoKHR;
13888     const void *                        pNext         = {};
13889     VULKAN_HPP_NAMESPACE::CommandBuffer commandBuffer = {};
13890     uint32_t                            deviceMask    = {};
13891   };
13892   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfoKHR ) ==
13893                               sizeof( VkCommandBufferSubmitInfoKHR ),
13894                             "struct and wrapper have different size!" );
13895   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfoKHR>::value,
13896                             "struct wrapper is not a standard layout!" );
13897   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfoKHR>::value,
13898                             "CommandBufferSubmitInfoKHR is not nothrow_move_constructible!" );
13899 
13900   template <>
13901   struct CppType<StructureType, StructureType::eCommandBufferSubmitInfoKHR>
13902   {
13903     using Type = CommandBufferSubmitInfoKHR;
13904   };
13905 
13906   struct CommandPoolCreateInfo
13907   {
13908     using NativeType = VkCommandPoolCreateInfo;
13909 
13910     static const bool                                  allowDuplicate = false;
13911     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCommandPoolCreateInfo;
13912 
13913 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CommandPoolCreateInfoVULKAN_HPP_NAMESPACE::CommandPoolCreateInfo13914     VULKAN_HPP_CONSTEXPR CommandPoolCreateInfo( VULKAN_HPP_NAMESPACE::CommandPoolCreateFlags flags_ = {},
13915                                                 uint32_t queueFamilyIndex_ = {} ) VULKAN_HPP_NOEXCEPT
13916       : flags( flags_ )
13917       , queueFamilyIndex( queueFamilyIndex_ )
13918     {}
13919 
13920     VULKAN_HPP_CONSTEXPR CommandPoolCreateInfo( CommandPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13921 
CommandPoolCreateInfoVULKAN_HPP_NAMESPACE::CommandPoolCreateInfo13922     CommandPoolCreateInfo( VkCommandPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
13923       : CommandPoolCreateInfo( *reinterpret_cast<CommandPoolCreateInfo const *>( &rhs ) )
13924     {}
13925 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
13926 
13927     CommandPoolCreateInfo & operator=( CommandPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13928 
operator =VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo13929     CommandPoolCreateInfo & operator=( VkCommandPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
13930     {
13931       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo const *>( &rhs );
13932       return *this;
13933     }
13934 
13935 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CommandPoolCreateInfo13936     VULKAN_HPP_CONSTEXPR_14 CommandPoolCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
13937     {
13938       pNext = pNext_;
13939       return *this;
13940     }
13941 
13942     VULKAN_HPP_CONSTEXPR_14 CommandPoolCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::CommandPoolCreateInfo13943                             setFlags( VULKAN_HPP_NAMESPACE::CommandPoolCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
13944     {
13945       flags = flags_;
13946       return *this;
13947     }
13948 
13949     VULKAN_HPP_CONSTEXPR_14 CommandPoolCreateInfo &
setQueueFamilyIndexVULKAN_HPP_NAMESPACE::CommandPoolCreateInfo13950                             setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
13951     {
13952       queueFamilyIndex = queueFamilyIndex_;
13953       return *this;
13954     }
13955 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
13956 
operator VkCommandPoolCreateInfo const&VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo13957     explicit operator VkCommandPoolCreateInfo const &() const VULKAN_HPP_NOEXCEPT
13958     {
13959       return *reinterpret_cast<const VkCommandPoolCreateInfo *>( this );
13960     }
13961 
operator VkCommandPoolCreateInfo&VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo13962     explicit operator VkCommandPoolCreateInfo &() VULKAN_HPP_NOEXCEPT
13963     {
13964       return *reinterpret_cast<VkCommandPoolCreateInfo *>( this );
13965     }
13966 
13967 #if 14 <= VULKAN_HPP_CPP_VERSION
13968     auto
13969 #else
13970     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
13971                const void * const &,
13972                VULKAN_HPP_NAMESPACE::CommandPoolCreateFlags const &,
13973                uint32_t const &>
13974 #endif
reflectVULKAN_HPP_NAMESPACE::CommandPoolCreateInfo13975       reflect() const VULKAN_HPP_NOEXCEPT
13976     {
13977       return std::tie( sType, pNext, flags, queueFamilyIndex );
13978     }
13979 
13980 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
13981     auto operator<=>( CommandPoolCreateInfo const & ) const = default;
13982 #else
operator ==VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo13983     bool operator==( CommandPoolCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
13984     {
13985       return this->reflect() == rhs.reflect();
13986     }
13987 
operator !=VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo13988     bool operator!=( CommandPoolCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
13989     {
13990       return this->reflect() != rhs.reflect();
13991     }
13992 #endif
13993 
13994   public:
13995     VULKAN_HPP_NAMESPACE::StructureType          sType            = StructureType::eCommandPoolCreateInfo;
13996     const void *                                 pNext            = {};
13997     VULKAN_HPP_NAMESPACE::CommandPoolCreateFlags flags            = {};
13998     uint32_t                                     queueFamilyIndex = {};
13999   };
14000   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo ) == sizeof( VkCommandPoolCreateInfo ),
14001                             "struct and wrapper have different size!" );
14002   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo>::value,
14003                             "struct wrapper is not a standard layout!" );
14004   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo>::value,
14005                             "CommandPoolCreateInfo is not nothrow_move_constructible!" );
14006 
14007   template <>
14008   struct CppType<StructureType, StructureType::eCommandPoolCreateInfo>
14009   {
14010     using Type = CommandPoolCreateInfo;
14011   };
14012 
14013   struct SpecializationMapEntry
14014   {
14015     using NativeType = VkSpecializationMapEntry;
14016 
14017 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
14018     VULKAN_HPP_CONSTEXPR
SpecializationMapEntryVULKAN_HPP_NAMESPACE::SpecializationMapEntry14019       SpecializationMapEntry( uint32_t constantID_ = {}, uint32_t offset_ = {}, size_t size_ = {} ) VULKAN_HPP_NOEXCEPT
14020       : constantID( constantID_ )
14021       , offset( offset_ )
14022       , size( size_ )
14023     {}
14024 
14025     VULKAN_HPP_CONSTEXPR SpecializationMapEntry( SpecializationMapEntry const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14026 
SpecializationMapEntryVULKAN_HPP_NAMESPACE::SpecializationMapEntry14027     SpecializationMapEntry( VkSpecializationMapEntry const & rhs ) VULKAN_HPP_NOEXCEPT
14028       : SpecializationMapEntry( *reinterpret_cast<SpecializationMapEntry const *>( &rhs ) )
14029     {}
14030 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
14031 
14032     SpecializationMapEntry & operator=( SpecializationMapEntry const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14033 
operator =VULKAN_HPP_NAMESPACE::SpecializationMapEntry14034     SpecializationMapEntry & operator=( VkSpecializationMapEntry const & rhs ) VULKAN_HPP_NOEXCEPT
14035     {
14036       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SpecializationMapEntry const *>( &rhs );
14037       return *this;
14038     }
14039 
14040 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setConstantIDVULKAN_HPP_NAMESPACE::SpecializationMapEntry14041     VULKAN_HPP_CONSTEXPR_14 SpecializationMapEntry & setConstantID( uint32_t constantID_ ) VULKAN_HPP_NOEXCEPT
14042     {
14043       constantID = constantID_;
14044       return *this;
14045     }
14046 
setOffsetVULKAN_HPP_NAMESPACE::SpecializationMapEntry14047     VULKAN_HPP_CONSTEXPR_14 SpecializationMapEntry & setOffset( uint32_t offset_ ) VULKAN_HPP_NOEXCEPT
14048     {
14049       offset = offset_;
14050       return *this;
14051     }
14052 
setSizeVULKAN_HPP_NAMESPACE::SpecializationMapEntry14053     VULKAN_HPP_CONSTEXPR_14 SpecializationMapEntry & setSize( size_t size_ ) VULKAN_HPP_NOEXCEPT
14054     {
14055       size = size_;
14056       return *this;
14057     }
14058 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
14059 
operator VkSpecializationMapEntry const&VULKAN_HPP_NAMESPACE::SpecializationMapEntry14060     explicit operator VkSpecializationMapEntry const &() const VULKAN_HPP_NOEXCEPT
14061     {
14062       return *reinterpret_cast<const VkSpecializationMapEntry *>( this );
14063     }
14064 
operator VkSpecializationMapEntry&VULKAN_HPP_NAMESPACE::SpecializationMapEntry14065     explicit operator VkSpecializationMapEntry &() VULKAN_HPP_NOEXCEPT
14066     {
14067       return *reinterpret_cast<VkSpecializationMapEntry *>( this );
14068     }
14069 
14070 #if 14 <= VULKAN_HPP_CPP_VERSION
14071     auto
14072 #else
14073     std::tuple<uint32_t const &, uint32_t const &, size_t const &>
14074 #endif
reflectVULKAN_HPP_NAMESPACE::SpecializationMapEntry14075       reflect() const VULKAN_HPP_NOEXCEPT
14076     {
14077       return std::tie( constantID, offset, size );
14078     }
14079 
14080 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
14081     auto operator<=>( SpecializationMapEntry const & ) const = default;
14082 #else
operator ==VULKAN_HPP_NAMESPACE::SpecializationMapEntry14083     bool operator==( SpecializationMapEntry const & rhs ) const VULKAN_HPP_NOEXCEPT
14084     {
14085       return this->reflect() == rhs.reflect();
14086     }
14087 
operator !=VULKAN_HPP_NAMESPACE::SpecializationMapEntry14088     bool operator!=( SpecializationMapEntry const & rhs ) const VULKAN_HPP_NOEXCEPT
14089     {
14090       return this->reflect() != rhs.reflect();
14091     }
14092 #endif
14093 
14094   public:
14095     uint32_t constantID = {};
14096     uint32_t offset     = {};
14097     size_t   size       = {};
14098   };
14099   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SpecializationMapEntry ) ==
14100                               sizeof( VkSpecializationMapEntry ),
14101                             "struct and wrapper have different size!" );
14102   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SpecializationMapEntry>::value,
14103                             "struct wrapper is not a standard layout!" );
14104   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SpecializationMapEntry>::value,
14105                             "SpecializationMapEntry is not nothrow_move_constructible!" );
14106 
14107   struct SpecializationInfo
14108   {
14109     using NativeType = VkSpecializationInfo;
14110 
14111 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SpecializationInfoVULKAN_HPP_NAMESPACE::SpecializationInfo14112     VULKAN_HPP_CONSTEXPR SpecializationInfo( uint32_t                                             mapEntryCount_ = {},
14113                                              const VULKAN_HPP_NAMESPACE::SpecializationMapEntry * pMapEntries_   = {},
14114                                              size_t                                               dataSize_      = {},
14115                                              const void * pData_ = {} ) VULKAN_HPP_NOEXCEPT
14116       : mapEntryCount( mapEntryCount_ )
14117       , pMapEntries( pMapEntries_ )
14118       , dataSize( dataSize_ )
14119       , pData( pData_ )
14120     {}
14121 
14122     VULKAN_HPP_CONSTEXPR SpecializationInfo( SpecializationInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14123 
SpecializationInfoVULKAN_HPP_NAMESPACE::SpecializationInfo14124     SpecializationInfo( VkSpecializationInfo const & rhs ) VULKAN_HPP_NOEXCEPT
14125       : SpecializationInfo( *reinterpret_cast<SpecializationInfo const *>( &rhs ) )
14126     {}
14127 
14128 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
14129     template <typename T>
SpecializationInfoVULKAN_HPP_NAMESPACE::SpecializationInfo14130     SpecializationInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<
14131                           const VULKAN_HPP_NAMESPACE::SpecializationMapEntry> const &  mapEntries_,
14132                         VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & data_ = {} )
14133       : mapEntryCount( static_cast<uint32_t>( mapEntries_.size() ) )
14134       , pMapEntries( mapEntries_.data() )
14135       , dataSize( data_.size() * sizeof( T ) )
14136       , pData( data_.data() )
14137     {}
14138 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
14139 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
14140 
14141     SpecializationInfo & operator=( SpecializationInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14142 
operator =VULKAN_HPP_NAMESPACE::SpecializationInfo14143     SpecializationInfo & operator=( VkSpecializationInfo const & rhs ) VULKAN_HPP_NOEXCEPT
14144     {
14145       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SpecializationInfo const *>( &rhs );
14146       return *this;
14147     }
14148 
14149 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setMapEntryCountVULKAN_HPP_NAMESPACE::SpecializationInfo14150     VULKAN_HPP_CONSTEXPR_14 SpecializationInfo & setMapEntryCount( uint32_t mapEntryCount_ ) VULKAN_HPP_NOEXCEPT
14151     {
14152       mapEntryCount = mapEntryCount_;
14153       return *this;
14154     }
14155 
14156     VULKAN_HPP_CONSTEXPR_14 SpecializationInfo &
setPMapEntriesVULKAN_HPP_NAMESPACE::SpecializationInfo14157       setPMapEntries( const VULKAN_HPP_NAMESPACE::SpecializationMapEntry * pMapEntries_ ) VULKAN_HPP_NOEXCEPT
14158     {
14159       pMapEntries = pMapEntries_;
14160       return *this;
14161     }
14162 
14163 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setMapEntriesVULKAN_HPP_NAMESPACE::SpecializationInfo14164     SpecializationInfo & setMapEntries(
14165       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SpecializationMapEntry> const &
14166         mapEntries_ ) VULKAN_HPP_NOEXCEPT
14167     {
14168       mapEntryCount = static_cast<uint32_t>( mapEntries_.size() );
14169       pMapEntries   = mapEntries_.data();
14170       return *this;
14171     }
14172 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
14173 
setDataSizeVULKAN_HPP_NAMESPACE::SpecializationInfo14174     VULKAN_HPP_CONSTEXPR_14 SpecializationInfo & setDataSize( size_t dataSize_ ) VULKAN_HPP_NOEXCEPT
14175     {
14176       dataSize = dataSize_;
14177       return *this;
14178     }
14179 
setPDataVULKAN_HPP_NAMESPACE::SpecializationInfo14180     VULKAN_HPP_CONSTEXPR_14 SpecializationInfo & setPData( const void * pData_ ) VULKAN_HPP_NOEXCEPT
14181     {
14182       pData = pData_;
14183       return *this;
14184     }
14185 
14186 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
14187     template <typename T>
14188     SpecializationInfo &
setDataVULKAN_HPP_NAMESPACE::SpecializationInfo14189       setData( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & data_ ) VULKAN_HPP_NOEXCEPT
14190     {
14191       dataSize = data_.size() * sizeof( T );
14192       pData    = data_.data();
14193       return *this;
14194     }
14195 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
14196 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
14197 
operator VkSpecializationInfo const&VULKAN_HPP_NAMESPACE::SpecializationInfo14198     explicit operator VkSpecializationInfo const &() const VULKAN_HPP_NOEXCEPT
14199     {
14200       return *reinterpret_cast<const VkSpecializationInfo *>( this );
14201     }
14202 
operator VkSpecializationInfo&VULKAN_HPP_NAMESPACE::SpecializationInfo14203     explicit operator VkSpecializationInfo &() VULKAN_HPP_NOEXCEPT
14204     {
14205       return *reinterpret_cast<VkSpecializationInfo *>( this );
14206     }
14207 
14208 #if 14 <= VULKAN_HPP_CPP_VERSION
14209     auto
14210 #else
14211     std::tuple<uint32_t const &,
14212                const VULKAN_HPP_NAMESPACE::SpecializationMapEntry * const &,
14213                size_t const &,
14214                const void * const &>
14215 #endif
reflectVULKAN_HPP_NAMESPACE::SpecializationInfo14216       reflect() const VULKAN_HPP_NOEXCEPT
14217     {
14218       return std::tie( mapEntryCount, pMapEntries, dataSize, pData );
14219     }
14220 
14221 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
14222     auto operator<=>( SpecializationInfo const & ) const = default;
14223 #else
operator ==VULKAN_HPP_NAMESPACE::SpecializationInfo14224     bool operator==( SpecializationInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
14225     {
14226       return this->reflect() == rhs.reflect();
14227     }
14228 
operator !=VULKAN_HPP_NAMESPACE::SpecializationInfo14229     bool operator!=( SpecializationInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
14230     {
14231       return this->reflect() != rhs.reflect();
14232     }
14233 #endif
14234 
14235   public:
14236     uint32_t                                             mapEntryCount = {};
14237     const VULKAN_HPP_NAMESPACE::SpecializationMapEntry * pMapEntries   = {};
14238     size_t                                               dataSize      = {};
14239     const void *                                         pData         = {};
14240   };
14241   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SpecializationInfo ) == sizeof( VkSpecializationInfo ),
14242                             "struct and wrapper have different size!" );
14243   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SpecializationInfo>::value,
14244                             "struct wrapper is not a standard layout!" );
14245   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SpecializationInfo>::value,
14246                             "SpecializationInfo is not nothrow_move_constructible!" );
14247 
14248   struct PipelineShaderStageCreateInfo
14249   {
14250     using NativeType = VkPipelineShaderStageCreateInfo;
14251 
14252     static const bool                                  allowDuplicate = false;
14253     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineShaderStageCreateInfo;
14254 
14255 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineShaderStageCreateInfoVULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo14256     VULKAN_HPP_CONSTEXPR PipelineShaderStageCreateInfo(
14257       VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateFlags flags_  = {},
14258       VULKAN_HPP_NAMESPACE::ShaderStageFlagBits            stage_  = VULKAN_HPP_NAMESPACE::ShaderStageFlagBits::eVertex,
14259       VULKAN_HPP_NAMESPACE::ShaderModule                   module_ = {},
14260       const char *                                         pName_  = {},
14261       const VULKAN_HPP_NAMESPACE::SpecializationInfo *     pSpecializationInfo_ = {} ) VULKAN_HPP_NOEXCEPT
14262       : flags( flags_ )
14263       , stage( stage_ )
14264       , module( module_ )
14265       , pName( pName_ )
14266       , pSpecializationInfo( pSpecializationInfo_ )
14267     {}
14268 
14269     VULKAN_HPP_CONSTEXPR
14270       PipelineShaderStageCreateInfo( PipelineShaderStageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14271 
PipelineShaderStageCreateInfoVULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo14272     PipelineShaderStageCreateInfo( VkPipelineShaderStageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
14273       : PipelineShaderStageCreateInfo( *reinterpret_cast<PipelineShaderStageCreateInfo const *>( &rhs ) )
14274     {}
14275 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
14276 
14277     PipelineShaderStageCreateInfo &
14278       operator=( PipelineShaderStageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14279 
operator =VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo14280     PipelineShaderStageCreateInfo & operator=( VkPipelineShaderStageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
14281     {
14282       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo const *>( &rhs );
14283       return *this;
14284     }
14285 
14286 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo14287     VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
14288     {
14289       pNext = pNext_;
14290       return *this;
14291     }
14292 
14293     VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo14294                             setFlags( VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
14295     {
14296       flags = flags_;
14297       return *this;
14298     }
14299 
14300     VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo &
setStageVULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo14301                             setStage( VULKAN_HPP_NAMESPACE::ShaderStageFlagBits stage_ ) VULKAN_HPP_NOEXCEPT
14302     {
14303       stage = stage_;
14304       return *this;
14305     }
14306 
14307     VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo &
setModuleVULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo14308                             setModule( VULKAN_HPP_NAMESPACE::ShaderModule module_ ) VULKAN_HPP_NOEXCEPT
14309     {
14310       module = module_;
14311       return *this;
14312     }
14313 
setPNameVULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo14314     VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo & setPName( const char * pName_ ) VULKAN_HPP_NOEXCEPT
14315     {
14316       pName = pName_;
14317       return *this;
14318     }
14319 
setPSpecializationInfoVULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo14320     VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo & setPSpecializationInfo(
14321       const VULKAN_HPP_NAMESPACE::SpecializationInfo * pSpecializationInfo_ ) VULKAN_HPP_NOEXCEPT
14322     {
14323       pSpecializationInfo = pSpecializationInfo_;
14324       return *this;
14325     }
14326 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
14327 
operator VkPipelineShaderStageCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo14328     explicit operator VkPipelineShaderStageCreateInfo const &() const VULKAN_HPP_NOEXCEPT
14329     {
14330       return *reinterpret_cast<const VkPipelineShaderStageCreateInfo *>( this );
14331     }
14332 
operator VkPipelineShaderStageCreateInfo&VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo14333     explicit operator VkPipelineShaderStageCreateInfo &() VULKAN_HPP_NOEXCEPT
14334     {
14335       return *reinterpret_cast<VkPipelineShaderStageCreateInfo *>( this );
14336     }
14337 
14338 #if 14 <= VULKAN_HPP_CPP_VERSION
14339     auto
14340 #else
14341     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
14342                const void * const &,
14343                VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateFlags const &,
14344                VULKAN_HPP_NAMESPACE::ShaderStageFlagBits const &,
14345                VULKAN_HPP_NAMESPACE::ShaderModule const &,
14346                const char * const &,
14347                const VULKAN_HPP_NAMESPACE::SpecializationInfo * const &>
14348 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo14349       reflect() const VULKAN_HPP_NOEXCEPT
14350     {
14351       return std::tie( sType, pNext, flags, stage, module, pName, pSpecializationInfo );
14352     }
14353 
14354 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
14355     auto operator<=>( PipelineShaderStageCreateInfo const & ) const = default;
14356 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo14357     bool operator==( PipelineShaderStageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
14358     {
14359       return this->reflect() == rhs.reflect();
14360     }
14361 
operator !=VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo14362     bool operator!=( PipelineShaderStageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
14363     {
14364       return this->reflect() != rhs.reflect();
14365     }
14366 #endif
14367 
14368   public:
14369     VULKAN_HPP_NAMESPACE::StructureType                  sType  = StructureType::ePipelineShaderStageCreateInfo;
14370     const void *                                         pNext  = {};
14371     VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateFlags flags  = {};
14372     VULKAN_HPP_NAMESPACE::ShaderStageFlagBits            stage  = VULKAN_HPP_NAMESPACE::ShaderStageFlagBits::eVertex;
14373     VULKAN_HPP_NAMESPACE::ShaderModule                   module = {};
14374     const char *                                         pName  = {};
14375     const VULKAN_HPP_NAMESPACE::SpecializationInfo *     pSpecializationInfo = {};
14376   };
14377   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo ) ==
14378                               sizeof( VkPipelineShaderStageCreateInfo ),
14379                             "struct and wrapper have different size!" );
14380   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo>::value,
14381                             "struct wrapper is not a standard layout!" );
14382   VULKAN_HPP_STATIC_ASSERT(
14383     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo>::value,
14384     "PipelineShaderStageCreateInfo is not nothrow_move_constructible!" );
14385 
14386   template <>
14387   struct CppType<StructureType, StructureType::ePipelineShaderStageCreateInfo>
14388   {
14389     using Type = PipelineShaderStageCreateInfo;
14390   };
14391 
14392   struct ComputePipelineCreateInfo
14393   {
14394     using NativeType = VkComputePipelineCreateInfo;
14395 
14396     static const bool                                  allowDuplicate = false;
14397     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eComputePipelineCreateInfo;
14398 
14399 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ComputePipelineCreateInfoVULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo14400     VULKAN_HPP_CONSTEXPR ComputePipelineCreateInfo( VULKAN_HPP_NAMESPACE::PipelineCreateFlags           flags_  = {},
14401                                                     VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo stage_  = {},
14402                                                     VULKAN_HPP_NAMESPACE::PipelineLayout                layout_ = {},
14403                                                     VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_          = {},
14404                                                     int32_t basePipelineIndex_ = {} ) VULKAN_HPP_NOEXCEPT
14405       : flags( flags_ )
14406       , stage( stage_ )
14407       , layout( layout_ )
14408       , basePipelineHandle( basePipelineHandle_ )
14409       , basePipelineIndex( basePipelineIndex_ )
14410     {}
14411 
14412     VULKAN_HPP_CONSTEXPR
14413       ComputePipelineCreateInfo( ComputePipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14414 
ComputePipelineCreateInfoVULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo14415     ComputePipelineCreateInfo( VkComputePipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
14416       : ComputePipelineCreateInfo( *reinterpret_cast<ComputePipelineCreateInfo const *>( &rhs ) )
14417     {}
14418 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
14419 
14420     ComputePipelineCreateInfo & operator=( ComputePipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14421 
operator =VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo14422     ComputePipelineCreateInfo & operator=( VkComputePipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
14423     {
14424       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo const *>( &rhs );
14425       return *this;
14426     }
14427 
14428 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo14429     VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
14430     {
14431       pNext = pNext_;
14432       return *this;
14433     }
14434 
14435     VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo14436                             setFlags( VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
14437     {
14438       flags = flags_;
14439       return *this;
14440     }
14441 
14442     VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo &
setStageVULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo14443       setStage( VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo const & stage_ ) VULKAN_HPP_NOEXCEPT
14444     {
14445       stage = stage_;
14446       return *this;
14447     }
14448 
14449     VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo &
setLayoutVULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo14450                             setLayout( VULKAN_HPP_NAMESPACE::PipelineLayout layout_ ) VULKAN_HPP_NOEXCEPT
14451     {
14452       layout = layout_;
14453       return *this;
14454     }
14455 
14456     VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo &
setBasePipelineHandleVULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo14457       setBasePipelineHandle( VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ ) VULKAN_HPP_NOEXCEPT
14458     {
14459       basePipelineHandle = basePipelineHandle_;
14460       return *this;
14461     }
14462 
14463     VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo &
setBasePipelineIndexVULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo14464                             setBasePipelineIndex( int32_t basePipelineIndex_ ) VULKAN_HPP_NOEXCEPT
14465     {
14466       basePipelineIndex = basePipelineIndex_;
14467       return *this;
14468     }
14469 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
14470 
operator VkComputePipelineCreateInfo const&VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo14471     explicit operator VkComputePipelineCreateInfo const &() const VULKAN_HPP_NOEXCEPT
14472     {
14473       return *reinterpret_cast<const VkComputePipelineCreateInfo *>( this );
14474     }
14475 
operator VkComputePipelineCreateInfo&VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo14476     explicit operator VkComputePipelineCreateInfo &() VULKAN_HPP_NOEXCEPT
14477     {
14478       return *reinterpret_cast<VkComputePipelineCreateInfo *>( this );
14479     }
14480 
14481 #if 14 <= VULKAN_HPP_CPP_VERSION
14482     auto
14483 #else
14484     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
14485                const void * const &,
14486                VULKAN_HPP_NAMESPACE::PipelineCreateFlags const &,
14487                VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo const &,
14488                VULKAN_HPP_NAMESPACE::PipelineLayout const &,
14489                VULKAN_HPP_NAMESPACE::Pipeline const &,
14490                int32_t const &>
14491 #endif
reflectVULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo14492       reflect() const VULKAN_HPP_NOEXCEPT
14493     {
14494       return std::tie( sType, pNext, flags, stage, layout, basePipelineHandle, basePipelineIndex );
14495     }
14496 
14497 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
14498     auto operator<=>( ComputePipelineCreateInfo const & ) const = default;
14499 #else
operator ==VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo14500     bool operator==( ComputePipelineCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
14501     {
14502       return this->reflect() == rhs.reflect();
14503     }
14504 
operator !=VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo14505     bool operator!=( ComputePipelineCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
14506     {
14507       return this->reflect() != rhs.reflect();
14508     }
14509 #endif
14510 
14511   public:
14512     VULKAN_HPP_NAMESPACE::StructureType                 sType              = StructureType::eComputePipelineCreateInfo;
14513     const void *                                        pNext              = {};
14514     VULKAN_HPP_NAMESPACE::PipelineCreateFlags           flags              = {};
14515     VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo stage              = {};
14516     VULKAN_HPP_NAMESPACE::PipelineLayout                layout             = {};
14517     VULKAN_HPP_NAMESPACE::Pipeline                      basePipelineHandle = {};
14518     int32_t                                             basePipelineIndex  = {};
14519   };
14520   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo ) ==
14521                               sizeof( VkComputePipelineCreateInfo ),
14522                             "struct and wrapper have different size!" );
14523   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo>::value,
14524                             "struct wrapper is not a standard layout!" );
14525   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo>::value,
14526                             "ComputePipelineCreateInfo is not nothrow_move_constructible!" );
14527 
14528   template <>
14529   struct CppType<StructureType, StructureType::eComputePipelineCreateInfo>
14530   {
14531     using Type = ComputePipelineCreateInfo;
14532   };
14533 
14534   struct ConditionalRenderingBeginInfoEXT
14535   {
14536     using NativeType = VkConditionalRenderingBeginInfoEXT;
14537 
14538     static const bool                                  allowDuplicate = false;
14539     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eConditionalRenderingBeginInfoEXT;
14540 
14541 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ConditionalRenderingBeginInfoEXTVULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT14542     VULKAN_HPP_CONSTEXPR ConditionalRenderingBeginInfoEXT(
14543       VULKAN_HPP_NAMESPACE::Buffer                       buffer_ = {},
14544       VULKAN_HPP_NAMESPACE::DeviceSize                   offset_ = {},
14545       VULKAN_HPP_NAMESPACE::ConditionalRenderingFlagsEXT flags_  = {} ) VULKAN_HPP_NOEXCEPT
14546       : buffer( buffer_ )
14547       , offset( offset_ )
14548       , flags( flags_ )
14549     {}
14550 
14551     VULKAN_HPP_CONSTEXPR
14552       ConditionalRenderingBeginInfoEXT( ConditionalRenderingBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14553 
ConditionalRenderingBeginInfoEXTVULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT14554     ConditionalRenderingBeginInfoEXT( VkConditionalRenderingBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
14555       : ConditionalRenderingBeginInfoEXT( *reinterpret_cast<ConditionalRenderingBeginInfoEXT const *>( &rhs ) )
14556     {}
14557 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
14558 
14559     ConditionalRenderingBeginInfoEXT &
14560       operator=( ConditionalRenderingBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14561 
operator =VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT14562     ConditionalRenderingBeginInfoEXT & operator=( VkConditionalRenderingBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
14563     {
14564       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT const *>( &rhs );
14565       return *this;
14566     }
14567 
14568 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT14569     VULKAN_HPP_CONSTEXPR_14 ConditionalRenderingBeginInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
14570     {
14571       pNext = pNext_;
14572       return *this;
14573     }
14574 
14575     VULKAN_HPP_CONSTEXPR_14 ConditionalRenderingBeginInfoEXT &
setBufferVULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT14576                             setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
14577     {
14578       buffer = buffer_;
14579       return *this;
14580     }
14581 
14582     VULKAN_HPP_CONSTEXPR_14 ConditionalRenderingBeginInfoEXT &
setOffsetVULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT14583                             setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
14584     {
14585       offset = offset_;
14586       return *this;
14587     }
14588 
14589     VULKAN_HPP_CONSTEXPR_14 ConditionalRenderingBeginInfoEXT &
setFlagsVULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT14590                             setFlags( VULKAN_HPP_NAMESPACE::ConditionalRenderingFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
14591     {
14592       flags = flags_;
14593       return *this;
14594     }
14595 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
14596 
operator VkConditionalRenderingBeginInfoEXT const&VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT14597     explicit operator VkConditionalRenderingBeginInfoEXT const &() const VULKAN_HPP_NOEXCEPT
14598     {
14599       return *reinterpret_cast<const VkConditionalRenderingBeginInfoEXT *>( this );
14600     }
14601 
operator VkConditionalRenderingBeginInfoEXT&VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT14602     explicit operator VkConditionalRenderingBeginInfoEXT &() VULKAN_HPP_NOEXCEPT
14603     {
14604       return *reinterpret_cast<VkConditionalRenderingBeginInfoEXT *>( this );
14605     }
14606 
14607 #if 14 <= VULKAN_HPP_CPP_VERSION
14608     auto
14609 #else
14610     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
14611                const void * const &,
14612                VULKAN_HPP_NAMESPACE::Buffer const &,
14613                VULKAN_HPP_NAMESPACE::DeviceSize const &,
14614                VULKAN_HPP_NAMESPACE::ConditionalRenderingFlagsEXT const &>
14615 #endif
reflectVULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT14616       reflect() const VULKAN_HPP_NOEXCEPT
14617     {
14618       return std::tie( sType, pNext, buffer, offset, flags );
14619     }
14620 
14621 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
14622     auto operator<=>( ConditionalRenderingBeginInfoEXT const & ) const = default;
14623 #else
operator ==VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT14624     bool operator==( ConditionalRenderingBeginInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
14625     {
14626       return this->reflect() == rhs.reflect();
14627     }
14628 
operator !=VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT14629     bool operator!=( ConditionalRenderingBeginInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
14630     {
14631       return this->reflect() != rhs.reflect();
14632     }
14633 #endif
14634 
14635   public:
14636     VULKAN_HPP_NAMESPACE::StructureType                sType  = StructureType::eConditionalRenderingBeginInfoEXT;
14637     const void *                                       pNext  = {};
14638     VULKAN_HPP_NAMESPACE::Buffer                       buffer = {};
14639     VULKAN_HPP_NAMESPACE::DeviceSize                   offset = {};
14640     VULKAN_HPP_NAMESPACE::ConditionalRenderingFlagsEXT flags  = {};
14641   };
14642   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT ) ==
14643                               sizeof( VkConditionalRenderingBeginInfoEXT ),
14644                             "struct and wrapper have different size!" );
14645   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT>::value,
14646                             "struct wrapper is not a standard layout!" );
14647   VULKAN_HPP_STATIC_ASSERT(
14648     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT>::value,
14649     "ConditionalRenderingBeginInfoEXT is not nothrow_move_constructible!" );
14650 
14651   template <>
14652   struct CppType<StructureType, StructureType::eConditionalRenderingBeginInfoEXT>
14653   {
14654     using Type = ConditionalRenderingBeginInfoEXT;
14655   };
14656 
14657   struct ConformanceVersion
14658   {
14659     using NativeType = VkConformanceVersion;
14660 
14661 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ConformanceVersionVULKAN_HPP_NAMESPACE::ConformanceVersion14662     VULKAN_HPP_CONSTEXPR ConformanceVersion( uint8_t major_    = {},
14663                                              uint8_t minor_    = {},
14664                                              uint8_t subminor_ = {},
14665                                              uint8_t patch_    = {} ) VULKAN_HPP_NOEXCEPT
14666       : major( major_ )
14667       , minor( minor_ )
14668       , subminor( subminor_ )
14669       , patch( patch_ )
14670     {}
14671 
14672     VULKAN_HPP_CONSTEXPR ConformanceVersion( ConformanceVersion const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14673 
ConformanceVersionVULKAN_HPP_NAMESPACE::ConformanceVersion14674     ConformanceVersion( VkConformanceVersion const & rhs ) VULKAN_HPP_NOEXCEPT
14675       : ConformanceVersion( *reinterpret_cast<ConformanceVersion const *>( &rhs ) )
14676     {}
14677 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
14678 
14679     ConformanceVersion & operator=( ConformanceVersion const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14680 
operator =VULKAN_HPP_NAMESPACE::ConformanceVersion14681     ConformanceVersion & operator=( VkConformanceVersion const & rhs ) VULKAN_HPP_NOEXCEPT
14682     {
14683       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ConformanceVersion const *>( &rhs );
14684       return *this;
14685     }
14686 
14687 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setMajorVULKAN_HPP_NAMESPACE::ConformanceVersion14688     VULKAN_HPP_CONSTEXPR_14 ConformanceVersion & setMajor( uint8_t major_ ) VULKAN_HPP_NOEXCEPT
14689     {
14690       major = major_;
14691       return *this;
14692     }
14693 
setMinorVULKAN_HPP_NAMESPACE::ConformanceVersion14694     VULKAN_HPP_CONSTEXPR_14 ConformanceVersion & setMinor( uint8_t minor_ ) VULKAN_HPP_NOEXCEPT
14695     {
14696       minor = minor_;
14697       return *this;
14698     }
14699 
setSubminorVULKAN_HPP_NAMESPACE::ConformanceVersion14700     VULKAN_HPP_CONSTEXPR_14 ConformanceVersion & setSubminor( uint8_t subminor_ ) VULKAN_HPP_NOEXCEPT
14701     {
14702       subminor = subminor_;
14703       return *this;
14704     }
14705 
setPatchVULKAN_HPP_NAMESPACE::ConformanceVersion14706     VULKAN_HPP_CONSTEXPR_14 ConformanceVersion & setPatch( uint8_t patch_ ) VULKAN_HPP_NOEXCEPT
14707     {
14708       patch = patch_;
14709       return *this;
14710     }
14711 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
14712 
operator VkConformanceVersion const&VULKAN_HPP_NAMESPACE::ConformanceVersion14713     explicit operator VkConformanceVersion const &() const VULKAN_HPP_NOEXCEPT
14714     {
14715       return *reinterpret_cast<const VkConformanceVersion *>( this );
14716     }
14717 
operator VkConformanceVersion&VULKAN_HPP_NAMESPACE::ConformanceVersion14718     explicit operator VkConformanceVersion &() VULKAN_HPP_NOEXCEPT
14719     {
14720       return *reinterpret_cast<VkConformanceVersion *>( this );
14721     }
14722 
14723 #if 14 <= VULKAN_HPP_CPP_VERSION
14724     auto
14725 #else
14726     std::tuple<uint8_t const &, uint8_t const &, uint8_t const &, uint8_t const &>
14727 #endif
reflectVULKAN_HPP_NAMESPACE::ConformanceVersion14728       reflect() const VULKAN_HPP_NOEXCEPT
14729     {
14730       return std::tie( major, minor, subminor, patch );
14731     }
14732 
14733 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
14734     auto operator<=>( ConformanceVersion const & ) const = default;
14735 #else
operator ==VULKAN_HPP_NAMESPACE::ConformanceVersion14736     bool operator==( ConformanceVersion const & rhs ) const VULKAN_HPP_NOEXCEPT
14737     {
14738       return this->reflect() == rhs.reflect();
14739     }
14740 
operator !=VULKAN_HPP_NAMESPACE::ConformanceVersion14741     bool operator!=( ConformanceVersion const & rhs ) const VULKAN_HPP_NOEXCEPT
14742     {
14743       return this->reflect() != rhs.reflect();
14744     }
14745 #endif
14746 
14747   public:
14748     uint8_t major    = {};
14749     uint8_t minor    = {};
14750     uint8_t subminor = {};
14751     uint8_t patch    = {};
14752   };
14753   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ConformanceVersion ) == sizeof( VkConformanceVersion ),
14754                             "struct and wrapper have different size!" );
14755   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ConformanceVersion>::value,
14756                             "struct wrapper is not a standard layout!" );
14757   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ConformanceVersion>::value,
14758                             "ConformanceVersion is not nothrow_move_constructible!" );
14759   using ConformanceVersionKHR = ConformanceVersion;
14760 
14761   struct CooperativeMatrixPropertiesNV
14762   {
14763     using NativeType = VkCooperativeMatrixPropertiesNV;
14764 
14765     static const bool                                  allowDuplicate = false;
14766     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCooperativeMatrixPropertiesNV;
14767 
14768 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CooperativeMatrixPropertiesNVVULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV14769     VULKAN_HPP_CONSTEXPR CooperativeMatrixPropertiesNV(
14770       uint32_t                              MSize_ = {},
14771       uint32_t                              NSize_ = {},
14772       uint32_t                              KSize_ = {},
14773       VULKAN_HPP_NAMESPACE::ComponentTypeNV AType_ = VULKAN_HPP_NAMESPACE::ComponentTypeNV::eFloat16,
14774       VULKAN_HPP_NAMESPACE::ComponentTypeNV BType_ = VULKAN_HPP_NAMESPACE::ComponentTypeNV::eFloat16,
14775       VULKAN_HPP_NAMESPACE::ComponentTypeNV CType_ = VULKAN_HPP_NAMESPACE::ComponentTypeNV::eFloat16,
14776       VULKAN_HPP_NAMESPACE::ComponentTypeNV DType_ = VULKAN_HPP_NAMESPACE::ComponentTypeNV::eFloat16,
14777       VULKAN_HPP_NAMESPACE::ScopeNV         scope_ = VULKAN_HPP_NAMESPACE::ScopeNV::eDevice ) VULKAN_HPP_NOEXCEPT
14778       : MSize( MSize_ )
14779       , NSize( NSize_ )
14780       , KSize( KSize_ )
14781       , AType( AType_ )
14782       , BType( BType_ )
14783       , CType( CType_ )
14784       , DType( DType_ )
14785       , scope( scope_ )
14786     {}
14787 
14788     VULKAN_HPP_CONSTEXPR
14789       CooperativeMatrixPropertiesNV( CooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14790 
CooperativeMatrixPropertiesNVVULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV14791     CooperativeMatrixPropertiesNV( VkCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
14792       : CooperativeMatrixPropertiesNV( *reinterpret_cast<CooperativeMatrixPropertiesNV const *>( &rhs ) )
14793     {}
14794 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
14795 
14796     CooperativeMatrixPropertiesNV &
14797       operator=( CooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14798 
operator =VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV14799     CooperativeMatrixPropertiesNV & operator=( VkCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
14800     {
14801       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV const *>( &rhs );
14802       return *this;
14803     }
14804 
14805 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV14806     VULKAN_HPP_CONSTEXPR_14 CooperativeMatrixPropertiesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
14807     {
14808       pNext = pNext_;
14809       return *this;
14810     }
14811 
setMSizeVULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV14812     VULKAN_HPP_CONSTEXPR_14 CooperativeMatrixPropertiesNV & setMSize( uint32_t MSize_ ) VULKAN_HPP_NOEXCEPT
14813     {
14814       MSize = MSize_;
14815       return *this;
14816     }
14817 
setNSizeVULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV14818     VULKAN_HPP_CONSTEXPR_14 CooperativeMatrixPropertiesNV & setNSize( uint32_t NSize_ ) VULKAN_HPP_NOEXCEPT
14819     {
14820       NSize = NSize_;
14821       return *this;
14822     }
14823 
setKSizeVULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV14824     VULKAN_HPP_CONSTEXPR_14 CooperativeMatrixPropertiesNV & setKSize( uint32_t KSize_ ) VULKAN_HPP_NOEXCEPT
14825     {
14826       KSize = KSize_;
14827       return *this;
14828     }
14829 
14830     VULKAN_HPP_CONSTEXPR_14 CooperativeMatrixPropertiesNV &
setATypeVULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV14831                             setAType( VULKAN_HPP_NAMESPACE::ComponentTypeNV AType_ ) VULKAN_HPP_NOEXCEPT
14832     {
14833       AType = AType_;
14834       return *this;
14835     }
14836 
14837     VULKAN_HPP_CONSTEXPR_14 CooperativeMatrixPropertiesNV &
setBTypeVULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV14838                             setBType( VULKAN_HPP_NAMESPACE::ComponentTypeNV BType_ ) VULKAN_HPP_NOEXCEPT
14839     {
14840       BType = BType_;
14841       return *this;
14842     }
14843 
14844     VULKAN_HPP_CONSTEXPR_14 CooperativeMatrixPropertiesNV &
setCTypeVULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV14845                             setCType( VULKAN_HPP_NAMESPACE::ComponentTypeNV CType_ ) VULKAN_HPP_NOEXCEPT
14846     {
14847       CType = CType_;
14848       return *this;
14849     }
14850 
14851     VULKAN_HPP_CONSTEXPR_14 CooperativeMatrixPropertiesNV &
setDTypeVULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV14852                             setDType( VULKAN_HPP_NAMESPACE::ComponentTypeNV DType_ ) VULKAN_HPP_NOEXCEPT
14853     {
14854       DType = DType_;
14855       return *this;
14856     }
14857 
14858     VULKAN_HPP_CONSTEXPR_14 CooperativeMatrixPropertiesNV &
setScopeVULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV14859                             setScope( VULKAN_HPP_NAMESPACE::ScopeNV scope_ ) VULKAN_HPP_NOEXCEPT
14860     {
14861       scope = scope_;
14862       return *this;
14863     }
14864 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
14865 
operator VkCooperativeMatrixPropertiesNV const&VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV14866     explicit operator VkCooperativeMatrixPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
14867     {
14868       return *reinterpret_cast<const VkCooperativeMatrixPropertiesNV *>( this );
14869     }
14870 
operator VkCooperativeMatrixPropertiesNV&VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV14871     explicit operator VkCooperativeMatrixPropertiesNV &() VULKAN_HPP_NOEXCEPT
14872     {
14873       return *reinterpret_cast<VkCooperativeMatrixPropertiesNV *>( this );
14874     }
14875 
14876 #if 14 <= VULKAN_HPP_CPP_VERSION
14877     auto
14878 #else
14879     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
14880                void * const &,
14881                uint32_t const &,
14882                uint32_t const &,
14883                uint32_t const &,
14884                VULKAN_HPP_NAMESPACE::ComponentTypeNV const &,
14885                VULKAN_HPP_NAMESPACE::ComponentTypeNV const &,
14886                VULKAN_HPP_NAMESPACE::ComponentTypeNV const &,
14887                VULKAN_HPP_NAMESPACE::ComponentTypeNV const &,
14888                VULKAN_HPP_NAMESPACE::ScopeNV const &>
14889 #endif
reflectVULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV14890       reflect() const VULKAN_HPP_NOEXCEPT
14891     {
14892       return std::tie( sType, pNext, MSize, NSize, KSize, AType, BType, CType, DType, scope );
14893     }
14894 
14895 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
14896     auto operator<=>( CooperativeMatrixPropertiesNV const & ) const = default;
14897 #else
operator ==VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV14898     bool operator==( CooperativeMatrixPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
14899     {
14900       return this->reflect() == rhs.reflect();
14901     }
14902 
operator !=VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV14903     bool operator!=( CooperativeMatrixPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
14904     {
14905       return this->reflect() != rhs.reflect();
14906     }
14907 #endif
14908 
14909   public:
14910     VULKAN_HPP_NAMESPACE::StructureType   sType = StructureType::eCooperativeMatrixPropertiesNV;
14911     void *                                pNext = {};
14912     uint32_t                              MSize = {};
14913     uint32_t                              NSize = {};
14914     uint32_t                              KSize = {};
14915     VULKAN_HPP_NAMESPACE::ComponentTypeNV AType = VULKAN_HPP_NAMESPACE::ComponentTypeNV::eFloat16;
14916     VULKAN_HPP_NAMESPACE::ComponentTypeNV BType = VULKAN_HPP_NAMESPACE::ComponentTypeNV::eFloat16;
14917     VULKAN_HPP_NAMESPACE::ComponentTypeNV CType = VULKAN_HPP_NAMESPACE::ComponentTypeNV::eFloat16;
14918     VULKAN_HPP_NAMESPACE::ComponentTypeNV DType = VULKAN_HPP_NAMESPACE::ComponentTypeNV::eFloat16;
14919     VULKAN_HPP_NAMESPACE::ScopeNV         scope = VULKAN_HPP_NAMESPACE::ScopeNV::eDevice;
14920   };
14921   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV ) ==
14922                               sizeof( VkCooperativeMatrixPropertiesNV ),
14923                             "struct and wrapper have different size!" );
14924   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV>::value,
14925                             "struct wrapper is not a standard layout!" );
14926   VULKAN_HPP_STATIC_ASSERT(
14927     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV>::value,
14928     "CooperativeMatrixPropertiesNV is not nothrow_move_constructible!" );
14929 
14930   template <>
14931   struct CppType<StructureType, StructureType::eCooperativeMatrixPropertiesNV>
14932   {
14933     using Type = CooperativeMatrixPropertiesNV;
14934   };
14935 
14936   struct CopyAccelerationStructureInfoKHR
14937   {
14938     using NativeType = VkCopyAccelerationStructureInfoKHR;
14939 
14940     static const bool                                  allowDuplicate = false;
14941     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyAccelerationStructureInfoKHR;
14942 
14943 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyAccelerationStructureInfoKHRVULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR14944     VULKAN_HPP_CONSTEXPR CopyAccelerationStructureInfoKHR(
14945       VULKAN_HPP_NAMESPACE::AccelerationStructureKHR         src_ = {},
14946       VULKAN_HPP_NAMESPACE::AccelerationStructureKHR         dst_ = {},
14947       VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode_ =
14948         VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR::eClone ) VULKAN_HPP_NOEXCEPT
14949       : src( src_ )
14950       , dst( dst_ )
14951       , mode( mode_ )
14952     {}
14953 
14954     VULKAN_HPP_CONSTEXPR
14955       CopyAccelerationStructureInfoKHR( CopyAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14956 
CopyAccelerationStructureInfoKHRVULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR14957     CopyAccelerationStructureInfoKHR( VkCopyAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
14958       : CopyAccelerationStructureInfoKHR( *reinterpret_cast<CopyAccelerationStructureInfoKHR const *>( &rhs ) )
14959     {}
14960 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
14961 
14962     CopyAccelerationStructureInfoKHR &
14963       operator=( CopyAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14964 
operator =VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR14965     CopyAccelerationStructureInfoKHR & operator=( VkCopyAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
14966     {
14967       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR const *>( &rhs );
14968       return *this;
14969     }
14970 
14971 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR14972     VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
14973     {
14974       pNext = pNext_;
14975       return *this;
14976     }
14977 
14978     VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureInfoKHR &
setSrcVULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR14979                             setSrc( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR src_ ) VULKAN_HPP_NOEXCEPT
14980     {
14981       src = src_;
14982       return *this;
14983     }
14984 
14985     VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureInfoKHR &
setDstVULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR14986                             setDst( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR dst_ ) VULKAN_HPP_NOEXCEPT
14987     {
14988       dst = dst_;
14989       return *this;
14990     }
14991 
14992     VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureInfoKHR &
setModeVULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR14993                             setMode( VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode_ ) VULKAN_HPP_NOEXCEPT
14994     {
14995       mode = mode_;
14996       return *this;
14997     }
14998 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
14999 
operator VkCopyAccelerationStructureInfoKHR const&VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR15000     explicit operator VkCopyAccelerationStructureInfoKHR const &() const VULKAN_HPP_NOEXCEPT
15001     {
15002       return *reinterpret_cast<const VkCopyAccelerationStructureInfoKHR *>( this );
15003     }
15004 
operator VkCopyAccelerationStructureInfoKHR&VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR15005     explicit operator VkCopyAccelerationStructureInfoKHR &() VULKAN_HPP_NOEXCEPT
15006     {
15007       return *reinterpret_cast<VkCopyAccelerationStructureInfoKHR *>( this );
15008     }
15009 
15010 #if 14 <= VULKAN_HPP_CPP_VERSION
15011     auto
15012 #else
15013     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
15014                const void * const &,
15015                VULKAN_HPP_NAMESPACE::AccelerationStructureKHR const &,
15016                VULKAN_HPP_NAMESPACE::AccelerationStructureKHR const &,
15017                VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR const &>
15018 #endif
reflectVULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR15019       reflect() const VULKAN_HPP_NOEXCEPT
15020     {
15021       return std::tie( sType, pNext, src, dst, mode );
15022     }
15023 
15024 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
15025     auto operator<=>( CopyAccelerationStructureInfoKHR const & ) const = default;
15026 #else
operator ==VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR15027     bool operator==( CopyAccelerationStructureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
15028     {
15029       return this->reflect() == rhs.reflect();
15030     }
15031 
operator !=VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR15032     bool operator!=( CopyAccelerationStructureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
15033     {
15034       return this->reflect() != rhs.reflect();
15035     }
15036 #endif
15037 
15038   public:
15039     VULKAN_HPP_NAMESPACE::StructureType                    sType = StructureType::eCopyAccelerationStructureInfoKHR;
15040     const void *                                           pNext = {};
15041     VULKAN_HPP_NAMESPACE::AccelerationStructureKHR         src   = {};
15042     VULKAN_HPP_NAMESPACE::AccelerationStructureKHR         dst   = {};
15043     VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode =
15044       VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR::eClone;
15045   };
15046   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR ) ==
15047                               sizeof( VkCopyAccelerationStructureInfoKHR ),
15048                             "struct and wrapper have different size!" );
15049   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR>::value,
15050                             "struct wrapper is not a standard layout!" );
15051   VULKAN_HPP_STATIC_ASSERT(
15052     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR>::value,
15053     "CopyAccelerationStructureInfoKHR is not nothrow_move_constructible!" );
15054 
15055   template <>
15056   struct CppType<StructureType, StructureType::eCopyAccelerationStructureInfoKHR>
15057   {
15058     using Type = CopyAccelerationStructureInfoKHR;
15059   };
15060 
15061   struct CopyAccelerationStructureToMemoryInfoKHR
15062   {
15063     using NativeType = VkCopyAccelerationStructureToMemoryInfoKHR;
15064 
15065     static const bool                                  allowDuplicate = false;
15066     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
15067       StructureType::eCopyAccelerationStructureToMemoryInfoKHR;
15068 
15069 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyAccelerationStructureToMemoryInfoKHRVULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR15070     VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureToMemoryInfoKHR(
15071       VULKAN_HPP_NAMESPACE::AccelerationStructureKHR         src_ = {},
15072       VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR           dst_ = {},
15073       VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode_ =
15074         VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR::eClone ) VULKAN_HPP_NOEXCEPT
15075       : src( src_ )
15076       , dst( dst_ )
15077       , mode( mode_ )
15078     {}
15079 
15080     VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureToMemoryInfoKHR(
15081       CopyAccelerationStructureToMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15082 
CopyAccelerationStructureToMemoryInfoKHRVULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR15083     CopyAccelerationStructureToMemoryInfoKHR( VkCopyAccelerationStructureToMemoryInfoKHR const & rhs )
15084       VULKAN_HPP_NOEXCEPT
15085       : CopyAccelerationStructureToMemoryInfoKHR(
15086           *reinterpret_cast<CopyAccelerationStructureToMemoryInfoKHR const *>( &rhs ) )
15087     {}
15088 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
15089 
15090     CopyAccelerationStructureToMemoryInfoKHR &
15091       operator=( CopyAccelerationStructureToMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15092 
15093     CopyAccelerationStructureToMemoryInfoKHR &
operator =VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR15094       operator=( VkCopyAccelerationStructureToMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
15095     {
15096       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR const *>( &rhs );
15097       return *this;
15098     }
15099 
15100 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
15101     VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureToMemoryInfoKHR &
setPNextVULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR15102                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
15103     {
15104       pNext = pNext_;
15105       return *this;
15106     }
15107 
15108     VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureToMemoryInfoKHR &
setSrcVULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR15109                             setSrc( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR src_ ) VULKAN_HPP_NOEXCEPT
15110     {
15111       src = src_;
15112       return *this;
15113     }
15114 
15115     VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureToMemoryInfoKHR &
setDstVULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR15116                             setDst( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR const & dst_ ) VULKAN_HPP_NOEXCEPT
15117     {
15118       dst = dst_;
15119       return *this;
15120     }
15121 
15122     VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureToMemoryInfoKHR &
setModeVULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR15123                             setMode( VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode_ ) VULKAN_HPP_NOEXCEPT
15124     {
15125       mode = mode_;
15126       return *this;
15127     }
15128 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
15129 
operator VkCopyAccelerationStructureToMemoryInfoKHR const&VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR15130     explicit operator VkCopyAccelerationStructureToMemoryInfoKHR const &() const VULKAN_HPP_NOEXCEPT
15131     {
15132       return *reinterpret_cast<const VkCopyAccelerationStructureToMemoryInfoKHR *>( this );
15133     }
15134 
operator VkCopyAccelerationStructureToMemoryInfoKHR&VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR15135     explicit operator VkCopyAccelerationStructureToMemoryInfoKHR &() VULKAN_HPP_NOEXCEPT
15136     {
15137       return *reinterpret_cast<VkCopyAccelerationStructureToMemoryInfoKHR *>( this );
15138     }
15139 
15140 #if 14 <= VULKAN_HPP_CPP_VERSION
15141     auto
15142 #else
15143     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
15144                const void * const &,
15145                VULKAN_HPP_NAMESPACE::AccelerationStructureKHR const &,
15146                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR const &,
15147                VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR const &>
15148 #endif
reflectVULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR15149       reflect() const VULKAN_HPP_NOEXCEPT
15150     {
15151       return std::tie( sType, pNext, src, dst, mode );
15152     }
15153 
15154   public:
15155     VULKAN_HPP_NAMESPACE::StructureType            sType = StructureType::eCopyAccelerationStructureToMemoryInfoKHR;
15156     const void *                                   pNext = {};
15157     VULKAN_HPP_NAMESPACE::AccelerationStructureKHR src   = {};
15158     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR   dst   = {};
15159     VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode =
15160       VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR::eClone;
15161   };
15162   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR ) ==
15163                               sizeof( VkCopyAccelerationStructureToMemoryInfoKHR ),
15164                             "struct and wrapper have different size!" );
15165   VULKAN_HPP_STATIC_ASSERT(
15166     std::is_standard_layout<VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR>::value,
15167     "struct wrapper is not a standard layout!" );
15168   VULKAN_HPP_STATIC_ASSERT(
15169     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR>::value,
15170     "CopyAccelerationStructureToMemoryInfoKHR is not nothrow_move_constructible!" );
15171 
15172   template <>
15173   struct CppType<StructureType, StructureType::eCopyAccelerationStructureToMemoryInfoKHR>
15174   {
15175     using Type = CopyAccelerationStructureToMemoryInfoKHR;
15176   };
15177 
15178   struct CopyBufferInfo2KHR
15179   {
15180     using NativeType = VkCopyBufferInfo2KHR;
15181 
15182     static const bool                                  allowDuplicate = false;
15183     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCopyBufferInfo2KHR;
15184 
15185 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
15186     VULKAN_HPP_CONSTEXPR
CopyBufferInfo2KHRVULKAN_HPP_NAMESPACE::CopyBufferInfo2KHR15187       CopyBufferInfo2KHR( VULKAN_HPP_NAMESPACE::Buffer                 srcBuffer_   = {},
15188                           VULKAN_HPP_NAMESPACE::Buffer                 dstBuffer_   = {},
15189                           uint32_t                                     regionCount_ = {},
15190                           const VULKAN_HPP_NAMESPACE::BufferCopy2KHR * pRegions_    = {} ) VULKAN_HPP_NOEXCEPT
15191       : srcBuffer( srcBuffer_ )
15192       , dstBuffer( dstBuffer_ )
15193       , regionCount( regionCount_ )
15194       , pRegions( pRegions_ )
15195     {}
15196 
15197     VULKAN_HPP_CONSTEXPR CopyBufferInfo2KHR( CopyBufferInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15198 
CopyBufferInfo2KHRVULKAN_HPP_NAMESPACE::CopyBufferInfo2KHR15199     CopyBufferInfo2KHR( VkCopyBufferInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
15200       : CopyBufferInfo2KHR( *reinterpret_cast<CopyBufferInfo2KHR const *>( &rhs ) )
15201     {}
15202 
15203 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
CopyBufferInfo2KHRVULKAN_HPP_NAMESPACE::CopyBufferInfo2KHR15204     CopyBufferInfo2KHR(
15205       VULKAN_HPP_NAMESPACE::Buffer                                                                      srcBuffer_,
15206       VULKAN_HPP_NAMESPACE::Buffer                                                                      dstBuffer_,
15207       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferCopy2KHR> const & regions_ )
15208       : srcBuffer( srcBuffer_ )
15209       , dstBuffer( dstBuffer_ )
15210       , regionCount( static_cast<uint32_t>( regions_.size() ) )
15211       , pRegions( regions_.data() )
15212     {}
15213 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
15214 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
15215 
15216     CopyBufferInfo2KHR & operator=( CopyBufferInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15217 
operator =VULKAN_HPP_NAMESPACE::CopyBufferInfo2KHR15218     CopyBufferInfo2KHR & operator=( VkCopyBufferInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
15219     {
15220       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyBufferInfo2KHR const *>( &rhs );
15221       return *this;
15222     }
15223 
15224 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyBufferInfo2KHR15225     VULKAN_HPP_CONSTEXPR_14 CopyBufferInfo2KHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
15226     {
15227       pNext = pNext_;
15228       return *this;
15229     }
15230 
15231     VULKAN_HPP_CONSTEXPR_14 CopyBufferInfo2KHR &
setSrcBufferVULKAN_HPP_NAMESPACE::CopyBufferInfo2KHR15232                             setSrcBuffer( VULKAN_HPP_NAMESPACE::Buffer srcBuffer_ ) VULKAN_HPP_NOEXCEPT
15233     {
15234       srcBuffer = srcBuffer_;
15235       return *this;
15236     }
15237 
15238     VULKAN_HPP_CONSTEXPR_14 CopyBufferInfo2KHR &
setDstBufferVULKAN_HPP_NAMESPACE::CopyBufferInfo2KHR15239                             setDstBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer_ ) VULKAN_HPP_NOEXCEPT
15240     {
15241       dstBuffer = dstBuffer_;
15242       return *this;
15243     }
15244 
setRegionCountVULKAN_HPP_NAMESPACE::CopyBufferInfo2KHR15245     VULKAN_HPP_CONSTEXPR_14 CopyBufferInfo2KHR & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT
15246     {
15247       regionCount = regionCount_;
15248       return *this;
15249     }
15250 
15251     VULKAN_HPP_CONSTEXPR_14 CopyBufferInfo2KHR &
setPRegionsVULKAN_HPP_NAMESPACE::CopyBufferInfo2KHR15252                             setPRegions( const VULKAN_HPP_NAMESPACE::BufferCopy2KHR * pRegions_ ) VULKAN_HPP_NOEXCEPT
15253     {
15254       pRegions = pRegions_;
15255       return *this;
15256     }
15257 
15258 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setRegionsVULKAN_HPP_NAMESPACE::CopyBufferInfo2KHR15259     CopyBufferInfo2KHR & setRegions(
15260       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferCopy2KHR> const & regions_ )
15261       VULKAN_HPP_NOEXCEPT
15262     {
15263       regionCount = static_cast<uint32_t>( regions_.size() );
15264       pRegions    = regions_.data();
15265       return *this;
15266     }
15267 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
15268 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
15269 
operator VkCopyBufferInfo2KHR const&VULKAN_HPP_NAMESPACE::CopyBufferInfo2KHR15270     explicit operator VkCopyBufferInfo2KHR const &() const VULKAN_HPP_NOEXCEPT
15271     {
15272       return *reinterpret_cast<const VkCopyBufferInfo2KHR *>( this );
15273     }
15274 
operator VkCopyBufferInfo2KHR&VULKAN_HPP_NAMESPACE::CopyBufferInfo2KHR15275     explicit operator VkCopyBufferInfo2KHR &() VULKAN_HPP_NOEXCEPT
15276     {
15277       return *reinterpret_cast<VkCopyBufferInfo2KHR *>( this );
15278     }
15279 
15280 #if 14 <= VULKAN_HPP_CPP_VERSION
15281     auto
15282 #else
15283     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
15284                const void * const &,
15285                VULKAN_HPP_NAMESPACE::Buffer const &,
15286                VULKAN_HPP_NAMESPACE::Buffer const &,
15287                uint32_t const &,
15288                const VULKAN_HPP_NAMESPACE::BufferCopy2KHR * const &>
15289 #endif
reflectVULKAN_HPP_NAMESPACE::CopyBufferInfo2KHR15290       reflect() const VULKAN_HPP_NOEXCEPT
15291     {
15292       return std::tie( sType, pNext, srcBuffer, dstBuffer, regionCount, pRegions );
15293     }
15294 
15295 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
15296     auto operator<=>( CopyBufferInfo2KHR const & ) const = default;
15297 #else
operator ==VULKAN_HPP_NAMESPACE::CopyBufferInfo2KHR15298     bool operator==( CopyBufferInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
15299     {
15300       return this->reflect() == rhs.reflect();
15301     }
15302 
operator !=VULKAN_HPP_NAMESPACE::CopyBufferInfo2KHR15303     bool operator!=( CopyBufferInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
15304     {
15305       return this->reflect() != rhs.reflect();
15306     }
15307 #endif
15308 
15309   public:
15310     VULKAN_HPP_NAMESPACE::StructureType          sType       = StructureType::eCopyBufferInfo2KHR;
15311     const void *                                 pNext       = {};
15312     VULKAN_HPP_NAMESPACE::Buffer                 srcBuffer   = {};
15313     VULKAN_HPP_NAMESPACE::Buffer                 dstBuffer   = {};
15314     uint32_t                                     regionCount = {};
15315     const VULKAN_HPP_NAMESPACE::BufferCopy2KHR * pRegions    = {};
15316   };
15317   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyBufferInfo2KHR ) == sizeof( VkCopyBufferInfo2KHR ),
15318                             "struct and wrapper have different size!" );
15319   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::CopyBufferInfo2KHR>::value,
15320                             "struct wrapper is not a standard layout!" );
15321   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::CopyBufferInfo2KHR>::value,
15322                             "CopyBufferInfo2KHR is not nothrow_move_constructible!" );
15323 
15324   template <>
15325   struct CppType<StructureType, StructureType::eCopyBufferInfo2KHR>
15326   {
15327     using Type = CopyBufferInfo2KHR;
15328   };
15329 
15330   struct CopyBufferToImageInfo2KHR
15331   {
15332     using NativeType = VkCopyBufferToImageInfo2KHR;
15333 
15334     static const bool                                  allowDuplicate = false;
15335     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCopyBufferToImageInfo2KHR;
15336 
15337 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyBufferToImageInfo2KHRVULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2KHR15338     VULKAN_HPP_CONSTEXPR CopyBufferToImageInfo2KHR(
15339       VULKAN_HPP_NAMESPACE::Buffer                      srcBuffer_      = {},
15340       VULKAN_HPP_NAMESPACE::Image                       dstImage_       = {},
15341       VULKAN_HPP_NAMESPACE::ImageLayout                 dstImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
15342       uint32_t                                          regionCount_    = {},
15343       const VULKAN_HPP_NAMESPACE::BufferImageCopy2KHR * pRegions_       = {} ) VULKAN_HPP_NOEXCEPT
15344       : srcBuffer( srcBuffer_ )
15345       , dstImage( dstImage_ )
15346       , dstImageLayout( dstImageLayout_ )
15347       , regionCount( regionCount_ )
15348       , pRegions( pRegions_ )
15349     {}
15350 
15351     VULKAN_HPP_CONSTEXPR
15352       CopyBufferToImageInfo2KHR( CopyBufferToImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15353 
CopyBufferToImageInfo2KHRVULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2KHR15354     CopyBufferToImageInfo2KHR( VkCopyBufferToImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
15355       : CopyBufferToImageInfo2KHR( *reinterpret_cast<CopyBufferToImageInfo2KHR const *>( &rhs ) )
15356     {}
15357 
15358 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
CopyBufferToImageInfo2KHRVULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2KHR15359     CopyBufferToImageInfo2KHR(
15360       VULKAN_HPP_NAMESPACE::Buffer      srcBuffer_,
15361       VULKAN_HPP_NAMESPACE::Image       dstImage_,
15362       VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_,
15363       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferImageCopy2KHR> const & regions_ )
15364       : srcBuffer( srcBuffer_ )
15365       , dstImage( dstImage_ )
15366       , dstImageLayout( dstImageLayout_ )
15367       , regionCount( static_cast<uint32_t>( regions_.size() ) )
15368       , pRegions( regions_.data() )
15369     {}
15370 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
15371 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
15372 
15373     CopyBufferToImageInfo2KHR & operator=( CopyBufferToImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15374 
operator =VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2KHR15375     CopyBufferToImageInfo2KHR & operator=( VkCopyBufferToImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
15376     {
15377       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2KHR const *>( &rhs );
15378       return *this;
15379     }
15380 
15381 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2KHR15382     VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2KHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
15383     {
15384       pNext = pNext_;
15385       return *this;
15386     }
15387 
15388     VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2KHR &
setSrcBufferVULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2KHR15389                             setSrcBuffer( VULKAN_HPP_NAMESPACE::Buffer srcBuffer_ ) VULKAN_HPP_NOEXCEPT
15390     {
15391       srcBuffer = srcBuffer_;
15392       return *this;
15393     }
15394 
15395     VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2KHR &
setDstImageVULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2KHR15396                             setDstImage( VULKAN_HPP_NAMESPACE::Image dstImage_ ) VULKAN_HPP_NOEXCEPT
15397     {
15398       dstImage = dstImage_;
15399       return *this;
15400     }
15401 
15402     VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2KHR &
setDstImageLayoutVULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2KHR15403                             setDstImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ ) VULKAN_HPP_NOEXCEPT
15404     {
15405       dstImageLayout = dstImageLayout_;
15406       return *this;
15407     }
15408 
setRegionCountVULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2KHR15409     VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2KHR & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT
15410     {
15411       regionCount = regionCount_;
15412       return *this;
15413     }
15414 
15415     VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2KHR &
setPRegionsVULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2KHR15416       setPRegions( const VULKAN_HPP_NAMESPACE::BufferImageCopy2KHR * pRegions_ ) VULKAN_HPP_NOEXCEPT
15417     {
15418       pRegions = pRegions_;
15419       return *this;
15420     }
15421 
15422 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setRegionsVULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2KHR15423     CopyBufferToImageInfo2KHR & setRegions(
15424       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferImageCopy2KHR> const & regions_ )
15425       VULKAN_HPP_NOEXCEPT
15426     {
15427       regionCount = static_cast<uint32_t>( regions_.size() );
15428       pRegions    = regions_.data();
15429       return *this;
15430     }
15431 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
15432 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
15433 
operator VkCopyBufferToImageInfo2KHR const&VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2KHR15434     explicit operator VkCopyBufferToImageInfo2KHR const &() const VULKAN_HPP_NOEXCEPT
15435     {
15436       return *reinterpret_cast<const VkCopyBufferToImageInfo2KHR *>( this );
15437     }
15438 
operator VkCopyBufferToImageInfo2KHR&VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2KHR15439     explicit operator VkCopyBufferToImageInfo2KHR &() VULKAN_HPP_NOEXCEPT
15440     {
15441       return *reinterpret_cast<VkCopyBufferToImageInfo2KHR *>( this );
15442     }
15443 
15444 #if 14 <= VULKAN_HPP_CPP_VERSION
15445     auto
15446 #else
15447     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
15448                const void * const &,
15449                VULKAN_HPP_NAMESPACE::Buffer const &,
15450                VULKAN_HPP_NAMESPACE::Image const &,
15451                VULKAN_HPP_NAMESPACE::ImageLayout const &,
15452                uint32_t const &,
15453                const VULKAN_HPP_NAMESPACE::BufferImageCopy2KHR * const &>
15454 #endif
reflectVULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2KHR15455       reflect() const VULKAN_HPP_NOEXCEPT
15456     {
15457       return std::tie( sType, pNext, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions );
15458     }
15459 
15460 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
15461     auto operator<=>( CopyBufferToImageInfo2KHR const & ) const = default;
15462 #else
operator ==VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2KHR15463     bool operator==( CopyBufferToImageInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
15464     {
15465       return this->reflect() == rhs.reflect();
15466     }
15467 
operator !=VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2KHR15468     bool operator!=( CopyBufferToImageInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
15469     {
15470       return this->reflect() != rhs.reflect();
15471     }
15472 #endif
15473 
15474   public:
15475     VULKAN_HPP_NAMESPACE::StructureType               sType          = StructureType::eCopyBufferToImageInfo2KHR;
15476     const void *                                      pNext          = {};
15477     VULKAN_HPP_NAMESPACE::Buffer                      srcBuffer      = {};
15478     VULKAN_HPP_NAMESPACE::Image                       dstImage       = {};
15479     VULKAN_HPP_NAMESPACE::ImageLayout                 dstImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
15480     uint32_t                                          regionCount    = {};
15481     const VULKAN_HPP_NAMESPACE::BufferImageCopy2KHR * pRegions       = {};
15482   };
15483   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2KHR ) ==
15484                               sizeof( VkCopyBufferToImageInfo2KHR ),
15485                             "struct and wrapper have different size!" );
15486   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2KHR>::value,
15487                             "struct wrapper is not a standard layout!" );
15488   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2KHR>::value,
15489                             "CopyBufferToImageInfo2KHR is not nothrow_move_constructible!" );
15490 
15491   template <>
15492   struct CppType<StructureType, StructureType::eCopyBufferToImageInfo2KHR>
15493   {
15494     using Type = CopyBufferToImageInfo2KHR;
15495   };
15496 
15497   struct CopyCommandTransformInfoQCOM
15498   {
15499     using NativeType = VkCopyCommandTransformInfoQCOM;
15500 
15501     static const bool                                  allowDuplicate = false;
15502     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCopyCommandTransformInfoQCOM;
15503 
15504 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
15505     VULKAN_HPP_CONSTEXPR
CopyCommandTransformInfoQCOMVULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM15506       CopyCommandTransformInfoQCOM( VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_ =
15507                                       VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity ) VULKAN_HPP_NOEXCEPT
15508       : transform( transform_ )
15509     {}
15510 
15511     VULKAN_HPP_CONSTEXPR
15512       CopyCommandTransformInfoQCOM( CopyCommandTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15513 
CopyCommandTransformInfoQCOMVULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM15514     CopyCommandTransformInfoQCOM( VkCopyCommandTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
15515       : CopyCommandTransformInfoQCOM( *reinterpret_cast<CopyCommandTransformInfoQCOM const *>( &rhs ) )
15516     {}
15517 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
15518 
15519     CopyCommandTransformInfoQCOM & operator=( CopyCommandTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15520 
operator =VULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM15521     CopyCommandTransformInfoQCOM & operator=( VkCopyCommandTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
15522     {
15523       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM const *>( &rhs );
15524       return *this;
15525     }
15526 
15527 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM15528     VULKAN_HPP_CONSTEXPR_14 CopyCommandTransformInfoQCOM & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
15529     {
15530       pNext = pNext_;
15531       return *this;
15532     }
15533 
15534     VULKAN_HPP_CONSTEXPR_14 CopyCommandTransformInfoQCOM &
setTransformVULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM15535       setTransform( VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_ ) VULKAN_HPP_NOEXCEPT
15536     {
15537       transform = transform_;
15538       return *this;
15539     }
15540 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
15541 
operator VkCopyCommandTransformInfoQCOM const&VULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM15542     explicit operator VkCopyCommandTransformInfoQCOM const &() const VULKAN_HPP_NOEXCEPT
15543     {
15544       return *reinterpret_cast<const VkCopyCommandTransformInfoQCOM *>( this );
15545     }
15546 
operator VkCopyCommandTransformInfoQCOM&VULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM15547     explicit operator VkCopyCommandTransformInfoQCOM &() VULKAN_HPP_NOEXCEPT
15548     {
15549       return *reinterpret_cast<VkCopyCommandTransformInfoQCOM *>( this );
15550     }
15551 
15552 #if 14 <= VULKAN_HPP_CPP_VERSION
15553     auto
15554 #else
15555     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
15556                const void * const &,
15557                VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR const &>
15558 #endif
reflectVULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM15559       reflect() const VULKAN_HPP_NOEXCEPT
15560     {
15561       return std::tie( sType, pNext, transform );
15562     }
15563 
15564 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
15565     auto operator<=>( CopyCommandTransformInfoQCOM const & ) const = default;
15566 #else
operator ==VULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM15567     bool operator==( CopyCommandTransformInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
15568     {
15569       return this->reflect() == rhs.reflect();
15570     }
15571 
operator !=VULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM15572     bool operator!=( CopyCommandTransformInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
15573     {
15574       return this->reflect() != rhs.reflect();
15575     }
15576 #endif
15577 
15578   public:
15579     VULKAN_HPP_NAMESPACE::StructureType               sType = StructureType::eCopyCommandTransformInfoQCOM;
15580     const void *                                      pNext = {};
15581     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform =
15582       VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity;
15583   };
15584   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM ) ==
15585                               sizeof( VkCopyCommandTransformInfoQCOM ),
15586                             "struct and wrapper have different size!" );
15587   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM>::value,
15588                             "struct wrapper is not a standard layout!" );
15589   VULKAN_HPP_STATIC_ASSERT(
15590     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM>::value,
15591     "CopyCommandTransformInfoQCOM is not nothrow_move_constructible!" );
15592 
15593   template <>
15594   struct CppType<StructureType, StructureType::eCopyCommandTransformInfoQCOM>
15595   {
15596     using Type = CopyCommandTransformInfoQCOM;
15597   };
15598 
15599   struct CopyDescriptorSet
15600   {
15601     using NativeType = VkCopyDescriptorSet;
15602 
15603     static const bool                                  allowDuplicate = false;
15604     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCopyDescriptorSet;
15605 
15606 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyDescriptorSetVULKAN_HPP_NAMESPACE::CopyDescriptorSet15607     VULKAN_HPP_CONSTEXPR CopyDescriptorSet( VULKAN_HPP_NAMESPACE::DescriptorSet srcSet_          = {},
15608                                             uint32_t                            srcBinding_      = {},
15609                                             uint32_t                            srcArrayElement_ = {},
15610                                             VULKAN_HPP_NAMESPACE::DescriptorSet dstSet_          = {},
15611                                             uint32_t                            dstBinding_      = {},
15612                                             uint32_t                            dstArrayElement_ = {},
15613                                             uint32_t descriptorCount_ = {} ) VULKAN_HPP_NOEXCEPT
15614       : srcSet( srcSet_ )
15615       , srcBinding( srcBinding_ )
15616       , srcArrayElement( srcArrayElement_ )
15617       , dstSet( dstSet_ )
15618       , dstBinding( dstBinding_ )
15619       , dstArrayElement( dstArrayElement_ )
15620       , descriptorCount( descriptorCount_ )
15621     {}
15622 
15623     VULKAN_HPP_CONSTEXPR CopyDescriptorSet( CopyDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15624 
CopyDescriptorSetVULKAN_HPP_NAMESPACE::CopyDescriptorSet15625     CopyDescriptorSet( VkCopyDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT
15626       : CopyDescriptorSet( *reinterpret_cast<CopyDescriptorSet const *>( &rhs ) )
15627     {}
15628 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
15629 
15630     CopyDescriptorSet & operator=( CopyDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15631 
operator =VULKAN_HPP_NAMESPACE::CopyDescriptorSet15632     CopyDescriptorSet & operator=( VkCopyDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT
15633     {
15634       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyDescriptorSet const *>( &rhs );
15635       return *this;
15636     }
15637 
15638 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyDescriptorSet15639     VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
15640     {
15641       pNext = pNext_;
15642       return *this;
15643     }
15644 
15645     VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet &
setSrcSetVULKAN_HPP_NAMESPACE::CopyDescriptorSet15646                             setSrcSet( VULKAN_HPP_NAMESPACE::DescriptorSet srcSet_ ) VULKAN_HPP_NOEXCEPT
15647     {
15648       srcSet = srcSet_;
15649       return *this;
15650     }
15651 
setSrcBindingVULKAN_HPP_NAMESPACE::CopyDescriptorSet15652     VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setSrcBinding( uint32_t srcBinding_ ) VULKAN_HPP_NOEXCEPT
15653     {
15654       srcBinding = srcBinding_;
15655       return *this;
15656     }
15657 
setSrcArrayElementVULKAN_HPP_NAMESPACE::CopyDescriptorSet15658     VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setSrcArrayElement( uint32_t srcArrayElement_ ) VULKAN_HPP_NOEXCEPT
15659     {
15660       srcArrayElement = srcArrayElement_;
15661       return *this;
15662     }
15663 
15664     VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet &
setDstSetVULKAN_HPP_NAMESPACE::CopyDescriptorSet15665                             setDstSet( VULKAN_HPP_NAMESPACE::DescriptorSet dstSet_ ) VULKAN_HPP_NOEXCEPT
15666     {
15667       dstSet = dstSet_;
15668       return *this;
15669     }
15670 
setDstBindingVULKAN_HPP_NAMESPACE::CopyDescriptorSet15671     VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setDstBinding( uint32_t dstBinding_ ) VULKAN_HPP_NOEXCEPT
15672     {
15673       dstBinding = dstBinding_;
15674       return *this;
15675     }
15676 
setDstArrayElementVULKAN_HPP_NAMESPACE::CopyDescriptorSet15677     VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setDstArrayElement( uint32_t dstArrayElement_ ) VULKAN_HPP_NOEXCEPT
15678     {
15679       dstArrayElement = dstArrayElement_;
15680       return *this;
15681     }
15682 
setDescriptorCountVULKAN_HPP_NAMESPACE::CopyDescriptorSet15683     VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setDescriptorCount( uint32_t descriptorCount_ ) VULKAN_HPP_NOEXCEPT
15684     {
15685       descriptorCount = descriptorCount_;
15686       return *this;
15687     }
15688 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
15689 
operator VkCopyDescriptorSet const&VULKAN_HPP_NAMESPACE::CopyDescriptorSet15690     explicit operator VkCopyDescriptorSet const &() const VULKAN_HPP_NOEXCEPT
15691     {
15692       return *reinterpret_cast<const VkCopyDescriptorSet *>( this );
15693     }
15694 
operator VkCopyDescriptorSet&VULKAN_HPP_NAMESPACE::CopyDescriptorSet15695     explicit operator VkCopyDescriptorSet &() VULKAN_HPP_NOEXCEPT
15696     {
15697       return *reinterpret_cast<VkCopyDescriptorSet *>( this );
15698     }
15699 
15700 #if 14 <= VULKAN_HPP_CPP_VERSION
15701     auto
15702 #else
15703     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
15704                const void * const &,
15705                VULKAN_HPP_NAMESPACE::DescriptorSet const &,
15706                uint32_t const &,
15707                uint32_t const &,
15708                VULKAN_HPP_NAMESPACE::DescriptorSet const &,
15709                uint32_t const &,
15710                uint32_t const &,
15711                uint32_t const &>
15712 #endif
reflectVULKAN_HPP_NAMESPACE::CopyDescriptorSet15713       reflect() const VULKAN_HPP_NOEXCEPT
15714     {
15715       return std::tie(
15716         sType, pNext, srcSet, srcBinding, srcArrayElement, dstSet, dstBinding, dstArrayElement, descriptorCount );
15717     }
15718 
15719 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
15720     auto operator<=>( CopyDescriptorSet const & ) const = default;
15721 #else
operator ==VULKAN_HPP_NAMESPACE::CopyDescriptorSet15722     bool operator==( CopyDescriptorSet const & rhs ) const VULKAN_HPP_NOEXCEPT
15723     {
15724       return this->reflect() == rhs.reflect();
15725     }
15726 
operator !=VULKAN_HPP_NAMESPACE::CopyDescriptorSet15727     bool operator!=( CopyDescriptorSet const & rhs ) const VULKAN_HPP_NOEXCEPT
15728     {
15729       return this->reflect() != rhs.reflect();
15730     }
15731 #endif
15732 
15733   public:
15734     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::eCopyDescriptorSet;
15735     const void *                        pNext           = {};
15736     VULKAN_HPP_NAMESPACE::DescriptorSet srcSet          = {};
15737     uint32_t                            srcBinding      = {};
15738     uint32_t                            srcArrayElement = {};
15739     VULKAN_HPP_NAMESPACE::DescriptorSet dstSet          = {};
15740     uint32_t                            dstBinding      = {};
15741     uint32_t                            dstArrayElement = {};
15742     uint32_t                            descriptorCount = {};
15743   };
15744   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyDescriptorSet ) == sizeof( VkCopyDescriptorSet ),
15745                             "struct and wrapper have different size!" );
15746   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::CopyDescriptorSet>::value,
15747                             "struct wrapper is not a standard layout!" );
15748   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::CopyDescriptorSet>::value,
15749                             "CopyDescriptorSet is not nothrow_move_constructible!" );
15750 
15751   template <>
15752   struct CppType<StructureType, StructureType::eCopyDescriptorSet>
15753   {
15754     using Type = CopyDescriptorSet;
15755   };
15756 
15757   struct ImageCopy2KHR
15758   {
15759     using NativeType = VkImageCopy2KHR;
15760 
15761     static const bool                                  allowDuplicate = false;
15762     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageCopy2KHR;
15763 
15764 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageCopy2KHRVULKAN_HPP_NAMESPACE::ImageCopy2KHR15765     VULKAN_HPP_CONSTEXPR ImageCopy2KHR( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource_ = {},
15766                                         VULKAN_HPP_NAMESPACE::Offset3D               srcOffset_      = {},
15767                                         VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource_ = {},
15768                                         VULKAN_HPP_NAMESPACE::Offset3D               dstOffset_      = {},
15769                                         VULKAN_HPP_NAMESPACE::Extent3D               extent_ = {} ) VULKAN_HPP_NOEXCEPT
15770       : srcSubresource( srcSubresource_ )
15771       , srcOffset( srcOffset_ )
15772       , dstSubresource( dstSubresource_ )
15773       , dstOffset( dstOffset_ )
15774       , extent( extent_ )
15775     {}
15776 
15777     VULKAN_HPP_CONSTEXPR ImageCopy2KHR( ImageCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15778 
ImageCopy2KHRVULKAN_HPP_NAMESPACE::ImageCopy2KHR15779     ImageCopy2KHR( VkImageCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
15780       : ImageCopy2KHR( *reinterpret_cast<ImageCopy2KHR const *>( &rhs ) )
15781     {}
15782 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
15783 
15784     ImageCopy2KHR & operator=( ImageCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15785 
operator =VULKAN_HPP_NAMESPACE::ImageCopy2KHR15786     ImageCopy2KHR & operator=( VkImageCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
15787     {
15788       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageCopy2KHR const *>( &rhs );
15789       return *this;
15790     }
15791 
15792 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageCopy2KHR15793     VULKAN_HPP_CONSTEXPR_14 ImageCopy2KHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
15794     {
15795       pNext = pNext_;
15796       return *this;
15797     }
15798 
15799     VULKAN_HPP_CONSTEXPR_14 ImageCopy2KHR &
setSrcSubresourceVULKAN_HPP_NAMESPACE::ImageCopy2KHR15800       setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT
15801     {
15802       srcSubresource = srcSubresource_;
15803       return *this;
15804     }
15805 
15806     VULKAN_HPP_CONSTEXPR_14 ImageCopy2KHR &
setSrcOffsetVULKAN_HPP_NAMESPACE::ImageCopy2KHR15807                             setSrcOffset( VULKAN_HPP_NAMESPACE::Offset3D const & srcOffset_ ) VULKAN_HPP_NOEXCEPT
15808     {
15809       srcOffset = srcOffset_;
15810       return *this;
15811     }
15812 
15813     VULKAN_HPP_CONSTEXPR_14 ImageCopy2KHR &
setDstSubresourceVULKAN_HPP_NAMESPACE::ImageCopy2KHR15814       setDstSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & dstSubresource_ ) VULKAN_HPP_NOEXCEPT
15815     {
15816       dstSubresource = dstSubresource_;
15817       return *this;
15818     }
15819 
15820     VULKAN_HPP_CONSTEXPR_14 ImageCopy2KHR &
setDstOffsetVULKAN_HPP_NAMESPACE::ImageCopy2KHR15821                             setDstOffset( VULKAN_HPP_NAMESPACE::Offset3D const & dstOffset_ ) VULKAN_HPP_NOEXCEPT
15822     {
15823       dstOffset = dstOffset_;
15824       return *this;
15825     }
15826 
15827     VULKAN_HPP_CONSTEXPR_14 ImageCopy2KHR &
setExtentVULKAN_HPP_NAMESPACE::ImageCopy2KHR15828                             setExtent( VULKAN_HPP_NAMESPACE::Extent3D const & extent_ ) VULKAN_HPP_NOEXCEPT
15829     {
15830       extent = extent_;
15831       return *this;
15832     }
15833 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
15834 
operator VkImageCopy2KHR const&VULKAN_HPP_NAMESPACE::ImageCopy2KHR15835     explicit operator VkImageCopy2KHR const &() const VULKAN_HPP_NOEXCEPT
15836     {
15837       return *reinterpret_cast<const VkImageCopy2KHR *>( this );
15838     }
15839 
operator VkImageCopy2KHR&VULKAN_HPP_NAMESPACE::ImageCopy2KHR15840     explicit operator VkImageCopy2KHR &() VULKAN_HPP_NOEXCEPT
15841     {
15842       return *reinterpret_cast<VkImageCopy2KHR *>( this );
15843     }
15844 
15845 #if 14 <= VULKAN_HPP_CPP_VERSION
15846     auto
15847 #else
15848     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
15849                const void * const &,
15850                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
15851                VULKAN_HPP_NAMESPACE::Offset3D const &,
15852                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
15853                VULKAN_HPP_NAMESPACE::Offset3D const &,
15854                VULKAN_HPP_NAMESPACE::Extent3D const &>
15855 #endif
reflectVULKAN_HPP_NAMESPACE::ImageCopy2KHR15856       reflect() const VULKAN_HPP_NOEXCEPT
15857     {
15858       return std::tie( sType, pNext, srcSubresource, srcOffset, dstSubresource, dstOffset, extent );
15859     }
15860 
15861 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
15862     auto operator<=>( ImageCopy2KHR const & ) const = default;
15863 #else
operator ==VULKAN_HPP_NAMESPACE::ImageCopy2KHR15864     bool operator==( ImageCopy2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
15865     {
15866       return this->reflect() == rhs.reflect();
15867     }
15868 
operator !=VULKAN_HPP_NAMESPACE::ImageCopy2KHR15869     bool operator!=( ImageCopy2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
15870     {
15871       return this->reflect() != rhs.reflect();
15872     }
15873 #endif
15874 
15875   public:
15876     VULKAN_HPP_NAMESPACE::StructureType          sType          = StructureType::eImageCopy2KHR;
15877     const void *                                 pNext          = {};
15878     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource = {};
15879     VULKAN_HPP_NAMESPACE::Offset3D               srcOffset      = {};
15880     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource = {};
15881     VULKAN_HPP_NAMESPACE::Offset3D               dstOffset      = {};
15882     VULKAN_HPP_NAMESPACE::Extent3D               extent         = {};
15883   };
15884   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageCopy2KHR ) == sizeof( VkImageCopy2KHR ),
15885                             "struct and wrapper have different size!" );
15886   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImageCopy2KHR>::value,
15887                             "struct wrapper is not a standard layout!" );
15888   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImageCopy2KHR>::value,
15889                             "ImageCopy2KHR is not nothrow_move_constructible!" );
15890 
15891   template <>
15892   struct CppType<StructureType, StructureType::eImageCopy2KHR>
15893   {
15894     using Type = ImageCopy2KHR;
15895   };
15896 
15897   struct CopyImageInfo2KHR
15898   {
15899     using NativeType = VkCopyImageInfo2KHR;
15900 
15901     static const bool                                  allowDuplicate = false;
15902     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCopyImageInfo2KHR;
15903 
15904 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyImageInfo2KHRVULKAN_HPP_NAMESPACE::CopyImageInfo2KHR15905     VULKAN_HPP_CONSTEXPR CopyImageInfo2KHR(
15906       VULKAN_HPP_NAMESPACE::Image                 srcImage_       = {},
15907       VULKAN_HPP_NAMESPACE::ImageLayout           srcImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
15908       VULKAN_HPP_NAMESPACE::Image                 dstImage_       = {},
15909       VULKAN_HPP_NAMESPACE::ImageLayout           dstImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
15910       uint32_t                                    regionCount_    = {},
15911       const VULKAN_HPP_NAMESPACE::ImageCopy2KHR * pRegions_       = {} ) VULKAN_HPP_NOEXCEPT
15912       : srcImage( srcImage_ )
15913       , srcImageLayout( srcImageLayout_ )
15914       , dstImage( dstImage_ )
15915       , dstImageLayout( dstImageLayout_ )
15916       , regionCount( regionCount_ )
15917       , pRegions( pRegions_ )
15918     {}
15919 
15920     VULKAN_HPP_CONSTEXPR CopyImageInfo2KHR( CopyImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15921 
CopyImageInfo2KHRVULKAN_HPP_NAMESPACE::CopyImageInfo2KHR15922     CopyImageInfo2KHR( VkCopyImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
15923       : CopyImageInfo2KHR( *reinterpret_cast<CopyImageInfo2KHR const *>( &rhs ) )
15924     {}
15925 
15926 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
CopyImageInfo2KHRVULKAN_HPP_NAMESPACE::CopyImageInfo2KHR15927     CopyImageInfo2KHR(
15928       VULKAN_HPP_NAMESPACE::Image                                                                      srcImage_,
15929       VULKAN_HPP_NAMESPACE::ImageLayout                                                                srcImageLayout_,
15930       VULKAN_HPP_NAMESPACE::Image                                                                      dstImage_,
15931       VULKAN_HPP_NAMESPACE::ImageLayout                                                                dstImageLayout_,
15932       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageCopy2KHR> const & regions_ )
15933       : srcImage( srcImage_ )
15934       , srcImageLayout( srcImageLayout_ )
15935       , dstImage( dstImage_ )
15936       , dstImageLayout( dstImageLayout_ )
15937       , regionCount( static_cast<uint32_t>( regions_.size() ) )
15938       , pRegions( regions_.data() )
15939     {}
15940 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
15941 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
15942 
15943     CopyImageInfo2KHR & operator=( CopyImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15944 
operator =VULKAN_HPP_NAMESPACE::CopyImageInfo2KHR15945     CopyImageInfo2KHR & operator=( VkCopyImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
15946     {
15947       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyImageInfo2KHR const *>( &rhs );
15948       return *this;
15949     }
15950 
15951 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyImageInfo2KHR15952     VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2KHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
15953     {
15954       pNext = pNext_;
15955       return *this;
15956     }
15957 
setSrcImageVULKAN_HPP_NAMESPACE::CopyImageInfo2KHR15958     VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2KHR & setSrcImage( VULKAN_HPP_NAMESPACE::Image srcImage_ ) VULKAN_HPP_NOEXCEPT
15959     {
15960       srcImage = srcImage_;
15961       return *this;
15962     }
15963 
15964     VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2KHR &
setSrcImageLayoutVULKAN_HPP_NAMESPACE::CopyImageInfo2KHR15965                             setSrcImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ ) VULKAN_HPP_NOEXCEPT
15966     {
15967       srcImageLayout = srcImageLayout_;
15968       return *this;
15969     }
15970 
setDstImageVULKAN_HPP_NAMESPACE::CopyImageInfo2KHR15971     VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2KHR & setDstImage( VULKAN_HPP_NAMESPACE::Image dstImage_ ) VULKAN_HPP_NOEXCEPT
15972     {
15973       dstImage = dstImage_;
15974       return *this;
15975     }
15976 
15977     VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2KHR &
setDstImageLayoutVULKAN_HPP_NAMESPACE::CopyImageInfo2KHR15978                             setDstImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ ) VULKAN_HPP_NOEXCEPT
15979     {
15980       dstImageLayout = dstImageLayout_;
15981       return *this;
15982     }
15983 
setRegionCountVULKAN_HPP_NAMESPACE::CopyImageInfo2KHR15984     VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2KHR & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT
15985     {
15986       regionCount = regionCount_;
15987       return *this;
15988     }
15989 
15990     VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2KHR &
setPRegionsVULKAN_HPP_NAMESPACE::CopyImageInfo2KHR15991                             setPRegions( const VULKAN_HPP_NAMESPACE::ImageCopy2KHR * pRegions_ ) VULKAN_HPP_NOEXCEPT
15992     {
15993       pRegions = pRegions_;
15994       return *this;
15995     }
15996 
15997 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setRegionsVULKAN_HPP_NAMESPACE::CopyImageInfo2KHR15998     CopyImageInfo2KHR & setRegions(
15999       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageCopy2KHR> const & regions_ )
16000       VULKAN_HPP_NOEXCEPT
16001     {
16002       regionCount = static_cast<uint32_t>( regions_.size() );
16003       pRegions    = regions_.data();
16004       return *this;
16005     }
16006 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
16007 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
16008 
operator VkCopyImageInfo2KHR const&VULKAN_HPP_NAMESPACE::CopyImageInfo2KHR16009     explicit operator VkCopyImageInfo2KHR const &() const VULKAN_HPP_NOEXCEPT
16010     {
16011       return *reinterpret_cast<const VkCopyImageInfo2KHR *>( this );
16012     }
16013 
operator VkCopyImageInfo2KHR&VULKAN_HPP_NAMESPACE::CopyImageInfo2KHR16014     explicit operator VkCopyImageInfo2KHR &() VULKAN_HPP_NOEXCEPT
16015     {
16016       return *reinterpret_cast<VkCopyImageInfo2KHR *>( this );
16017     }
16018 
16019 #if 14 <= VULKAN_HPP_CPP_VERSION
16020     auto
16021 #else
16022     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
16023                const void * const &,
16024                VULKAN_HPP_NAMESPACE::Image const &,
16025                VULKAN_HPP_NAMESPACE::ImageLayout const &,
16026                VULKAN_HPP_NAMESPACE::Image const &,
16027                VULKAN_HPP_NAMESPACE::ImageLayout const &,
16028                uint32_t const &,
16029                const VULKAN_HPP_NAMESPACE::ImageCopy2KHR * const &>
16030 #endif
reflectVULKAN_HPP_NAMESPACE::CopyImageInfo2KHR16031       reflect() const VULKAN_HPP_NOEXCEPT
16032     {
16033       return std::tie( sType, pNext, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions );
16034     }
16035 
16036 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
16037     auto operator<=>( CopyImageInfo2KHR const & ) const = default;
16038 #else
operator ==VULKAN_HPP_NAMESPACE::CopyImageInfo2KHR16039     bool operator==( CopyImageInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
16040     {
16041       return this->reflect() == rhs.reflect();
16042     }
16043 
operator !=VULKAN_HPP_NAMESPACE::CopyImageInfo2KHR16044     bool operator!=( CopyImageInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
16045     {
16046       return this->reflect() != rhs.reflect();
16047     }
16048 #endif
16049 
16050   public:
16051     VULKAN_HPP_NAMESPACE::StructureType         sType          = StructureType::eCopyImageInfo2KHR;
16052     const void *                                pNext          = {};
16053     VULKAN_HPP_NAMESPACE::Image                 srcImage       = {};
16054     VULKAN_HPP_NAMESPACE::ImageLayout           srcImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
16055     VULKAN_HPP_NAMESPACE::Image                 dstImage       = {};
16056     VULKAN_HPP_NAMESPACE::ImageLayout           dstImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
16057     uint32_t                                    regionCount    = {};
16058     const VULKAN_HPP_NAMESPACE::ImageCopy2KHR * pRegions       = {};
16059   };
16060   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyImageInfo2KHR ) == sizeof( VkCopyImageInfo2KHR ),
16061                             "struct and wrapper have different size!" );
16062   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::CopyImageInfo2KHR>::value,
16063                             "struct wrapper is not a standard layout!" );
16064   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::CopyImageInfo2KHR>::value,
16065                             "CopyImageInfo2KHR is not nothrow_move_constructible!" );
16066 
16067   template <>
16068   struct CppType<StructureType, StructureType::eCopyImageInfo2KHR>
16069   {
16070     using Type = CopyImageInfo2KHR;
16071   };
16072 
16073   struct CopyImageToBufferInfo2KHR
16074   {
16075     using NativeType = VkCopyImageToBufferInfo2KHR;
16076 
16077     static const bool                                  allowDuplicate = false;
16078     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCopyImageToBufferInfo2KHR;
16079 
16080 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyImageToBufferInfo2KHRVULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2KHR16081     VULKAN_HPP_CONSTEXPR CopyImageToBufferInfo2KHR(
16082       VULKAN_HPP_NAMESPACE::Image                       srcImage_       = {},
16083       VULKAN_HPP_NAMESPACE::ImageLayout                 srcImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
16084       VULKAN_HPP_NAMESPACE::Buffer                      dstBuffer_      = {},
16085       uint32_t                                          regionCount_    = {},
16086       const VULKAN_HPP_NAMESPACE::BufferImageCopy2KHR * pRegions_       = {} ) VULKAN_HPP_NOEXCEPT
16087       : srcImage( srcImage_ )
16088       , srcImageLayout( srcImageLayout_ )
16089       , dstBuffer( dstBuffer_ )
16090       , regionCount( regionCount_ )
16091       , pRegions( pRegions_ )
16092     {}
16093 
16094     VULKAN_HPP_CONSTEXPR
16095       CopyImageToBufferInfo2KHR( CopyImageToBufferInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16096 
CopyImageToBufferInfo2KHRVULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2KHR16097     CopyImageToBufferInfo2KHR( VkCopyImageToBufferInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
16098       : CopyImageToBufferInfo2KHR( *reinterpret_cast<CopyImageToBufferInfo2KHR const *>( &rhs ) )
16099     {}
16100 
16101 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
CopyImageToBufferInfo2KHRVULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2KHR16102     CopyImageToBufferInfo2KHR(
16103       VULKAN_HPP_NAMESPACE::Image       srcImage_,
16104       VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_,
16105       VULKAN_HPP_NAMESPACE::Buffer      dstBuffer_,
16106       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferImageCopy2KHR> const & regions_ )
16107       : srcImage( srcImage_ )
16108       , srcImageLayout( srcImageLayout_ )
16109       , dstBuffer( dstBuffer_ )
16110       , regionCount( static_cast<uint32_t>( regions_.size() ) )
16111       , pRegions( regions_.data() )
16112     {}
16113 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
16114 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
16115 
16116     CopyImageToBufferInfo2KHR & operator=( CopyImageToBufferInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16117 
operator =VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2KHR16118     CopyImageToBufferInfo2KHR & operator=( VkCopyImageToBufferInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
16119     {
16120       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2KHR const *>( &rhs );
16121       return *this;
16122     }
16123 
16124 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2KHR16125     VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2KHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
16126     {
16127       pNext = pNext_;
16128       return *this;
16129     }
16130 
16131     VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2KHR &
setSrcImageVULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2KHR16132                             setSrcImage( VULKAN_HPP_NAMESPACE::Image srcImage_ ) VULKAN_HPP_NOEXCEPT
16133     {
16134       srcImage = srcImage_;
16135       return *this;
16136     }
16137 
16138     VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2KHR &
setSrcImageLayoutVULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2KHR16139                             setSrcImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ ) VULKAN_HPP_NOEXCEPT
16140     {
16141       srcImageLayout = srcImageLayout_;
16142       return *this;
16143     }
16144 
16145     VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2KHR &
setDstBufferVULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2KHR16146                             setDstBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer_ ) VULKAN_HPP_NOEXCEPT
16147     {
16148       dstBuffer = dstBuffer_;
16149       return *this;
16150     }
16151 
setRegionCountVULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2KHR16152     VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2KHR & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT
16153     {
16154       regionCount = regionCount_;
16155       return *this;
16156     }
16157 
16158     VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2KHR &
setPRegionsVULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2KHR16159       setPRegions( const VULKAN_HPP_NAMESPACE::BufferImageCopy2KHR * pRegions_ ) VULKAN_HPP_NOEXCEPT
16160     {
16161       pRegions = pRegions_;
16162       return *this;
16163     }
16164 
16165 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setRegionsVULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2KHR16166     CopyImageToBufferInfo2KHR & setRegions(
16167       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferImageCopy2KHR> const & regions_ )
16168       VULKAN_HPP_NOEXCEPT
16169     {
16170       regionCount = static_cast<uint32_t>( regions_.size() );
16171       pRegions    = regions_.data();
16172       return *this;
16173     }
16174 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
16175 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
16176 
operator VkCopyImageToBufferInfo2KHR const&VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2KHR16177     explicit operator VkCopyImageToBufferInfo2KHR const &() const VULKAN_HPP_NOEXCEPT
16178     {
16179       return *reinterpret_cast<const VkCopyImageToBufferInfo2KHR *>( this );
16180     }
16181 
operator VkCopyImageToBufferInfo2KHR&VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2KHR16182     explicit operator VkCopyImageToBufferInfo2KHR &() VULKAN_HPP_NOEXCEPT
16183     {
16184       return *reinterpret_cast<VkCopyImageToBufferInfo2KHR *>( this );
16185     }
16186 
16187 #if 14 <= VULKAN_HPP_CPP_VERSION
16188     auto
16189 #else
16190     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
16191                const void * const &,
16192                VULKAN_HPP_NAMESPACE::Image const &,
16193                VULKAN_HPP_NAMESPACE::ImageLayout const &,
16194                VULKAN_HPP_NAMESPACE::Buffer const &,
16195                uint32_t const &,
16196                const VULKAN_HPP_NAMESPACE::BufferImageCopy2KHR * const &>
16197 #endif
reflectVULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2KHR16198       reflect() const VULKAN_HPP_NOEXCEPT
16199     {
16200       return std::tie( sType, pNext, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions );
16201     }
16202 
16203 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
16204     auto operator<=>( CopyImageToBufferInfo2KHR const & ) const = default;
16205 #else
operator ==VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2KHR16206     bool operator==( CopyImageToBufferInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
16207     {
16208       return this->reflect() == rhs.reflect();
16209     }
16210 
operator !=VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2KHR16211     bool operator!=( CopyImageToBufferInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
16212     {
16213       return this->reflect() != rhs.reflect();
16214     }
16215 #endif
16216 
16217   public:
16218     VULKAN_HPP_NAMESPACE::StructureType               sType          = StructureType::eCopyImageToBufferInfo2KHR;
16219     const void *                                      pNext          = {};
16220     VULKAN_HPP_NAMESPACE::Image                       srcImage       = {};
16221     VULKAN_HPP_NAMESPACE::ImageLayout                 srcImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
16222     VULKAN_HPP_NAMESPACE::Buffer                      dstBuffer      = {};
16223     uint32_t                                          regionCount    = {};
16224     const VULKAN_HPP_NAMESPACE::BufferImageCopy2KHR * pRegions       = {};
16225   };
16226   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2KHR ) ==
16227                               sizeof( VkCopyImageToBufferInfo2KHR ),
16228                             "struct and wrapper have different size!" );
16229   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2KHR>::value,
16230                             "struct wrapper is not a standard layout!" );
16231   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2KHR>::value,
16232                             "CopyImageToBufferInfo2KHR is not nothrow_move_constructible!" );
16233 
16234   template <>
16235   struct CppType<StructureType, StructureType::eCopyImageToBufferInfo2KHR>
16236   {
16237     using Type = CopyImageToBufferInfo2KHR;
16238   };
16239 
16240   struct CopyMemoryToAccelerationStructureInfoKHR
16241   {
16242     using NativeType = VkCopyMemoryToAccelerationStructureInfoKHR;
16243 
16244     static const bool                                  allowDuplicate = false;
16245     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
16246       StructureType::eCopyMemoryToAccelerationStructureInfoKHR;
16247 
16248 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyMemoryToAccelerationStructureInfoKHRVULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR16249     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToAccelerationStructureInfoKHR(
16250       VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR      src_ = {},
16251       VULKAN_HPP_NAMESPACE::AccelerationStructureKHR         dst_ = {},
16252       VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode_ =
16253         VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR::eClone ) VULKAN_HPP_NOEXCEPT
16254       : src( src_ )
16255       , dst( dst_ )
16256       , mode( mode_ )
16257     {}
16258 
16259     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToAccelerationStructureInfoKHR(
16260       CopyMemoryToAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16261 
CopyMemoryToAccelerationStructureInfoKHRVULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR16262     CopyMemoryToAccelerationStructureInfoKHR( VkCopyMemoryToAccelerationStructureInfoKHR const & rhs )
16263       VULKAN_HPP_NOEXCEPT
16264       : CopyMemoryToAccelerationStructureInfoKHR(
16265           *reinterpret_cast<CopyMemoryToAccelerationStructureInfoKHR const *>( &rhs ) )
16266     {}
16267 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
16268 
16269     CopyMemoryToAccelerationStructureInfoKHR &
16270       operator=( CopyMemoryToAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16271 
16272     CopyMemoryToAccelerationStructureInfoKHR &
operator =VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR16273       operator=( VkCopyMemoryToAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
16274     {
16275       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR const *>( &rhs );
16276       return *this;
16277     }
16278 
16279 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
16280     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToAccelerationStructureInfoKHR &
setPNextVULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR16281                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
16282     {
16283       pNext = pNext_;
16284       return *this;
16285     }
16286 
16287     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToAccelerationStructureInfoKHR &
setSrcVULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR16288                             setSrc( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & src_ ) VULKAN_HPP_NOEXCEPT
16289     {
16290       src = src_;
16291       return *this;
16292     }
16293 
16294     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToAccelerationStructureInfoKHR &
setDstVULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR16295                             setDst( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR dst_ ) VULKAN_HPP_NOEXCEPT
16296     {
16297       dst = dst_;
16298       return *this;
16299     }
16300 
16301     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToAccelerationStructureInfoKHR &
setModeVULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR16302                             setMode( VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode_ ) VULKAN_HPP_NOEXCEPT
16303     {
16304       mode = mode_;
16305       return *this;
16306     }
16307 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
16308 
operator VkCopyMemoryToAccelerationStructureInfoKHR const&VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR16309     explicit operator VkCopyMemoryToAccelerationStructureInfoKHR const &() const VULKAN_HPP_NOEXCEPT
16310     {
16311       return *reinterpret_cast<const VkCopyMemoryToAccelerationStructureInfoKHR *>( this );
16312     }
16313 
operator VkCopyMemoryToAccelerationStructureInfoKHR&VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR16314     explicit operator VkCopyMemoryToAccelerationStructureInfoKHR &() VULKAN_HPP_NOEXCEPT
16315     {
16316       return *reinterpret_cast<VkCopyMemoryToAccelerationStructureInfoKHR *>( this );
16317     }
16318 
16319 #if 14 <= VULKAN_HPP_CPP_VERSION
16320     auto
16321 #else
16322     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
16323                const void * const &,
16324                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const &,
16325                VULKAN_HPP_NAMESPACE::AccelerationStructureKHR const &,
16326                VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR const &>
16327 #endif
reflectVULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR16328       reflect() const VULKAN_HPP_NOEXCEPT
16329     {
16330       return std::tie( sType, pNext, src, dst, mode );
16331     }
16332 
16333   public:
16334     VULKAN_HPP_NAMESPACE::StructureType               sType = StructureType::eCopyMemoryToAccelerationStructureInfoKHR;
16335     const void *                                      pNext = {};
16336     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR src   = {};
16337     VULKAN_HPP_NAMESPACE::AccelerationStructureKHR    dst   = {};
16338     VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode =
16339       VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR::eClone;
16340   };
16341   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR ) ==
16342                               sizeof( VkCopyMemoryToAccelerationStructureInfoKHR ),
16343                             "struct and wrapper have different size!" );
16344   VULKAN_HPP_STATIC_ASSERT(
16345     std::is_standard_layout<VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR>::value,
16346     "struct wrapper is not a standard layout!" );
16347   VULKAN_HPP_STATIC_ASSERT(
16348     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR>::value,
16349     "CopyMemoryToAccelerationStructureInfoKHR is not nothrow_move_constructible!" );
16350 
16351   template <>
16352   struct CppType<StructureType, StructureType::eCopyMemoryToAccelerationStructureInfoKHR>
16353   {
16354     using Type = CopyMemoryToAccelerationStructureInfoKHR;
16355   };
16356 
16357   struct CuFunctionCreateInfoNVX
16358   {
16359     using NativeType = VkCuFunctionCreateInfoNVX;
16360 
16361     static const bool                                  allowDuplicate = false;
16362     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCuFunctionCreateInfoNVX;
16363 
16364 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CuFunctionCreateInfoNVXVULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX16365     VULKAN_HPP_CONSTEXPR CuFunctionCreateInfoNVX( VULKAN_HPP_NAMESPACE::CuModuleNVX module_ = {},
16366                                                   const char *                      pName_  = {} ) VULKAN_HPP_NOEXCEPT
16367       : module( module_ )
16368       , pName( pName_ )
16369     {}
16370 
16371     VULKAN_HPP_CONSTEXPR CuFunctionCreateInfoNVX( CuFunctionCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16372 
CuFunctionCreateInfoNVXVULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX16373     CuFunctionCreateInfoNVX( VkCuFunctionCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT
16374       : CuFunctionCreateInfoNVX( *reinterpret_cast<CuFunctionCreateInfoNVX const *>( &rhs ) )
16375     {}
16376 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
16377 
16378     CuFunctionCreateInfoNVX & operator=( CuFunctionCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16379 
operator =VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX16380     CuFunctionCreateInfoNVX & operator=( VkCuFunctionCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT
16381     {
16382       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX const *>( &rhs );
16383       return *this;
16384     }
16385 
16386 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX16387     VULKAN_HPP_CONSTEXPR_14 CuFunctionCreateInfoNVX & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
16388     {
16389       pNext = pNext_;
16390       return *this;
16391     }
16392 
16393     VULKAN_HPP_CONSTEXPR_14 CuFunctionCreateInfoNVX &
setModuleVULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX16394                             setModule( VULKAN_HPP_NAMESPACE::CuModuleNVX module_ ) VULKAN_HPP_NOEXCEPT
16395     {
16396       module = module_;
16397       return *this;
16398     }
16399 
setPNameVULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX16400     VULKAN_HPP_CONSTEXPR_14 CuFunctionCreateInfoNVX & setPName( const char * pName_ ) VULKAN_HPP_NOEXCEPT
16401     {
16402       pName = pName_;
16403       return *this;
16404     }
16405 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
16406 
operator VkCuFunctionCreateInfoNVX const&VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX16407     explicit operator VkCuFunctionCreateInfoNVX const &() const VULKAN_HPP_NOEXCEPT
16408     {
16409       return *reinterpret_cast<const VkCuFunctionCreateInfoNVX *>( this );
16410     }
16411 
operator VkCuFunctionCreateInfoNVX&VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX16412     explicit operator VkCuFunctionCreateInfoNVX &() VULKAN_HPP_NOEXCEPT
16413     {
16414       return *reinterpret_cast<VkCuFunctionCreateInfoNVX *>( this );
16415     }
16416 
16417 #if 14 <= VULKAN_HPP_CPP_VERSION
16418     auto
16419 #else
16420     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
16421                const void * const &,
16422                VULKAN_HPP_NAMESPACE::CuModuleNVX const &,
16423                const char * const &>
16424 #endif
reflectVULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX16425       reflect() const VULKAN_HPP_NOEXCEPT
16426     {
16427       return std::tie( sType, pNext, module, pName );
16428     }
16429 
16430 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
16431     auto operator<=>( CuFunctionCreateInfoNVX const & ) const = default;
16432 #else
operator ==VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX16433     bool operator==( CuFunctionCreateInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
16434     {
16435       return this->reflect() == rhs.reflect();
16436     }
16437 
operator !=VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX16438     bool operator!=( CuFunctionCreateInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
16439     {
16440       return this->reflect() != rhs.reflect();
16441     }
16442 #endif
16443 
16444   public:
16445     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eCuFunctionCreateInfoNVX;
16446     const void *                        pNext  = {};
16447     VULKAN_HPP_NAMESPACE::CuModuleNVX   module = {};
16448     const char *                        pName  = {};
16449   };
16450   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX ) ==
16451                               sizeof( VkCuFunctionCreateInfoNVX ),
16452                             "struct and wrapper have different size!" );
16453   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX>::value,
16454                             "struct wrapper is not a standard layout!" );
16455   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX>::value,
16456                             "CuFunctionCreateInfoNVX is not nothrow_move_constructible!" );
16457 
16458   template <>
16459   struct CppType<StructureType, StructureType::eCuFunctionCreateInfoNVX>
16460   {
16461     using Type = CuFunctionCreateInfoNVX;
16462   };
16463 
16464   struct CuLaunchInfoNVX
16465   {
16466     using NativeType = VkCuLaunchInfoNVX;
16467 
16468     static const bool                                  allowDuplicate = false;
16469     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCuLaunchInfoNVX;
16470 
16471 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CuLaunchInfoNVXVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX16472     VULKAN_HPP_CONSTEXPR CuLaunchInfoNVX( VULKAN_HPP_NAMESPACE::CuFunctionNVX function_       = {},
16473                                           uint32_t                            gridDimX_       = {},
16474                                           uint32_t                            gridDimY_       = {},
16475                                           uint32_t                            gridDimZ_       = {},
16476                                           uint32_t                            blockDimX_      = {},
16477                                           uint32_t                            blockDimY_      = {},
16478                                           uint32_t                            blockDimZ_      = {},
16479                                           uint32_t                            sharedMemBytes_ = {},
16480                                           size_t                              paramCount_     = {},
16481                                           const void * const *                pParams_        = {},
16482                                           size_t                              extraCount_     = {},
16483                                           const void * const *                pExtras_        = {} ) VULKAN_HPP_NOEXCEPT
16484       : function( function_ )
16485       , gridDimX( gridDimX_ )
16486       , gridDimY( gridDimY_ )
16487       , gridDimZ( gridDimZ_ )
16488       , blockDimX( blockDimX_ )
16489       , blockDimY( blockDimY_ )
16490       , blockDimZ( blockDimZ_ )
16491       , sharedMemBytes( sharedMemBytes_ )
16492       , paramCount( paramCount_ )
16493       , pParams( pParams_ )
16494       , extraCount( extraCount_ )
16495       , pExtras( pExtras_ )
16496     {}
16497 
16498     VULKAN_HPP_CONSTEXPR CuLaunchInfoNVX( CuLaunchInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16499 
CuLaunchInfoNVXVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX16500     CuLaunchInfoNVX( VkCuLaunchInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT
16501       : CuLaunchInfoNVX( *reinterpret_cast<CuLaunchInfoNVX const *>( &rhs ) )
16502     {}
16503 
16504 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
CuLaunchInfoNVXVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX16505     CuLaunchInfoNVX( VULKAN_HPP_NAMESPACE::CuFunctionNVX                                       function_,
16506                      uint32_t                                                                  gridDimX_,
16507                      uint32_t                                                                  gridDimY_,
16508                      uint32_t                                                                  gridDimZ_,
16509                      uint32_t                                                                  blockDimX_,
16510                      uint32_t                                                                  blockDimY_,
16511                      uint32_t                                                                  blockDimZ_,
16512                      uint32_t                                                                  sharedMemBytes_,
16513                      VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const void * const> const & params_,
16514                      VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const void * const> const & extras_ = {} )
16515       : function( function_ )
16516       , gridDimX( gridDimX_ )
16517       , gridDimY( gridDimY_ )
16518       , gridDimZ( gridDimZ_ )
16519       , blockDimX( blockDimX_ )
16520       , blockDimY( blockDimY_ )
16521       , blockDimZ( blockDimZ_ )
16522       , sharedMemBytes( sharedMemBytes_ )
16523       , paramCount( params_.size() )
16524       , pParams( params_.data() )
16525       , extraCount( extras_.size() )
16526       , pExtras( extras_.data() )
16527     {}
16528 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
16529 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
16530 
16531     CuLaunchInfoNVX & operator=( CuLaunchInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16532 
operator =VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX16533     CuLaunchInfoNVX & operator=( VkCuLaunchInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT
16534     {
16535       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX const *>( &rhs );
16536       return *this;
16537     }
16538 
16539 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX16540     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
16541     {
16542       pNext = pNext_;
16543       return *this;
16544     }
16545 
16546     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX &
setFunctionVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX16547                             setFunction( VULKAN_HPP_NAMESPACE::CuFunctionNVX function_ ) VULKAN_HPP_NOEXCEPT
16548     {
16549       function = function_;
16550       return *this;
16551     }
16552 
setGridDimXVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX16553     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setGridDimX( uint32_t gridDimX_ ) VULKAN_HPP_NOEXCEPT
16554     {
16555       gridDimX = gridDimX_;
16556       return *this;
16557     }
16558 
setGridDimYVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX16559     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setGridDimY( uint32_t gridDimY_ ) VULKAN_HPP_NOEXCEPT
16560     {
16561       gridDimY = gridDimY_;
16562       return *this;
16563     }
16564 
setGridDimZVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX16565     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setGridDimZ( uint32_t gridDimZ_ ) VULKAN_HPP_NOEXCEPT
16566     {
16567       gridDimZ = gridDimZ_;
16568       return *this;
16569     }
16570 
setBlockDimXVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX16571     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setBlockDimX( uint32_t blockDimX_ ) VULKAN_HPP_NOEXCEPT
16572     {
16573       blockDimX = blockDimX_;
16574       return *this;
16575     }
16576 
setBlockDimYVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX16577     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setBlockDimY( uint32_t blockDimY_ ) VULKAN_HPP_NOEXCEPT
16578     {
16579       blockDimY = blockDimY_;
16580       return *this;
16581     }
16582 
setBlockDimZVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX16583     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setBlockDimZ( uint32_t blockDimZ_ ) VULKAN_HPP_NOEXCEPT
16584     {
16585       blockDimZ = blockDimZ_;
16586       return *this;
16587     }
16588 
setSharedMemBytesVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX16589     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setSharedMemBytes( uint32_t sharedMemBytes_ ) VULKAN_HPP_NOEXCEPT
16590     {
16591       sharedMemBytes = sharedMemBytes_;
16592       return *this;
16593     }
16594 
setParamCountVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX16595     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setParamCount( size_t paramCount_ ) VULKAN_HPP_NOEXCEPT
16596     {
16597       paramCount = paramCount_;
16598       return *this;
16599     }
16600 
setPParamsVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX16601     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setPParams( const void * const * pParams_ ) VULKAN_HPP_NOEXCEPT
16602     {
16603       pParams = pParams_;
16604       return *this;
16605     }
16606 
16607 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
16608     CuLaunchInfoNVX &
setParamsVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX16609       setParams( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const void * const> const & params_ ) VULKAN_HPP_NOEXCEPT
16610     {
16611       paramCount = params_.size();
16612       pParams    = params_.data();
16613       return *this;
16614     }
16615 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
16616 
setExtraCountVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX16617     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setExtraCount( size_t extraCount_ ) VULKAN_HPP_NOEXCEPT
16618     {
16619       extraCount = extraCount_;
16620       return *this;
16621     }
16622 
setPExtrasVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX16623     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setPExtras( const void * const * pExtras_ ) VULKAN_HPP_NOEXCEPT
16624     {
16625       pExtras = pExtras_;
16626       return *this;
16627     }
16628 
16629 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
16630     CuLaunchInfoNVX &
setExtrasVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX16631       setExtras( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const void * const> const & extras_ ) VULKAN_HPP_NOEXCEPT
16632     {
16633       extraCount = extras_.size();
16634       pExtras    = extras_.data();
16635       return *this;
16636     }
16637 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
16638 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
16639 
operator VkCuLaunchInfoNVX const&VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX16640     explicit operator VkCuLaunchInfoNVX const &() const VULKAN_HPP_NOEXCEPT
16641     {
16642       return *reinterpret_cast<const VkCuLaunchInfoNVX *>( this );
16643     }
16644 
operator VkCuLaunchInfoNVX&VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX16645     explicit operator VkCuLaunchInfoNVX &() VULKAN_HPP_NOEXCEPT
16646     {
16647       return *reinterpret_cast<VkCuLaunchInfoNVX *>( this );
16648     }
16649 
16650 #if 14 <= VULKAN_HPP_CPP_VERSION
16651     auto
16652 #else
16653     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
16654                const void * const &,
16655                VULKAN_HPP_NAMESPACE::CuFunctionNVX const &,
16656                uint32_t const &,
16657                uint32_t const &,
16658                uint32_t const &,
16659                uint32_t const &,
16660                uint32_t const &,
16661                uint32_t const &,
16662                uint32_t const &,
16663                size_t const &,
16664                const void * const * const &,
16665                size_t const &,
16666                const void * const * const &>
16667 #endif
reflectVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX16668       reflect() const VULKAN_HPP_NOEXCEPT
16669     {
16670       return std::tie( sType,
16671                        pNext,
16672                        function,
16673                        gridDimX,
16674                        gridDimY,
16675                        gridDimZ,
16676                        blockDimX,
16677                        blockDimY,
16678                        blockDimZ,
16679                        sharedMemBytes,
16680                        paramCount,
16681                        pParams,
16682                        extraCount,
16683                        pExtras );
16684     }
16685 
16686 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
16687     auto operator<=>( CuLaunchInfoNVX const & ) const = default;
16688 #else
operator ==VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX16689     bool operator==( CuLaunchInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
16690     {
16691       return this->reflect() == rhs.reflect();
16692     }
16693 
operator !=VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX16694     bool operator!=( CuLaunchInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
16695     {
16696       return this->reflect() != rhs.reflect();
16697     }
16698 #endif
16699 
16700   public:
16701     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eCuLaunchInfoNVX;
16702     const void *                        pNext          = {};
16703     VULKAN_HPP_NAMESPACE::CuFunctionNVX function       = {};
16704     uint32_t                            gridDimX       = {};
16705     uint32_t                            gridDimY       = {};
16706     uint32_t                            gridDimZ       = {};
16707     uint32_t                            blockDimX      = {};
16708     uint32_t                            blockDimY      = {};
16709     uint32_t                            blockDimZ      = {};
16710     uint32_t                            sharedMemBytes = {};
16711     size_t                              paramCount     = {};
16712     const void * const *                pParams        = {};
16713     size_t                              extraCount     = {};
16714     const void * const *                pExtras        = {};
16715   };
16716   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX ) == sizeof( VkCuLaunchInfoNVX ),
16717                             "struct and wrapper have different size!" );
16718   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX>::value,
16719                             "struct wrapper is not a standard layout!" );
16720   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX>::value,
16721                             "CuLaunchInfoNVX is not nothrow_move_constructible!" );
16722 
16723   template <>
16724   struct CppType<StructureType, StructureType::eCuLaunchInfoNVX>
16725   {
16726     using Type = CuLaunchInfoNVX;
16727   };
16728 
16729   struct CuModuleCreateInfoNVX
16730   {
16731     using NativeType = VkCuModuleCreateInfoNVX;
16732 
16733     static const bool                                  allowDuplicate = false;
16734     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCuModuleCreateInfoNVX;
16735 
16736 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CuModuleCreateInfoNVXVULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX16737     VULKAN_HPP_CONSTEXPR CuModuleCreateInfoNVX( size_t dataSize_ = {}, const void * pData_ = {} ) VULKAN_HPP_NOEXCEPT
16738       : dataSize( dataSize_ )
16739       , pData( pData_ )
16740     {}
16741 
16742     VULKAN_HPP_CONSTEXPR CuModuleCreateInfoNVX( CuModuleCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16743 
CuModuleCreateInfoNVXVULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX16744     CuModuleCreateInfoNVX( VkCuModuleCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT
16745       : CuModuleCreateInfoNVX( *reinterpret_cast<CuModuleCreateInfoNVX const *>( &rhs ) )
16746     {}
16747 
16748 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
16749     template <typename T>
CuModuleCreateInfoNVXVULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX16750     CuModuleCreateInfoNVX( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & data_ )
16751       : dataSize( data_.size() * sizeof( T ) ), pData( data_.data() )
16752     {}
16753 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
16754 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
16755 
16756     CuModuleCreateInfoNVX & operator=( CuModuleCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16757 
operator =VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX16758     CuModuleCreateInfoNVX & operator=( VkCuModuleCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT
16759     {
16760       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX const *>( &rhs );
16761       return *this;
16762     }
16763 
16764 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX16765     VULKAN_HPP_CONSTEXPR_14 CuModuleCreateInfoNVX & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
16766     {
16767       pNext = pNext_;
16768       return *this;
16769     }
16770 
setDataSizeVULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX16771     VULKAN_HPP_CONSTEXPR_14 CuModuleCreateInfoNVX & setDataSize( size_t dataSize_ ) VULKAN_HPP_NOEXCEPT
16772     {
16773       dataSize = dataSize_;
16774       return *this;
16775     }
16776 
setPDataVULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX16777     VULKAN_HPP_CONSTEXPR_14 CuModuleCreateInfoNVX & setPData( const void * pData_ ) VULKAN_HPP_NOEXCEPT
16778     {
16779       pData = pData_;
16780       return *this;
16781     }
16782 
16783 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
16784     template <typename T>
16785     CuModuleCreateInfoNVX &
setDataVULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX16786       setData( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & data_ ) VULKAN_HPP_NOEXCEPT
16787     {
16788       dataSize = data_.size() * sizeof( T );
16789       pData    = data_.data();
16790       return *this;
16791     }
16792 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
16793 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
16794 
operator VkCuModuleCreateInfoNVX const&VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX16795     explicit operator VkCuModuleCreateInfoNVX const &() const VULKAN_HPP_NOEXCEPT
16796     {
16797       return *reinterpret_cast<const VkCuModuleCreateInfoNVX *>( this );
16798     }
16799 
operator VkCuModuleCreateInfoNVX&VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX16800     explicit operator VkCuModuleCreateInfoNVX &() VULKAN_HPP_NOEXCEPT
16801     {
16802       return *reinterpret_cast<VkCuModuleCreateInfoNVX *>( this );
16803     }
16804 
16805 #if 14 <= VULKAN_HPP_CPP_VERSION
16806     auto
16807 #else
16808     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, size_t const &, const void * const &>
16809 #endif
reflectVULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX16810       reflect() const VULKAN_HPP_NOEXCEPT
16811     {
16812       return std::tie( sType, pNext, dataSize, pData );
16813     }
16814 
16815 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
16816     auto operator<=>( CuModuleCreateInfoNVX const & ) const = default;
16817 #else
operator ==VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX16818     bool operator==( CuModuleCreateInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
16819     {
16820       return this->reflect() == rhs.reflect();
16821     }
16822 
operator !=VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX16823     bool operator!=( CuModuleCreateInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
16824     {
16825       return this->reflect() != rhs.reflect();
16826     }
16827 #endif
16828 
16829   public:
16830     VULKAN_HPP_NAMESPACE::StructureType sType    = StructureType::eCuModuleCreateInfoNVX;
16831     const void *                        pNext    = {};
16832     size_t                              dataSize = {};
16833     const void *                        pData    = {};
16834   };
16835   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX ) == sizeof( VkCuModuleCreateInfoNVX ),
16836                             "struct and wrapper have different size!" );
16837   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX>::value,
16838                             "struct wrapper is not a standard layout!" );
16839   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX>::value,
16840                             "CuModuleCreateInfoNVX is not nothrow_move_constructible!" );
16841 
16842   template <>
16843   struct CppType<StructureType, StructureType::eCuModuleCreateInfoNVX>
16844   {
16845     using Type = CuModuleCreateInfoNVX;
16846   };
16847 
16848 #if defined( VK_USE_PLATFORM_WIN32_KHR )
16849   struct D3D12FenceSubmitInfoKHR
16850   {
16851     using NativeType = VkD3D12FenceSubmitInfoKHR;
16852 
16853     static const bool                                  allowDuplicate = false;
16854     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eD3D12FenceSubmitInfoKHR;
16855 
16856 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
D3D12FenceSubmitInfoKHRVULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR16857     VULKAN_HPP_CONSTEXPR D3D12FenceSubmitInfoKHR( uint32_t         waitSemaphoreValuesCount_   = {},
16858                                                   const uint64_t * pWaitSemaphoreValues_       = {},
16859                                                   uint32_t         signalSemaphoreValuesCount_ = {},
16860                                                   const uint64_t * pSignalSemaphoreValues_ = {} ) VULKAN_HPP_NOEXCEPT
16861       : waitSemaphoreValuesCount( waitSemaphoreValuesCount_ )
16862       , pWaitSemaphoreValues( pWaitSemaphoreValues_ )
16863       , signalSemaphoreValuesCount( signalSemaphoreValuesCount_ )
16864       , pSignalSemaphoreValues( pSignalSemaphoreValues_ )
16865     {}
16866 
16867     VULKAN_HPP_CONSTEXPR D3D12FenceSubmitInfoKHR( D3D12FenceSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16868 
D3D12FenceSubmitInfoKHRVULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR16869     D3D12FenceSubmitInfoKHR( VkD3D12FenceSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
16870       : D3D12FenceSubmitInfoKHR( *reinterpret_cast<D3D12FenceSubmitInfoKHR const *>( &rhs ) )
16871     {}
16872 
16873 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
D3D12FenceSubmitInfoKHRVULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR16874     D3D12FenceSubmitInfoKHR(
16875       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & waitSemaphoreValues_,
16876       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & signalSemaphoreValues_ = {} )
16877       : waitSemaphoreValuesCount( static_cast<uint32_t>( waitSemaphoreValues_.size() ) )
16878       , pWaitSemaphoreValues( waitSemaphoreValues_.data() )
16879       , signalSemaphoreValuesCount( static_cast<uint32_t>( signalSemaphoreValues_.size() ) )
16880       , pSignalSemaphoreValues( signalSemaphoreValues_.data() )
16881     {}
16882 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
16883 #  endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
16884 
16885     D3D12FenceSubmitInfoKHR & operator=( D3D12FenceSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16886 
operator =VULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR16887     D3D12FenceSubmitInfoKHR & operator=( VkD3D12FenceSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
16888     {
16889       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR const *>( &rhs );
16890       return *this;
16891     }
16892 
16893 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR16894     VULKAN_HPP_CONSTEXPR_14 D3D12FenceSubmitInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
16895     {
16896       pNext = pNext_;
16897       return *this;
16898     }
16899 
16900     VULKAN_HPP_CONSTEXPR_14 D3D12FenceSubmitInfoKHR &
setWaitSemaphoreValuesCountVULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR16901                             setWaitSemaphoreValuesCount( uint32_t waitSemaphoreValuesCount_ ) VULKAN_HPP_NOEXCEPT
16902     {
16903       waitSemaphoreValuesCount = waitSemaphoreValuesCount_;
16904       return *this;
16905     }
16906 
16907     VULKAN_HPP_CONSTEXPR_14 D3D12FenceSubmitInfoKHR &
setPWaitSemaphoreValuesVULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR16908                             setPWaitSemaphoreValues( const uint64_t * pWaitSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT
16909     {
16910       pWaitSemaphoreValues = pWaitSemaphoreValues_;
16911       return *this;
16912     }
16913 
16914 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setWaitSemaphoreValuesVULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR16915     D3D12FenceSubmitInfoKHR & setWaitSemaphoreValues(
16916       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & waitSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT
16917     {
16918       waitSemaphoreValuesCount = static_cast<uint32_t>( waitSemaphoreValues_.size() );
16919       pWaitSemaphoreValues     = waitSemaphoreValues_.data();
16920       return *this;
16921     }
16922 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
16923 
16924     VULKAN_HPP_CONSTEXPR_14 D3D12FenceSubmitInfoKHR &
setSignalSemaphoreValuesCountVULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR16925                             setSignalSemaphoreValuesCount( uint32_t signalSemaphoreValuesCount_ ) VULKAN_HPP_NOEXCEPT
16926     {
16927       signalSemaphoreValuesCount = signalSemaphoreValuesCount_;
16928       return *this;
16929     }
16930 
16931     VULKAN_HPP_CONSTEXPR_14 D3D12FenceSubmitInfoKHR &
setPSignalSemaphoreValuesVULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR16932                             setPSignalSemaphoreValues( const uint64_t * pSignalSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT
16933     {
16934       pSignalSemaphoreValues = pSignalSemaphoreValues_;
16935       return *this;
16936     }
16937 
16938 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSignalSemaphoreValuesVULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR16939     D3D12FenceSubmitInfoKHR & setSignalSemaphoreValues(
16940       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & signalSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT
16941     {
16942       signalSemaphoreValuesCount = static_cast<uint32_t>( signalSemaphoreValues_.size() );
16943       pSignalSemaphoreValues     = signalSemaphoreValues_.data();
16944       return *this;
16945     }
16946 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
16947 #  endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
16948 
operator VkD3D12FenceSubmitInfoKHR const&VULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR16949     explicit operator VkD3D12FenceSubmitInfoKHR const &() const VULKAN_HPP_NOEXCEPT
16950     {
16951       return *reinterpret_cast<const VkD3D12FenceSubmitInfoKHR *>( this );
16952     }
16953 
operator VkD3D12FenceSubmitInfoKHR&VULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR16954     explicit operator VkD3D12FenceSubmitInfoKHR &() VULKAN_HPP_NOEXCEPT
16955     {
16956       return *reinterpret_cast<VkD3D12FenceSubmitInfoKHR *>( this );
16957     }
16958 
16959 #  if 14 <= VULKAN_HPP_CPP_VERSION
16960     auto
16961 #  else
16962     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
16963                const void * const &,
16964                uint32_t const &,
16965                const uint64_t * const &,
16966                uint32_t const &,
16967                const uint64_t * const &>
16968 #  endif
reflectVULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR16969       reflect() const VULKAN_HPP_NOEXCEPT
16970     {
16971       return std::tie( sType,
16972                        pNext,
16973                        waitSemaphoreValuesCount,
16974                        pWaitSemaphoreValues,
16975                        signalSemaphoreValuesCount,
16976                        pSignalSemaphoreValues );
16977     }
16978 
16979 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
16980     auto operator<=>( D3D12FenceSubmitInfoKHR const & ) const = default;
16981 #  else
operator ==VULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR16982     bool operator==( D3D12FenceSubmitInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
16983     {
16984       return this->reflect() == rhs.reflect();
16985     }
16986 
operator !=VULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR16987     bool operator!=( D3D12FenceSubmitInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
16988     {
16989       return this->reflect() != rhs.reflect();
16990     }
16991 #  endif
16992 
16993   public:
16994     VULKAN_HPP_NAMESPACE::StructureType sType                      = StructureType::eD3D12FenceSubmitInfoKHR;
16995     const void *                        pNext                      = {};
16996     uint32_t                            waitSemaphoreValuesCount   = {};
16997     const uint64_t *                    pWaitSemaphoreValues       = {};
16998     uint32_t                            signalSemaphoreValuesCount = {};
16999     const uint64_t *                    pSignalSemaphoreValues     = {};
17000   };
17001   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR ) ==
17002                               sizeof( VkD3D12FenceSubmitInfoKHR ),
17003                             "struct and wrapper have different size!" );
17004   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR>::value,
17005                             "struct wrapper is not a standard layout!" );
17006   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR>::value,
17007                             "D3D12FenceSubmitInfoKHR is not nothrow_move_constructible!" );
17008 
17009   template <>
17010   struct CppType<StructureType, StructureType::eD3D12FenceSubmitInfoKHR>
17011   {
17012     using Type = D3D12FenceSubmitInfoKHR;
17013   };
17014 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
17015 
17016   struct DebugMarkerMarkerInfoEXT
17017   {
17018     using NativeType = VkDebugMarkerMarkerInfoEXT;
17019 
17020     static const bool                                  allowDuplicate = false;
17021     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDebugMarkerMarkerInfoEXT;
17022 
17023 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DebugMarkerMarkerInfoEXTVULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT17024     VULKAN_HPP_CONSTEXPR_14 DebugMarkerMarkerInfoEXT( const char *                 pMarkerName_ = {},
17025                                                       std::array<float, 4> const & color_ = {} ) VULKAN_HPP_NOEXCEPT
17026       : pMarkerName( pMarkerName_ )
17027       , color( color_ )
17028     {}
17029 
17030     VULKAN_HPP_CONSTEXPR_14
17031       DebugMarkerMarkerInfoEXT( DebugMarkerMarkerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17032 
DebugMarkerMarkerInfoEXTVULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT17033     DebugMarkerMarkerInfoEXT( VkDebugMarkerMarkerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
17034       : DebugMarkerMarkerInfoEXT( *reinterpret_cast<DebugMarkerMarkerInfoEXT const *>( &rhs ) )
17035     {}
17036 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
17037 
17038     DebugMarkerMarkerInfoEXT & operator=( DebugMarkerMarkerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17039 
operator =VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT17040     DebugMarkerMarkerInfoEXT & operator=( VkDebugMarkerMarkerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
17041     {
17042       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT const *>( &rhs );
17043       return *this;
17044     }
17045 
17046 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT17047     VULKAN_HPP_CONSTEXPR_14 DebugMarkerMarkerInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
17048     {
17049       pNext = pNext_;
17050       return *this;
17051     }
17052 
setPMarkerNameVULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT17053     VULKAN_HPP_CONSTEXPR_14 DebugMarkerMarkerInfoEXT & setPMarkerName( const char * pMarkerName_ ) VULKAN_HPP_NOEXCEPT
17054     {
17055       pMarkerName = pMarkerName_;
17056       return *this;
17057     }
17058 
setColorVULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT17059     VULKAN_HPP_CONSTEXPR_14 DebugMarkerMarkerInfoEXT & setColor( std::array<float, 4> color_ ) VULKAN_HPP_NOEXCEPT
17060     {
17061       color = color_;
17062       return *this;
17063     }
17064 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
17065 
operator VkDebugMarkerMarkerInfoEXT const&VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT17066     explicit operator VkDebugMarkerMarkerInfoEXT const &() const VULKAN_HPP_NOEXCEPT
17067     {
17068       return *reinterpret_cast<const VkDebugMarkerMarkerInfoEXT *>( this );
17069     }
17070 
operator VkDebugMarkerMarkerInfoEXT&VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT17071     explicit operator VkDebugMarkerMarkerInfoEXT &() VULKAN_HPP_NOEXCEPT
17072     {
17073       return *reinterpret_cast<VkDebugMarkerMarkerInfoEXT *>( this );
17074     }
17075 
17076 #if 14 <= VULKAN_HPP_CPP_VERSION
17077     auto
17078 #else
17079     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
17080                const void * const &,
17081                const char * const &,
17082                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 4> const &>
17083 #endif
reflectVULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT17084       reflect() const VULKAN_HPP_NOEXCEPT
17085     {
17086       return std::tie( sType, pNext, pMarkerName, color );
17087     }
17088 
17089 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
17090     auto operator<=>( DebugMarkerMarkerInfoEXT const & ) const = default;
17091 #else
operator ==VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT17092     bool operator==( DebugMarkerMarkerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
17093     {
17094       return this->reflect() == rhs.reflect();
17095     }
17096 
operator !=VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT17097     bool operator!=( DebugMarkerMarkerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
17098     {
17099       return this->reflect() != rhs.reflect();
17100     }
17101 #endif
17102 
17103   public:
17104     VULKAN_HPP_NAMESPACE::StructureType            sType       = StructureType::eDebugMarkerMarkerInfoEXT;
17105     const void *                                   pNext       = {};
17106     const char *                                   pMarkerName = {};
17107     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 4> color       = {};
17108   };
17109   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT ) ==
17110                               sizeof( VkDebugMarkerMarkerInfoEXT ),
17111                             "struct and wrapper have different size!" );
17112   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT>::value,
17113                             "struct wrapper is not a standard layout!" );
17114   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT>::value,
17115                             "DebugMarkerMarkerInfoEXT is not nothrow_move_constructible!" );
17116 
17117   template <>
17118   struct CppType<StructureType, StructureType::eDebugMarkerMarkerInfoEXT>
17119   {
17120     using Type = DebugMarkerMarkerInfoEXT;
17121   };
17122 
17123   struct DebugMarkerObjectNameInfoEXT
17124   {
17125     using NativeType = VkDebugMarkerObjectNameInfoEXT;
17126 
17127     static const bool                                  allowDuplicate = false;
17128     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDebugMarkerObjectNameInfoEXT;
17129 
17130 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DebugMarkerObjectNameInfoEXTVULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT17131     VULKAN_HPP_CONSTEXPR DebugMarkerObjectNameInfoEXT( VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType_ =
17132                                                          VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown,
17133                                                        uint64_t     object_      = {},
17134                                                        const char * pObjectName_ = {} ) VULKAN_HPP_NOEXCEPT
17135       : objectType( objectType_ )
17136       , object( object_ )
17137       , pObjectName( pObjectName_ )
17138     {}
17139 
17140     VULKAN_HPP_CONSTEXPR
17141       DebugMarkerObjectNameInfoEXT( DebugMarkerObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17142 
DebugMarkerObjectNameInfoEXTVULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT17143     DebugMarkerObjectNameInfoEXT( VkDebugMarkerObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
17144       : DebugMarkerObjectNameInfoEXT( *reinterpret_cast<DebugMarkerObjectNameInfoEXT const *>( &rhs ) )
17145     {}
17146 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
17147 
17148     DebugMarkerObjectNameInfoEXT & operator=( DebugMarkerObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17149 
operator =VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT17150     DebugMarkerObjectNameInfoEXT & operator=( VkDebugMarkerObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
17151     {
17152       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT const *>( &rhs );
17153       return *this;
17154     }
17155 
17156 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT17157     VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectNameInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
17158     {
17159       pNext = pNext_;
17160       return *this;
17161     }
17162 
17163     VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectNameInfoEXT &
setObjectTypeVULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT17164       setObjectType( VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType_ ) VULKAN_HPP_NOEXCEPT
17165     {
17166       objectType = objectType_;
17167       return *this;
17168     }
17169 
setObjectVULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT17170     VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectNameInfoEXT & setObject( uint64_t object_ ) VULKAN_HPP_NOEXCEPT
17171     {
17172       object = object_;
17173       return *this;
17174     }
17175 
17176     VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectNameInfoEXT &
setPObjectNameVULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT17177                             setPObjectName( const char * pObjectName_ ) VULKAN_HPP_NOEXCEPT
17178     {
17179       pObjectName = pObjectName_;
17180       return *this;
17181     }
17182 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
17183 
operator VkDebugMarkerObjectNameInfoEXT const&VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT17184     explicit operator VkDebugMarkerObjectNameInfoEXT const &() const VULKAN_HPP_NOEXCEPT
17185     {
17186       return *reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT *>( this );
17187     }
17188 
operator VkDebugMarkerObjectNameInfoEXT&VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT17189     explicit operator VkDebugMarkerObjectNameInfoEXT &() VULKAN_HPP_NOEXCEPT
17190     {
17191       return *reinterpret_cast<VkDebugMarkerObjectNameInfoEXT *>( this );
17192     }
17193 
17194 #if 14 <= VULKAN_HPP_CPP_VERSION
17195     auto
17196 #else
17197     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
17198                const void * const &,
17199                VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT const &,
17200                uint64_t const &,
17201                const char * const &>
17202 #endif
reflectVULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT17203       reflect() const VULKAN_HPP_NOEXCEPT
17204     {
17205       return std::tie( sType, pNext, objectType, object, pObjectName );
17206     }
17207 
17208 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
17209     auto operator<=>( DebugMarkerObjectNameInfoEXT const & ) const = default;
17210 #else
operator ==VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT17211     bool operator==( DebugMarkerObjectNameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
17212     {
17213       return this->reflect() == rhs.reflect();
17214     }
17215 
operator !=VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT17216     bool operator!=( DebugMarkerObjectNameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
17217     {
17218       return this->reflect() != rhs.reflect();
17219     }
17220 #endif
17221 
17222   public:
17223     VULKAN_HPP_NAMESPACE::StructureType            sType = StructureType::eDebugMarkerObjectNameInfoEXT;
17224     const void *                                   pNext = {};
17225     VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType =
17226       VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown;
17227     uint64_t     object      = {};
17228     const char * pObjectName = {};
17229   };
17230   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT ) ==
17231                               sizeof( VkDebugMarkerObjectNameInfoEXT ),
17232                             "struct and wrapper have different size!" );
17233   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT>::value,
17234                             "struct wrapper is not a standard layout!" );
17235   VULKAN_HPP_STATIC_ASSERT(
17236     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT>::value,
17237     "DebugMarkerObjectNameInfoEXT is not nothrow_move_constructible!" );
17238 
17239   template <>
17240   struct CppType<StructureType, StructureType::eDebugMarkerObjectNameInfoEXT>
17241   {
17242     using Type = DebugMarkerObjectNameInfoEXT;
17243   };
17244 
17245   struct DebugMarkerObjectTagInfoEXT
17246   {
17247     using NativeType = VkDebugMarkerObjectTagInfoEXT;
17248 
17249     static const bool                                  allowDuplicate = false;
17250     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDebugMarkerObjectTagInfoEXT;
17251 
17252 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DebugMarkerObjectTagInfoEXTVULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT17253     VULKAN_HPP_CONSTEXPR DebugMarkerObjectTagInfoEXT( VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType_ =
17254                                                         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown,
17255                                                       uint64_t     object_  = {},
17256                                                       uint64_t     tagName_ = {},
17257                                                       size_t       tagSize_ = {},
17258                                                       const void * pTag_    = {} ) VULKAN_HPP_NOEXCEPT
17259       : objectType( objectType_ )
17260       , object( object_ )
17261       , tagName( tagName_ )
17262       , tagSize( tagSize_ )
17263       , pTag( pTag_ )
17264     {}
17265 
17266     VULKAN_HPP_CONSTEXPR
17267       DebugMarkerObjectTagInfoEXT( DebugMarkerObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17268 
DebugMarkerObjectTagInfoEXTVULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT17269     DebugMarkerObjectTagInfoEXT( VkDebugMarkerObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
17270       : DebugMarkerObjectTagInfoEXT( *reinterpret_cast<DebugMarkerObjectTagInfoEXT const *>( &rhs ) )
17271     {}
17272 
17273 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
17274     template <typename T>
DebugMarkerObjectTagInfoEXTVULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT17275     DebugMarkerObjectTagInfoEXT( VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT                 objectType_,
17276                                  uint64_t                                                       object_,
17277                                  uint64_t                                                       tagName_,
17278                                  VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & tag_ )
17279       : objectType( objectType_ )
17280       , object( object_ )
17281       , tagName( tagName_ )
17282       , tagSize( tag_.size() * sizeof( T ) )
17283       , pTag( tag_.data() )
17284     {}
17285 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
17286 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
17287 
17288     DebugMarkerObjectTagInfoEXT & operator=( DebugMarkerObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17289 
operator =VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT17290     DebugMarkerObjectTagInfoEXT & operator=( VkDebugMarkerObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
17291     {
17292       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT const *>( &rhs );
17293       return *this;
17294     }
17295 
17296 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT17297     VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
17298     {
17299       pNext = pNext_;
17300       return *this;
17301     }
17302 
17303     VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT &
setObjectTypeVULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT17304       setObjectType( VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType_ ) VULKAN_HPP_NOEXCEPT
17305     {
17306       objectType = objectType_;
17307       return *this;
17308     }
17309 
setObjectVULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT17310     VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT & setObject( uint64_t object_ ) VULKAN_HPP_NOEXCEPT
17311     {
17312       object = object_;
17313       return *this;
17314     }
17315 
setTagNameVULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT17316     VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT & setTagName( uint64_t tagName_ ) VULKAN_HPP_NOEXCEPT
17317     {
17318       tagName = tagName_;
17319       return *this;
17320     }
17321 
setTagSizeVULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT17322     VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT & setTagSize( size_t tagSize_ ) VULKAN_HPP_NOEXCEPT
17323     {
17324       tagSize = tagSize_;
17325       return *this;
17326     }
17327 
setPTagVULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT17328     VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT & setPTag( const void * pTag_ ) VULKAN_HPP_NOEXCEPT
17329     {
17330       pTag = pTag_;
17331       return *this;
17332     }
17333 
17334 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
17335     template <typename T>
17336     DebugMarkerObjectTagInfoEXT &
setTagVULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT17337       setTag( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & tag_ ) VULKAN_HPP_NOEXCEPT
17338     {
17339       tagSize = tag_.size() * sizeof( T );
17340       pTag    = tag_.data();
17341       return *this;
17342     }
17343 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
17344 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
17345 
operator VkDebugMarkerObjectTagInfoEXT const&VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT17346     explicit operator VkDebugMarkerObjectTagInfoEXT const &() const VULKAN_HPP_NOEXCEPT
17347     {
17348       return *reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT *>( this );
17349     }
17350 
operator VkDebugMarkerObjectTagInfoEXT&VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT17351     explicit operator VkDebugMarkerObjectTagInfoEXT &() VULKAN_HPP_NOEXCEPT
17352     {
17353       return *reinterpret_cast<VkDebugMarkerObjectTagInfoEXT *>( this );
17354     }
17355 
17356 #if 14 <= VULKAN_HPP_CPP_VERSION
17357     auto
17358 #else
17359     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
17360                const void * const &,
17361                VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT const &,
17362                uint64_t const &,
17363                uint64_t const &,
17364                size_t const &,
17365                const void * const &>
17366 #endif
reflectVULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT17367       reflect() const VULKAN_HPP_NOEXCEPT
17368     {
17369       return std::tie( sType, pNext, objectType, object, tagName, tagSize, pTag );
17370     }
17371 
17372 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
17373     auto operator<=>( DebugMarkerObjectTagInfoEXT const & ) const = default;
17374 #else
operator ==VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT17375     bool operator==( DebugMarkerObjectTagInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
17376     {
17377       return this->reflect() == rhs.reflect();
17378     }
17379 
operator !=VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT17380     bool operator!=( DebugMarkerObjectTagInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
17381     {
17382       return this->reflect() != rhs.reflect();
17383     }
17384 #endif
17385 
17386   public:
17387     VULKAN_HPP_NAMESPACE::StructureType            sType = StructureType::eDebugMarkerObjectTagInfoEXT;
17388     const void *                                   pNext = {};
17389     VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType =
17390       VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown;
17391     uint64_t     object  = {};
17392     uint64_t     tagName = {};
17393     size_t       tagSize = {};
17394     const void * pTag    = {};
17395   };
17396   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT ) ==
17397                               sizeof( VkDebugMarkerObjectTagInfoEXT ),
17398                             "struct and wrapper have different size!" );
17399   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT>::value,
17400                             "struct wrapper is not a standard layout!" );
17401   VULKAN_HPP_STATIC_ASSERT(
17402     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT>::value,
17403     "DebugMarkerObjectTagInfoEXT is not nothrow_move_constructible!" );
17404 
17405   template <>
17406   struct CppType<StructureType, StructureType::eDebugMarkerObjectTagInfoEXT>
17407   {
17408     using Type = DebugMarkerObjectTagInfoEXT;
17409   };
17410 
17411   struct DebugReportCallbackCreateInfoEXT
17412   {
17413     using NativeType = VkDebugReportCallbackCreateInfoEXT;
17414 
17415     static const bool                                  allowDuplicate = false;
17416     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDebugReportCallbackCreateInfoEXT;
17417 
17418 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DebugReportCallbackCreateInfoEXTVULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT17419     VULKAN_HPP_CONSTEXPR DebugReportCallbackCreateInfoEXT( VULKAN_HPP_NAMESPACE::DebugReportFlagsEXT flags_       = {},
17420                                                            PFN_vkDebugReportCallbackEXT              pfnCallback_ = {},
17421                                                            void * pUserData_ = {} ) VULKAN_HPP_NOEXCEPT
17422       : flags( flags_ )
17423       , pfnCallback( pfnCallback_ )
17424       , pUserData( pUserData_ )
17425     {}
17426 
17427     VULKAN_HPP_CONSTEXPR
17428       DebugReportCallbackCreateInfoEXT( DebugReportCallbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17429 
DebugReportCallbackCreateInfoEXTVULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT17430     DebugReportCallbackCreateInfoEXT( VkDebugReportCallbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
17431       : DebugReportCallbackCreateInfoEXT( *reinterpret_cast<DebugReportCallbackCreateInfoEXT const *>( &rhs ) )
17432     {}
17433 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
17434 
17435     DebugReportCallbackCreateInfoEXT &
17436       operator=( DebugReportCallbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17437 
operator =VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT17438     DebugReportCallbackCreateInfoEXT & operator=( VkDebugReportCallbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
17439     {
17440       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT const *>( &rhs );
17441       return *this;
17442     }
17443 
17444 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT17445     VULKAN_HPP_CONSTEXPR_14 DebugReportCallbackCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
17446     {
17447       pNext = pNext_;
17448       return *this;
17449     }
17450 
17451     VULKAN_HPP_CONSTEXPR_14 DebugReportCallbackCreateInfoEXT &
setFlagsVULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT17452                             setFlags( VULKAN_HPP_NAMESPACE::DebugReportFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
17453     {
17454       flags = flags_;
17455       return *this;
17456     }
17457 
17458     VULKAN_HPP_CONSTEXPR_14 DebugReportCallbackCreateInfoEXT &
setPfnCallbackVULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT17459                             setPfnCallback( PFN_vkDebugReportCallbackEXT pfnCallback_ ) VULKAN_HPP_NOEXCEPT
17460     {
17461       pfnCallback = pfnCallback_;
17462       return *this;
17463     }
17464 
setPUserDataVULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT17465     VULKAN_HPP_CONSTEXPR_14 DebugReportCallbackCreateInfoEXT & setPUserData( void * pUserData_ ) VULKAN_HPP_NOEXCEPT
17466     {
17467       pUserData = pUserData_;
17468       return *this;
17469     }
17470 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
17471 
operator VkDebugReportCallbackCreateInfoEXT const&VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT17472     explicit operator VkDebugReportCallbackCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
17473     {
17474       return *reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT *>( this );
17475     }
17476 
operator VkDebugReportCallbackCreateInfoEXT&VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT17477     explicit operator VkDebugReportCallbackCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
17478     {
17479       return *reinterpret_cast<VkDebugReportCallbackCreateInfoEXT *>( this );
17480     }
17481 
17482 #if 14 <= VULKAN_HPP_CPP_VERSION
17483     auto
17484 #else
17485     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
17486                const void * const &,
17487                VULKAN_HPP_NAMESPACE::DebugReportFlagsEXT const &,
17488                PFN_vkDebugReportCallbackEXT const &,
17489                void * const &>
17490 #endif
reflectVULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT17491       reflect() const VULKAN_HPP_NOEXCEPT
17492     {
17493       return std::tie( sType, pNext, flags, pfnCallback, pUserData );
17494     }
17495 
17496 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
17497     auto operator<=>( DebugReportCallbackCreateInfoEXT const & ) const = default;
17498 #else
operator ==VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT17499     bool operator==( DebugReportCallbackCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
17500     {
17501       return this->reflect() == rhs.reflect();
17502     }
17503 
operator !=VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT17504     bool operator!=( DebugReportCallbackCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
17505     {
17506       return this->reflect() != rhs.reflect();
17507     }
17508 #endif
17509 
17510   public:
17511     VULKAN_HPP_NAMESPACE::StructureType       sType       = StructureType::eDebugReportCallbackCreateInfoEXT;
17512     const void *                              pNext       = {};
17513     VULKAN_HPP_NAMESPACE::DebugReportFlagsEXT flags       = {};
17514     PFN_vkDebugReportCallbackEXT              pfnCallback = {};
17515     void *                                    pUserData   = {};
17516   };
17517   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT ) ==
17518                               sizeof( VkDebugReportCallbackCreateInfoEXT ),
17519                             "struct and wrapper have different size!" );
17520   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT>::value,
17521                             "struct wrapper is not a standard layout!" );
17522   VULKAN_HPP_STATIC_ASSERT(
17523     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT>::value,
17524     "DebugReportCallbackCreateInfoEXT is not nothrow_move_constructible!" );
17525 
17526   template <>
17527   struct CppType<StructureType, StructureType::eDebugReportCallbackCreateInfoEXT>
17528   {
17529     using Type = DebugReportCallbackCreateInfoEXT;
17530   };
17531 
17532   struct DebugUtilsLabelEXT
17533   {
17534     using NativeType = VkDebugUtilsLabelEXT;
17535 
17536     static const bool                                  allowDuplicate = false;
17537     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDebugUtilsLabelEXT;
17538 
17539 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DebugUtilsLabelEXTVULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT17540     VULKAN_HPP_CONSTEXPR_14 DebugUtilsLabelEXT( const char *                 pLabelName_ = {},
17541                                                 std::array<float, 4> const & color_      = {} ) VULKAN_HPP_NOEXCEPT
17542       : pLabelName( pLabelName_ )
17543       , color( color_ )
17544     {}
17545 
17546     VULKAN_HPP_CONSTEXPR_14 DebugUtilsLabelEXT( DebugUtilsLabelEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17547 
DebugUtilsLabelEXTVULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT17548     DebugUtilsLabelEXT( VkDebugUtilsLabelEXT const & rhs ) VULKAN_HPP_NOEXCEPT
17549       : DebugUtilsLabelEXT( *reinterpret_cast<DebugUtilsLabelEXT const *>( &rhs ) )
17550     {}
17551 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
17552 
17553     DebugUtilsLabelEXT & operator=( DebugUtilsLabelEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17554 
operator =VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT17555     DebugUtilsLabelEXT & operator=( VkDebugUtilsLabelEXT const & rhs ) VULKAN_HPP_NOEXCEPT
17556     {
17557       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT const *>( &rhs );
17558       return *this;
17559     }
17560 
17561 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT17562     VULKAN_HPP_CONSTEXPR_14 DebugUtilsLabelEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
17563     {
17564       pNext = pNext_;
17565       return *this;
17566     }
17567 
setPLabelNameVULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT17568     VULKAN_HPP_CONSTEXPR_14 DebugUtilsLabelEXT & setPLabelName( const char * pLabelName_ ) VULKAN_HPP_NOEXCEPT
17569     {
17570       pLabelName = pLabelName_;
17571       return *this;
17572     }
17573 
setColorVULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT17574     VULKAN_HPP_CONSTEXPR_14 DebugUtilsLabelEXT & setColor( std::array<float, 4> color_ ) VULKAN_HPP_NOEXCEPT
17575     {
17576       color = color_;
17577       return *this;
17578     }
17579 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
17580 
operator VkDebugUtilsLabelEXT const&VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT17581     explicit operator VkDebugUtilsLabelEXT const &() const VULKAN_HPP_NOEXCEPT
17582     {
17583       return *reinterpret_cast<const VkDebugUtilsLabelEXT *>( this );
17584     }
17585 
operator VkDebugUtilsLabelEXT&VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT17586     explicit operator VkDebugUtilsLabelEXT &() VULKAN_HPP_NOEXCEPT
17587     {
17588       return *reinterpret_cast<VkDebugUtilsLabelEXT *>( this );
17589     }
17590 
17591 #if 14 <= VULKAN_HPP_CPP_VERSION
17592     auto
17593 #else
17594     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
17595                const void * const &,
17596                const char * const &,
17597                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 4> const &>
17598 #endif
reflectVULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT17599       reflect() const VULKAN_HPP_NOEXCEPT
17600     {
17601       return std::tie( sType, pNext, pLabelName, color );
17602     }
17603 
17604 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
17605     auto operator<=>( DebugUtilsLabelEXT const & ) const = default;
17606 #else
operator ==VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT17607     bool operator==( DebugUtilsLabelEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
17608     {
17609       return this->reflect() == rhs.reflect();
17610     }
17611 
operator !=VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT17612     bool operator!=( DebugUtilsLabelEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
17613     {
17614       return this->reflect() != rhs.reflect();
17615     }
17616 #endif
17617 
17618   public:
17619     VULKAN_HPP_NAMESPACE::StructureType            sType      = StructureType::eDebugUtilsLabelEXT;
17620     const void *                                   pNext      = {};
17621     const char *                                   pLabelName = {};
17622     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 4> color      = {};
17623   };
17624   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT ) == sizeof( VkDebugUtilsLabelEXT ),
17625                             "struct and wrapper have different size!" );
17626   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT>::value,
17627                             "struct wrapper is not a standard layout!" );
17628   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT>::value,
17629                             "DebugUtilsLabelEXT is not nothrow_move_constructible!" );
17630 
17631   template <>
17632   struct CppType<StructureType, StructureType::eDebugUtilsLabelEXT>
17633   {
17634     using Type = DebugUtilsLabelEXT;
17635   };
17636 
17637   struct DebugUtilsObjectNameInfoEXT
17638   {
17639     using NativeType = VkDebugUtilsObjectNameInfoEXT;
17640 
17641     static const bool                                  allowDuplicate = false;
17642     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDebugUtilsObjectNameInfoEXT;
17643 
17644 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DebugUtilsObjectNameInfoEXTVULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT17645     VULKAN_HPP_CONSTEXPR DebugUtilsObjectNameInfoEXT(
17646       VULKAN_HPP_NAMESPACE::ObjectType objectType_   = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown,
17647       uint64_t                         objectHandle_ = {},
17648       const char *                     pObjectName_  = {} ) VULKAN_HPP_NOEXCEPT
17649       : objectType( objectType_ )
17650       , objectHandle( objectHandle_ )
17651       , pObjectName( pObjectName_ )
17652     {}
17653 
17654     VULKAN_HPP_CONSTEXPR
17655       DebugUtilsObjectNameInfoEXT( DebugUtilsObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17656 
DebugUtilsObjectNameInfoEXTVULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT17657     DebugUtilsObjectNameInfoEXT( VkDebugUtilsObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
17658       : DebugUtilsObjectNameInfoEXT( *reinterpret_cast<DebugUtilsObjectNameInfoEXT const *>( &rhs ) )
17659     {}
17660 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
17661 
17662     DebugUtilsObjectNameInfoEXT & operator=( DebugUtilsObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17663 
operator =VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT17664     DebugUtilsObjectNameInfoEXT & operator=( VkDebugUtilsObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
17665     {
17666       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT const *>( &rhs );
17667       return *this;
17668     }
17669 
17670 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT17671     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectNameInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
17672     {
17673       pNext = pNext_;
17674       return *this;
17675     }
17676 
17677     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectNameInfoEXT &
setObjectTypeVULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT17678                             setObjectType( VULKAN_HPP_NAMESPACE::ObjectType objectType_ ) VULKAN_HPP_NOEXCEPT
17679     {
17680       objectType = objectType_;
17681       return *this;
17682     }
17683 
setObjectHandleVULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT17684     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectNameInfoEXT & setObjectHandle( uint64_t objectHandle_ ) VULKAN_HPP_NOEXCEPT
17685     {
17686       objectHandle = objectHandle_;
17687       return *this;
17688     }
17689 
17690     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectNameInfoEXT &
setPObjectNameVULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT17691                             setPObjectName( const char * pObjectName_ ) VULKAN_HPP_NOEXCEPT
17692     {
17693       pObjectName = pObjectName_;
17694       return *this;
17695     }
17696 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
17697 
operator VkDebugUtilsObjectNameInfoEXT const&VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT17698     explicit operator VkDebugUtilsObjectNameInfoEXT const &() const VULKAN_HPP_NOEXCEPT
17699     {
17700       return *reinterpret_cast<const VkDebugUtilsObjectNameInfoEXT *>( this );
17701     }
17702 
operator VkDebugUtilsObjectNameInfoEXT&VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT17703     explicit operator VkDebugUtilsObjectNameInfoEXT &() VULKAN_HPP_NOEXCEPT
17704     {
17705       return *reinterpret_cast<VkDebugUtilsObjectNameInfoEXT *>( this );
17706     }
17707 
17708 #if 14 <= VULKAN_HPP_CPP_VERSION
17709     auto
17710 #else
17711     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
17712                const void * const &,
17713                VULKAN_HPP_NAMESPACE::ObjectType const &,
17714                uint64_t const &,
17715                const char * const &>
17716 #endif
reflectVULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT17717       reflect() const VULKAN_HPP_NOEXCEPT
17718     {
17719       return std::tie( sType, pNext, objectType, objectHandle, pObjectName );
17720     }
17721 
17722 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
17723     auto operator<=>( DebugUtilsObjectNameInfoEXT const & ) const = default;
17724 #else
operator ==VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT17725     bool operator==( DebugUtilsObjectNameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
17726     {
17727       return this->reflect() == rhs.reflect();
17728     }
17729 
operator !=VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT17730     bool operator!=( DebugUtilsObjectNameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
17731     {
17732       return this->reflect() != rhs.reflect();
17733     }
17734 #endif
17735 
17736   public:
17737     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::eDebugUtilsObjectNameInfoEXT;
17738     const void *                        pNext        = {};
17739     VULKAN_HPP_NAMESPACE::ObjectType    objectType   = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown;
17740     uint64_t                            objectHandle = {};
17741     const char *                        pObjectName  = {};
17742   };
17743   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT ) ==
17744                               sizeof( VkDebugUtilsObjectNameInfoEXT ),
17745                             "struct and wrapper have different size!" );
17746   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT>::value,
17747                             "struct wrapper is not a standard layout!" );
17748   VULKAN_HPP_STATIC_ASSERT(
17749     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT>::value,
17750     "DebugUtilsObjectNameInfoEXT is not nothrow_move_constructible!" );
17751 
17752   template <>
17753   struct CppType<StructureType, StructureType::eDebugUtilsObjectNameInfoEXT>
17754   {
17755     using Type = DebugUtilsObjectNameInfoEXT;
17756   };
17757 
17758   struct DebugUtilsMessengerCallbackDataEXT
17759   {
17760     using NativeType = VkDebugUtilsMessengerCallbackDataEXT;
17761 
17762     static const bool                                  allowDuplicate = false;
17763     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
17764       StructureType::eDebugUtilsMessengerCallbackDataEXT;
17765 
17766 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DebugUtilsMessengerCallbackDataEXTVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT17767     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT(
17768       VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataFlagsEXT flags_            = {},
17769       const char *                                                  pMessageIdName_   = {},
17770       int32_t                                                       messageIdNumber_  = {},
17771       const char *                                                  pMessage_         = {},
17772       uint32_t                                                      queueLabelCount_  = {},
17773       const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT *              pQueueLabels_     = {},
17774       uint32_t                                                      cmdBufLabelCount_ = {},
17775       const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT *              pCmdBufLabels_    = {},
17776       uint32_t                                                      objectCount_      = {},
17777       const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT *     pObjects_         = {} ) VULKAN_HPP_NOEXCEPT
17778       : flags( flags_ )
17779       , pMessageIdName( pMessageIdName_ )
17780       , messageIdNumber( messageIdNumber_ )
17781       , pMessage( pMessage_ )
17782       , queueLabelCount( queueLabelCount_ )
17783       , pQueueLabels( pQueueLabels_ )
17784       , cmdBufLabelCount( cmdBufLabelCount_ )
17785       , pCmdBufLabels( pCmdBufLabels_ )
17786       , objectCount( objectCount_ )
17787       , pObjects( pObjects_ )
17788     {}
17789 
17790     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT( DebugUtilsMessengerCallbackDataEXT const & rhs )
17791       VULKAN_HPP_NOEXCEPT = default;
17792 
DebugUtilsMessengerCallbackDataEXTVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT17793     DebugUtilsMessengerCallbackDataEXT( VkDebugUtilsMessengerCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT
17794       : DebugUtilsMessengerCallbackDataEXT( *reinterpret_cast<DebugUtilsMessengerCallbackDataEXT const *>( &rhs ) )
17795     {}
17796 
17797 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DebugUtilsMessengerCallbackDataEXTVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT17798     DebugUtilsMessengerCallbackDataEXT(
17799       VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataFlagsEXT flags_,
17800       const char *                                                  pMessageIdName_,
17801       int32_t                                                       messageIdNumber_,
17802       const char *                                                  pMessage_,
17803       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT> const &
17804         queueLabels_,
17805       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT> const &
17806         cmdBufLabels_ = {},
17807       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT> const &
17808         objects_ = {} )
17809       : flags( flags_ )
17810       , pMessageIdName( pMessageIdName_ )
17811       , messageIdNumber( messageIdNumber_ )
17812       , pMessage( pMessage_ )
17813       , queueLabelCount( static_cast<uint32_t>( queueLabels_.size() ) )
17814       , pQueueLabels( queueLabels_.data() )
17815       , cmdBufLabelCount( static_cast<uint32_t>( cmdBufLabels_.size() ) )
17816       , pCmdBufLabels( cmdBufLabels_.data() )
17817       , objectCount( static_cast<uint32_t>( objects_.size() ) )
17818       , pObjects( objects_.data() )
17819     {}
17820 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
17821 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
17822 
17823     DebugUtilsMessengerCallbackDataEXT &
17824       operator=( DebugUtilsMessengerCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17825 
17826     DebugUtilsMessengerCallbackDataEXT &
operator =VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT17827       operator=( VkDebugUtilsMessengerCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT
17828     {
17829       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT const *>( &rhs );
17830       return *this;
17831     }
17832 
17833 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT17834     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
17835     {
17836       pNext = pNext_;
17837       return *this;
17838     }
17839 
17840     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT &
setFlagsVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT17841       setFlags( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
17842     {
17843       flags = flags_;
17844       return *this;
17845     }
17846 
17847     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT &
setPMessageIdNameVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT17848                             setPMessageIdName( const char * pMessageIdName_ ) VULKAN_HPP_NOEXCEPT
17849     {
17850       pMessageIdName = pMessageIdName_;
17851       return *this;
17852     }
17853 
17854     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT &
setMessageIdNumberVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT17855                             setMessageIdNumber( int32_t messageIdNumber_ ) VULKAN_HPP_NOEXCEPT
17856     {
17857       messageIdNumber = messageIdNumber_;
17858       return *this;
17859     }
17860 
17861     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT &
setPMessageVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT17862                             setPMessage( const char * pMessage_ ) VULKAN_HPP_NOEXCEPT
17863     {
17864       pMessage = pMessage_;
17865       return *this;
17866     }
17867 
17868     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT &
setQueueLabelCountVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT17869                             setQueueLabelCount( uint32_t queueLabelCount_ ) VULKAN_HPP_NOEXCEPT
17870     {
17871       queueLabelCount = queueLabelCount_;
17872       return *this;
17873     }
17874 
17875     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT &
setPQueueLabelsVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT17876       setPQueueLabels( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT * pQueueLabels_ ) VULKAN_HPP_NOEXCEPT
17877     {
17878       pQueueLabels = pQueueLabels_;
17879       return *this;
17880     }
17881 
17882 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setQueueLabelsVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT17883     DebugUtilsMessengerCallbackDataEXT & setQueueLabels(
17884       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT> const &
17885         queueLabels_ ) VULKAN_HPP_NOEXCEPT
17886     {
17887       queueLabelCount = static_cast<uint32_t>( queueLabels_.size() );
17888       pQueueLabels    = queueLabels_.data();
17889       return *this;
17890     }
17891 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
17892 
17893     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT &
setCmdBufLabelCountVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT17894                             setCmdBufLabelCount( uint32_t cmdBufLabelCount_ ) VULKAN_HPP_NOEXCEPT
17895     {
17896       cmdBufLabelCount = cmdBufLabelCount_;
17897       return *this;
17898     }
17899 
17900     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT &
setPCmdBufLabelsVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT17901       setPCmdBufLabels( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT * pCmdBufLabels_ ) VULKAN_HPP_NOEXCEPT
17902     {
17903       pCmdBufLabels = pCmdBufLabels_;
17904       return *this;
17905     }
17906 
17907 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setCmdBufLabelsVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT17908     DebugUtilsMessengerCallbackDataEXT & setCmdBufLabels(
17909       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT> const &
17910         cmdBufLabels_ ) VULKAN_HPP_NOEXCEPT
17911     {
17912       cmdBufLabelCount = static_cast<uint32_t>( cmdBufLabels_.size() );
17913       pCmdBufLabels    = cmdBufLabels_.data();
17914       return *this;
17915     }
17916 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
17917 
17918     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT &
setObjectCountVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT17919                             setObjectCount( uint32_t objectCount_ ) VULKAN_HPP_NOEXCEPT
17920     {
17921       objectCount = objectCount_;
17922       return *this;
17923     }
17924 
17925     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT &
setPObjectsVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT17926       setPObjects( const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT * pObjects_ ) VULKAN_HPP_NOEXCEPT
17927     {
17928       pObjects = pObjects_;
17929       return *this;
17930     }
17931 
17932 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setObjectsVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT17933     DebugUtilsMessengerCallbackDataEXT & setObjects(
17934       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT> const &
17935         objects_ ) VULKAN_HPP_NOEXCEPT
17936     {
17937       objectCount = static_cast<uint32_t>( objects_.size() );
17938       pObjects    = objects_.data();
17939       return *this;
17940     }
17941 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
17942 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
17943 
operator VkDebugUtilsMessengerCallbackDataEXT const&VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT17944     explicit operator VkDebugUtilsMessengerCallbackDataEXT const &() const VULKAN_HPP_NOEXCEPT
17945     {
17946       return *reinterpret_cast<const VkDebugUtilsMessengerCallbackDataEXT *>( this );
17947     }
17948 
operator VkDebugUtilsMessengerCallbackDataEXT&VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT17949     explicit operator VkDebugUtilsMessengerCallbackDataEXT &() VULKAN_HPP_NOEXCEPT
17950     {
17951       return *reinterpret_cast<VkDebugUtilsMessengerCallbackDataEXT *>( this );
17952     }
17953 
17954 #if 14 <= VULKAN_HPP_CPP_VERSION
17955     auto
17956 #else
17957     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
17958                const void * const &,
17959                VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataFlagsEXT const &,
17960                const char * const &,
17961                int32_t const &,
17962                const char * const &,
17963                uint32_t const &,
17964                const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT * const &,
17965                uint32_t const &,
17966                const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT * const &,
17967                uint32_t const &,
17968                const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT * const &>
17969 #endif
reflectVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT17970       reflect() const VULKAN_HPP_NOEXCEPT
17971     {
17972       return std::tie( sType,
17973                        pNext,
17974                        flags,
17975                        pMessageIdName,
17976                        messageIdNumber,
17977                        pMessage,
17978                        queueLabelCount,
17979                        pQueueLabels,
17980                        cmdBufLabelCount,
17981                        pCmdBufLabels,
17982                        objectCount,
17983                        pObjects );
17984     }
17985 
17986 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
17987     auto operator<=>( DebugUtilsMessengerCallbackDataEXT const & ) const = default;
17988 #else
operator ==VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT17989     bool operator==( DebugUtilsMessengerCallbackDataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
17990     {
17991       return this->reflect() == rhs.reflect();
17992     }
17993 
operator !=VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT17994     bool operator!=( DebugUtilsMessengerCallbackDataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
17995     {
17996       return this->reflect() != rhs.reflect();
17997     }
17998 #endif
17999 
18000   public:
18001     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugUtilsMessengerCallbackDataEXT;
18002     const void *                        pNext = {};
18003     VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataFlagsEXT flags            = {};
18004     const char *                                                  pMessageIdName   = {};
18005     int32_t                                                       messageIdNumber  = {};
18006     const char *                                                  pMessage         = {};
18007     uint32_t                                                      queueLabelCount  = {};
18008     const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT *              pQueueLabels     = {};
18009     uint32_t                                                      cmdBufLabelCount = {};
18010     const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT *              pCmdBufLabels    = {};
18011     uint32_t                                                      objectCount      = {};
18012     const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT *     pObjects         = {};
18013   };
18014   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT ) ==
18015                               sizeof( VkDebugUtilsMessengerCallbackDataEXT ),
18016                             "struct and wrapper have different size!" );
18017   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT>::value,
18018                             "struct wrapper is not a standard layout!" );
18019   VULKAN_HPP_STATIC_ASSERT(
18020     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT>::value,
18021     "DebugUtilsMessengerCallbackDataEXT is not nothrow_move_constructible!" );
18022 
18023   template <>
18024   struct CppType<StructureType, StructureType::eDebugUtilsMessengerCallbackDataEXT>
18025   {
18026     using Type = DebugUtilsMessengerCallbackDataEXT;
18027   };
18028 
18029   struct DebugUtilsMessengerCreateInfoEXT
18030   {
18031     using NativeType = VkDebugUtilsMessengerCreateInfoEXT;
18032 
18033     static const bool                                  allowDuplicate = true;
18034     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDebugUtilsMessengerCreateInfoEXT;
18035 
18036 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
18037     VULKAN_HPP_CONSTEXPR
DebugUtilsMessengerCreateInfoEXTVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT18038       DebugUtilsMessengerCreateInfoEXT( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateFlagsEXT flags_           = {},
18039                                         VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagsEXT messageSeverity_ = {},
18040                                         VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT     messageType_     = {},
18041                                         PFN_vkDebugUtilsMessengerCallbackEXT                    pfnUserCallback_ = {},
18042                                         void * pUserData_ = {} ) VULKAN_HPP_NOEXCEPT
18043       : flags( flags_ )
18044       , messageSeverity( messageSeverity_ )
18045       , messageType( messageType_ )
18046       , pfnUserCallback( pfnUserCallback_ )
18047       , pUserData( pUserData_ )
18048     {}
18049 
18050     VULKAN_HPP_CONSTEXPR
18051       DebugUtilsMessengerCreateInfoEXT( DebugUtilsMessengerCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18052 
DebugUtilsMessengerCreateInfoEXTVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT18053     DebugUtilsMessengerCreateInfoEXT( VkDebugUtilsMessengerCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
18054       : DebugUtilsMessengerCreateInfoEXT( *reinterpret_cast<DebugUtilsMessengerCreateInfoEXT const *>( &rhs ) )
18055     {}
18056 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
18057 
18058     DebugUtilsMessengerCreateInfoEXT &
18059       operator=( DebugUtilsMessengerCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18060 
operator =VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT18061     DebugUtilsMessengerCreateInfoEXT & operator=( VkDebugUtilsMessengerCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
18062     {
18063       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT const *>( &rhs );
18064       return *this;
18065     }
18066 
18067 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT18068     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
18069     {
18070       pNext = pNext_;
18071       return *this;
18072     }
18073 
18074     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT &
setFlagsVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT18075       setFlags( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
18076     {
18077       flags = flags_;
18078       return *this;
18079     }
18080 
18081     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT &
setMessageSeverityVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT18082       setMessageSeverity( VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagsEXT messageSeverity_ ) VULKAN_HPP_NOEXCEPT
18083     {
18084       messageSeverity = messageSeverity_;
18085       return *this;
18086     }
18087 
18088     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT &
setMessageTypeVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT18089       setMessageType( VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT messageType_ ) VULKAN_HPP_NOEXCEPT
18090     {
18091       messageType = messageType_;
18092       return *this;
18093     }
18094 
18095     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT &
setPfnUserCallbackVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT18096       setPfnUserCallback( PFN_vkDebugUtilsMessengerCallbackEXT pfnUserCallback_ ) VULKAN_HPP_NOEXCEPT
18097     {
18098       pfnUserCallback = pfnUserCallback_;
18099       return *this;
18100     }
18101 
setPUserDataVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT18102     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT & setPUserData( void * pUserData_ ) VULKAN_HPP_NOEXCEPT
18103     {
18104       pUserData = pUserData_;
18105       return *this;
18106     }
18107 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
18108 
operator VkDebugUtilsMessengerCreateInfoEXT const&VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT18109     explicit operator VkDebugUtilsMessengerCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
18110     {
18111       return *reinterpret_cast<const VkDebugUtilsMessengerCreateInfoEXT *>( this );
18112     }
18113 
operator VkDebugUtilsMessengerCreateInfoEXT&VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT18114     explicit operator VkDebugUtilsMessengerCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
18115     {
18116       return *reinterpret_cast<VkDebugUtilsMessengerCreateInfoEXT *>( this );
18117     }
18118 
18119 #if 14 <= VULKAN_HPP_CPP_VERSION
18120     auto
18121 #else
18122     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
18123                const void * const &,
18124                VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateFlagsEXT const &,
18125                VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagsEXT const &,
18126                VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT const &,
18127                PFN_vkDebugUtilsMessengerCallbackEXT const &,
18128                void * const &>
18129 #endif
reflectVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT18130       reflect() const VULKAN_HPP_NOEXCEPT
18131     {
18132       return std::tie( sType, pNext, flags, messageSeverity, messageType, pfnUserCallback, pUserData );
18133     }
18134 
18135 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
18136     auto operator<=>( DebugUtilsMessengerCreateInfoEXT const & ) const = default;
18137 #else
operator ==VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT18138     bool operator==( DebugUtilsMessengerCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
18139     {
18140       return this->reflect() == rhs.reflect();
18141     }
18142 
operator !=VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT18143     bool operator!=( DebugUtilsMessengerCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
18144     {
18145       return this->reflect() != rhs.reflect();
18146     }
18147 #endif
18148 
18149   public:
18150     VULKAN_HPP_NAMESPACE::StructureType                     sType = StructureType::eDebugUtilsMessengerCreateInfoEXT;
18151     const void *                                            pNext = {};
18152     VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateFlagsEXT flags = {};
18153     VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagsEXT messageSeverity = {};
18154     VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT     messageType     = {};
18155     PFN_vkDebugUtilsMessengerCallbackEXT                    pfnUserCallback = {};
18156     void *                                                  pUserData       = {};
18157   };
18158   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT ) ==
18159                               sizeof( VkDebugUtilsMessengerCreateInfoEXT ),
18160                             "struct and wrapper have different size!" );
18161   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT>::value,
18162                             "struct wrapper is not a standard layout!" );
18163   VULKAN_HPP_STATIC_ASSERT(
18164     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT>::value,
18165     "DebugUtilsMessengerCreateInfoEXT is not nothrow_move_constructible!" );
18166 
18167   template <>
18168   struct CppType<StructureType, StructureType::eDebugUtilsMessengerCreateInfoEXT>
18169   {
18170     using Type = DebugUtilsMessengerCreateInfoEXT;
18171   };
18172 
18173   struct DebugUtilsObjectTagInfoEXT
18174   {
18175     using NativeType = VkDebugUtilsObjectTagInfoEXT;
18176 
18177     static const bool                                  allowDuplicate = false;
18178     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDebugUtilsObjectTagInfoEXT;
18179 
18180 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DebugUtilsObjectTagInfoEXTVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT18181     VULKAN_HPP_CONSTEXPR DebugUtilsObjectTagInfoEXT(
18182       VULKAN_HPP_NAMESPACE::ObjectType objectType_   = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown,
18183       uint64_t                         objectHandle_ = {},
18184       uint64_t                         tagName_      = {},
18185       size_t                           tagSize_      = {},
18186       const void *                     pTag_         = {} ) VULKAN_HPP_NOEXCEPT
18187       : objectType( objectType_ )
18188       , objectHandle( objectHandle_ )
18189       , tagName( tagName_ )
18190       , tagSize( tagSize_ )
18191       , pTag( pTag_ )
18192     {}
18193 
18194     VULKAN_HPP_CONSTEXPR
18195       DebugUtilsObjectTagInfoEXT( DebugUtilsObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18196 
DebugUtilsObjectTagInfoEXTVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT18197     DebugUtilsObjectTagInfoEXT( VkDebugUtilsObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
18198       : DebugUtilsObjectTagInfoEXT( *reinterpret_cast<DebugUtilsObjectTagInfoEXT const *>( &rhs ) )
18199     {}
18200 
18201 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
18202     template <typename T>
DebugUtilsObjectTagInfoEXTVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT18203     DebugUtilsObjectTagInfoEXT( VULKAN_HPP_NAMESPACE::ObjectType                               objectType_,
18204                                 uint64_t                                                       objectHandle_,
18205                                 uint64_t                                                       tagName_,
18206                                 VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & tag_ )
18207       : objectType( objectType_ )
18208       , objectHandle( objectHandle_ )
18209       , tagName( tagName_ )
18210       , tagSize( tag_.size() * sizeof( T ) )
18211       , pTag( tag_.data() )
18212     {}
18213 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
18214 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
18215 
18216     DebugUtilsObjectTagInfoEXT & operator=( DebugUtilsObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18217 
operator =VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT18218     DebugUtilsObjectTagInfoEXT & operator=( VkDebugUtilsObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
18219     {
18220       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT const *>( &rhs );
18221       return *this;
18222     }
18223 
18224 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT18225     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
18226     {
18227       pNext = pNext_;
18228       return *this;
18229     }
18230 
18231     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT &
setObjectTypeVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT18232                             setObjectType( VULKAN_HPP_NAMESPACE::ObjectType objectType_ ) VULKAN_HPP_NOEXCEPT
18233     {
18234       objectType = objectType_;
18235       return *this;
18236     }
18237 
setObjectHandleVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT18238     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT & setObjectHandle( uint64_t objectHandle_ ) VULKAN_HPP_NOEXCEPT
18239     {
18240       objectHandle = objectHandle_;
18241       return *this;
18242     }
18243 
setTagNameVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT18244     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT & setTagName( uint64_t tagName_ ) VULKAN_HPP_NOEXCEPT
18245     {
18246       tagName = tagName_;
18247       return *this;
18248     }
18249 
setTagSizeVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT18250     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT & setTagSize( size_t tagSize_ ) VULKAN_HPP_NOEXCEPT
18251     {
18252       tagSize = tagSize_;
18253       return *this;
18254     }
18255 
setPTagVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT18256     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT & setPTag( const void * pTag_ ) VULKAN_HPP_NOEXCEPT
18257     {
18258       pTag = pTag_;
18259       return *this;
18260     }
18261 
18262 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
18263     template <typename T>
18264     DebugUtilsObjectTagInfoEXT &
setTagVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT18265       setTag( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & tag_ ) VULKAN_HPP_NOEXCEPT
18266     {
18267       tagSize = tag_.size() * sizeof( T );
18268       pTag    = tag_.data();
18269       return *this;
18270     }
18271 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
18272 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
18273 
operator VkDebugUtilsObjectTagInfoEXT const&VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT18274     explicit operator VkDebugUtilsObjectTagInfoEXT const &() const VULKAN_HPP_NOEXCEPT
18275     {
18276       return *reinterpret_cast<const VkDebugUtilsObjectTagInfoEXT *>( this );
18277     }
18278 
operator VkDebugUtilsObjectTagInfoEXT&VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT18279     explicit operator VkDebugUtilsObjectTagInfoEXT &() VULKAN_HPP_NOEXCEPT
18280     {
18281       return *reinterpret_cast<VkDebugUtilsObjectTagInfoEXT *>( this );
18282     }
18283 
18284 #if 14 <= VULKAN_HPP_CPP_VERSION
18285     auto
18286 #else
18287     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
18288                const void * const &,
18289                VULKAN_HPP_NAMESPACE::ObjectType const &,
18290                uint64_t const &,
18291                uint64_t const &,
18292                size_t const &,
18293                const void * const &>
18294 #endif
reflectVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT18295       reflect() const VULKAN_HPP_NOEXCEPT
18296     {
18297       return std::tie( sType, pNext, objectType, objectHandle, tagName, tagSize, pTag );
18298     }
18299 
18300 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
18301     auto operator<=>( DebugUtilsObjectTagInfoEXT const & ) const = default;
18302 #else
operator ==VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT18303     bool operator==( DebugUtilsObjectTagInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
18304     {
18305       return this->reflect() == rhs.reflect();
18306     }
18307 
operator !=VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT18308     bool operator!=( DebugUtilsObjectTagInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
18309     {
18310       return this->reflect() != rhs.reflect();
18311     }
18312 #endif
18313 
18314   public:
18315     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::eDebugUtilsObjectTagInfoEXT;
18316     const void *                        pNext        = {};
18317     VULKAN_HPP_NAMESPACE::ObjectType    objectType   = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown;
18318     uint64_t                            objectHandle = {};
18319     uint64_t                            tagName      = {};
18320     size_t                              tagSize      = {};
18321     const void *                        pTag         = {};
18322   };
18323   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT ) ==
18324                               sizeof( VkDebugUtilsObjectTagInfoEXT ),
18325                             "struct and wrapper have different size!" );
18326   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT>::value,
18327                             "struct wrapper is not a standard layout!" );
18328   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT>::value,
18329                             "DebugUtilsObjectTagInfoEXT is not nothrow_move_constructible!" );
18330 
18331   template <>
18332   struct CppType<StructureType, StructureType::eDebugUtilsObjectTagInfoEXT>
18333   {
18334     using Type = DebugUtilsObjectTagInfoEXT;
18335   };
18336 
18337   struct DedicatedAllocationBufferCreateInfoNV
18338   {
18339     using NativeType = VkDedicatedAllocationBufferCreateInfoNV;
18340 
18341     static const bool                                  allowDuplicate = false;
18342     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
18343       StructureType::eDedicatedAllocationBufferCreateInfoNV;
18344 
18345 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DedicatedAllocationBufferCreateInfoNVVULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV18346     VULKAN_HPP_CONSTEXPR DedicatedAllocationBufferCreateInfoNV( VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocation_ = {} )
18347       VULKAN_HPP_NOEXCEPT : dedicatedAllocation( dedicatedAllocation_ )
18348     {}
18349 
18350     VULKAN_HPP_CONSTEXPR DedicatedAllocationBufferCreateInfoNV( DedicatedAllocationBufferCreateInfoNV const & rhs )
18351       VULKAN_HPP_NOEXCEPT = default;
18352 
DedicatedAllocationBufferCreateInfoNVVULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV18353     DedicatedAllocationBufferCreateInfoNV( VkDedicatedAllocationBufferCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
18354       : DedicatedAllocationBufferCreateInfoNV(
18355           *reinterpret_cast<DedicatedAllocationBufferCreateInfoNV const *>( &rhs ) )
18356     {}
18357 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
18358 
18359     DedicatedAllocationBufferCreateInfoNV &
18360       operator=( DedicatedAllocationBufferCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18361 
18362     DedicatedAllocationBufferCreateInfoNV &
operator =VULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV18363       operator=( VkDedicatedAllocationBufferCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
18364     {
18365       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV const *>( &rhs );
18366       return *this;
18367     }
18368 
18369 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV18370     VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationBufferCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
18371     {
18372       pNext = pNext_;
18373       return *this;
18374     }
18375 
18376     VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationBufferCreateInfoNV &
setDedicatedAllocationVULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV18377       setDedicatedAllocation( VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocation_ ) VULKAN_HPP_NOEXCEPT
18378     {
18379       dedicatedAllocation = dedicatedAllocation_;
18380       return *this;
18381     }
18382 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
18383 
operator VkDedicatedAllocationBufferCreateInfoNV const&VULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV18384     explicit operator VkDedicatedAllocationBufferCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
18385     {
18386       return *reinterpret_cast<const VkDedicatedAllocationBufferCreateInfoNV *>( this );
18387     }
18388 
operator VkDedicatedAllocationBufferCreateInfoNV&VULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV18389     explicit operator VkDedicatedAllocationBufferCreateInfoNV &() VULKAN_HPP_NOEXCEPT
18390     {
18391       return *reinterpret_cast<VkDedicatedAllocationBufferCreateInfoNV *>( this );
18392     }
18393 
18394 #if 14 <= VULKAN_HPP_CPP_VERSION
18395     auto
18396 #else
18397     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
18398 #endif
reflectVULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV18399       reflect() const VULKAN_HPP_NOEXCEPT
18400     {
18401       return std::tie( sType, pNext, dedicatedAllocation );
18402     }
18403 
18404 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
18405     auto operator<=>( DedicatedAllocationBufferCreateInfoNV const & ) const = default;
18406 #else
operator ==VULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV18407     bool operator==( DedicatedAllocationBufferCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
18408     {
18409       return this->reflect() == rhs.reflect();
18410     }
18411 
operator !=VULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV18412     bool operator!=( DedicatedAllocationBufferCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
18413     {
18414       return this->reflect() != rhs.reflect();
18415     }
18416 #endif
18417 
18418   public:
18419     VULKAN_HPP_NAMESPACE::StructureType sType               = StructureType::eDedicatedAllocationBufferCreateInfoNV;
18420     const void *                        pNext               = {};
18421     VULKAN_HPP_NAMESPACE::Bool32        dedicatedAllocation = {};
18422   };
18423   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV ) ==
18424                               sizeof( VkDedicatedAllocationBufferCreateInfoNV ),
18425                             "struct and wrapper have different size!" );
18426   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV>::value,
18427                             "struct wrapper is not a standard layout!" );
18428   VULKAN_HPP_STATIC_ASSERT(
18429     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV>::value,
18430     "DedicatedAllocationBufferCreateInfoNV is not nothrow_move_constructible!" );
18431 
18432   template <>
18433   struct CppType<StructureType, StructureType::eDedicatedAllocationBufferCreateInfoNV>
18434   {
18435     using Type = DedicatedAllocationBufferCreateInfoNV;
18436   };
18437 
18438   struct DedicatedAllocationImageCreateInfoNV
18439   {
18440     using NativeType = VkDedicatedAllocationImageCreateInfoNV;
18441 
18442     static const bool                                  allowDuplicate = false;
18443     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
18444       StructureType::eDedicatedAllocationImageCreateInfoNV;
18445 
18446 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
18447     VULKAN_HPP_CONSTEXPR
DedicatedAllocationImageCreateInfoNVVULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV18448       DedicatedAllocationImageCreateInfoNV( VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocation_ = {} ) VULKAN_HPP_NOEXCEPT
18449       : dedicatedAllocation( dedicatedAllocation_ )
18450     {}
18451 
18452     VULKAN_HPP_CONSTEXPR DedicatedAllocationImageCreateInfoNV( DedicatedAllocationImageCreateInfoNV const & rhs )
18453       VULKAN_HPP_NOEXCEPT = default;
18454 
DedicatedAllocationImageCreateInfoNVVULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV18455     DedicatedAllocationImageCreateInfoNV( VkDedicatedAllocationImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
18456       : DedicatedAllocationImageCreateInfoNV( *reinterpret_cast<DedicatedAllocationImageCreateInfoNV const *>( &rhs ) )
18457     {}
18458 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
18459 
18460     DedicatedAllocationImageCreateInfoNV &
18461       operator=( DedicatedAllocationImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18462 
18463     DedicatedAllocationImageCreateInfoNV &
operator =VULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV18464       operator=( VkDedicatedAllocationImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
18465     {
18466       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV const *>( &rhs );
18467       return *this;
18468     }
18469 
18470 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV18471     VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationImageCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
18472     {
18473       pNext = pNext_;
18474       return *this;
18475     }
18476 
18477     VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationImageCreateInfoNV &
setDedicatedAllocationVULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV18478       setDedicatedAllocation( VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocation_ ) VULKAN_HPP_NOEXCEPT
18479     {
18480       dedicatedAllocation = dedicatedAllocation_;
18481       return *this;
18482     }
18483 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
18484 
operator VkDedicatedAllocationImageCreateInfoNV const&VULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV18485     explicit operator VkDedicatedAllocationImageCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
18486     {
18487       return *reinterpret_cast<const VkDedicatedAllocationImageCreateInfoNV *>( this );
18488     }
18489 
operator VkDedicatedAllocationImageCreateInfoNV&VULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV18490     explicit operator VkDedicatedAllocationImageCreateInfoNV &() VULKAN_HPP_NOEXCEPT
18491     {
18492       return *reinterpret_cast<VkDedicatedAllocationImageCreateInfoNV *>( this );
18493     }
18494 
18495 #if 14 <= VULKAN_HPP_CPP_VERSION
18496     auto
18497 #else
18498     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
18499 #endif
reflectVULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV18500       reflect() const VULKAN_HPP_NOEXCEPT
18501     {
18502       return std::tie( sType, pNext, dedicatedAllocation );
18503     }
18504 
18505 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
18506     auto operator<=>( DedicatedAllocationImageCreateInfoNV const & ) const = default;
18507 #else
operator ==VULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV18508     bool operator==( DedicatedAllocationImageCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
18509     {
18510       return this->reflect() == rhs.reflect();
18511     }
18512 
operator !=VULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV18513     bool operator!=( DedicatedAllocationImageCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
18514     {
18515       return this->reflect() != rhs.reflect();
18516     }
18517 #endif
18518 
18519   public:
18520     VULKAN_HPP_NAMESPACE::StructureType sType               = StructureType::eDedicatedAllocationImageCreateInfoNV;
18521     const void *                        pNext               = {};
18522     VULKAN_HPP_NAMESPACE::Bool32        dedicatedAllocation = {};
18523   };
18524   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV ) ==
18525                               sizeof( VkDedicatedAllocationImageCreateInfoNV ),
18526                             "struct and wrapper have different size!" );
18527   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV>::value,
18528                             "struct wrapper is not a standard layout!" );
18529   VULKAN_HPP_STATIC_ASSERT(
18530     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV>::value,
18531     "DedicatedAllocationImageCreateInfoNV is not nothrow_move_constructible!" );
18532 
18533   template <>
18534   struct CppType<StructureType, StructureType::eDedicatedAllocationImageCreateInfoNV>
18535   {
18536     using Type = DedicatedAllocationImageCreateInfoNV;
18537   };
18538 
18539   struct DedicatedAllocationMemoryAllocateInfoNV
18540   {
18541     using NativeType = VkDedicatedAllocationMemoryAllocateInfoNV;
18542 
18543     static const bool                                  allowDuplicate = false;
18544     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
18545       StructureType::eDedicatedAllocationMemoryAllocateInfoNV;
18546 
18547 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
18548     VULKAN_HPP_CONSTEXPR
DedicatedAllocationMemoryAllocateInfoNVVULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV18549       DedicatedAllocationMemoryAllocateInfoNV( VULKAN_HPP_NAMESPACE::Image  image_  = {},
18550                                                VULKAN_HPP_NAMESPACE::Buffer buffer_ = {} ) VULKAN_HPP_NOEXCEPT
18551       : image( image_ )
18552       , buffer( buffer_ )
18553     {}
18554 
18555     VULKAN_HPP_CONSTEXPR DedicatedAllocationMemoryAllocateInfoNV( DedicatedAllocationMemoryAllocateInfoNV const & rhs )
18556       VULKAN_HPP_NOEXCEPT = default;
18557 
DedicatedAllocationMemoryAllocateInfoNVVULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV18558     DedicatedAllocationMemoryAllocateInfoNV( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
18559       : DedicatedAllocationMemoryAllocateInfoNV(
18560           *reinterpret_cast<DedicatedAllocationMemoryAllocateInfoNV const *>( &rhs ) )
18561     {}
18562 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
18563 
18564     DedicatedAllocationMemoryAllocateInfoNV &
18565       operator=( DedicatedAllocationMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18566 
18567     DedicatedAllocationMemoryAllocateInfoNV &
operator =VULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV18568       operator=( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
18569     {
18570       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV const *>( &rhs );
18571       return *this;
18572     }
18573 
18574 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
18575     VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationMemoryAllocateInfoNV &
setPNextVULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV18576                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
18577     {
18578       pNext = pNext_;
18579       return *this;
18580     }
18581 
18582     VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationMemoryAllocateInfoNV &
setImageVULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV18583                             setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
18584     {
18585       image = image_;
18586       return *this;
18587     }
18588 
18589     VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationMemoryAllocateInfoNV &
setBufferVULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV18590                             setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
18591     {
18592       buffer = buffer_;
18593       return *this;
18594     }
18595 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
18596 
operator VkDedicatedAllocationMemoryAllocateInfoNV const&VULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV18597     explicit operator VkDedicatedAllocationMemoryAllocateInfoNV const &() const VULKAN_HPP_NOEXCEPT
18598     {
18599       return *reinterpret_cast<const VkDedicatedAllocationMemoryAllocateInfoNV *>( this );
18600     }
18601 
operator VkDedicatedAllocationMemoryAllocateInfoNV&VULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV18602     explicit operator VkDedicatedAllocationMemoryAllocateInfoNV &() VULKAN_HPP_NOEXCEPT
18603     {
18604       return *reinterpret_cast<VkDedicatedAllocationMemoryAllocateInfoNV *>( this );
18605     }
18606 
18607 #if 14 <= VULKAN_HPP_CPP_VERSION
18608     auto
18609 #else
18610     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
18611                const void * const &,
18612                VULKAN_HPP_NAMESPACE::Image const &,
18613                VULKAN_HPP_NAMESPACE::Buffer const &>
18614 #endif
reflectVULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV18615       reflect() const VULKAN_HPP_NOEXCEPT
18616     {
18617       return std::tie( sType, pNext, image, buffer );
18618     }
18619 
18620 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
18621     auto operator<=>( DedicatedAllocationMemoryAllocateInfoNV const & ) const = default;
18622 #else
operator ==VULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV18623     bool operator==( DedicatedAllocationMemoryAllocateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
18624     {
18625       return this->reflect() == rhs.reflect();
18626     }
18627 
operator !=VULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV18628     bool operator!=( DedicatedAllocationMemoryAllocateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
18629     {
18630       return this->reflect() != rhs.reflect();
18631     }
18632 #endif
18633 
18634   public:
18635     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eDedicatedAllocationMemoryAllocateInfoNV;
18636     const void *                        pNext  = {};
18637     VULKAN_HPP_NAMESPACE::Image         image  = {};
18638     VULKAN_HPP_NAMESPACE::Buffer        buffer = {};
18639   };
18640   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV ) ==
18641                               sizeof( VkDedicatedAllocationMemoryAllocateInfoNV ),
18642                             "struct and wrapper have different size!" );
18643   VULKAN_HPP_STATIC_ASSERT(
18644     std::is_standard_layout<VULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV>::value,
18645     "struct wrapper is not a standard layout!" );
18646   VULKAN_HPP_STATIC_ASSERT(
18647     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV>::value,
18648     "DedicatedAllocationMemoryAllocateInfoNV is not nothrow_move_constructible!" );
18649 
18650   template <>
18651   struct CppType<StructureType, StructureType::eDedicatedAllocationMemoryAllocateInfoNV>
18652   {
18653     using Type = DedicatedAllocationMemoryAllocateInfoNV;
18654   };
18655 
18656   struct MemoryBarrier2KHR
18657   {
18658     using NativeType = VkMemoryBarrier2KHR;
18659 
18660     static const bool                                  allowDuplicate = false;
18661     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryBarrier2KHR;
18662 
18663 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
18664     VULKAN_HPP_CONSTEXPR
MemoryBarrier2KHRVULKAN_HPP_NAMESPACE::MemoryBarrier2KHR18665       MemoryBarrier2KHR( VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR srcStageMask_  = {},
18666                          VULKAN_HPP_NAMESPACE::AccessFlags2KHR        srcAccessMask_ = {},
18667                          VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR dstStageMask_  = {},
18668                          VULKAN_HPP_NAMESPACE::AccessFlags2KHR        dstAccessMask_ = {} ) VULKAN_HPP_NOEXCEPT
18669       : srcStageMask( srcStageMask_ )
18670       , srcAccessMask( srcAccessMask_ )
18671       , dstStageMask( dstStageMask_ )
18672       , dstAccessMask( dstAccessMask_ )
18673     {}
18674 
18675     VULKAN_HPP_CONSTEXPR MemoryBarrier2KHR( MemoryBarrier2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18676 
MemoryBarrier2KHRVULKAN_HPP_NAMESPACE::MemoryBarrier2KHR18677     MemoryBarrier2KHR( VkMemoryBarrier2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
18678       : MemoryBarrier2KHR( *reinterpret_cast<MemoryBarrier2KHR const *>( &rhs ) )
18679     {}
18680 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
18681 
18682     MemoryBarrier2KHR & operator=( MemoryBarrier2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18683 
operator =VULKAN_HPP_NAMESPACE::MemoryBarrier2KHR18684     MemoryBarrier2KHR & operator=( VkMemoryBarrier2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
18685     {
18686       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryBarrier2KHR const *>( &rhs );
18687       return *this;
18688     }
18689 
18690 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryBarrier2KHR18691     VULKAN_HPP_CONSTEXPR_14 MemoryBarrier2KHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
18692     {
18693       pNext = pNext_;
18694       return *this;
18695     }
18696 
18697     VULKAN_HPP_CONSTEXPR_14 MemoryBarrier2KHR &
setSrcStageMaskVULKAN_HPP_NAMESPACE::MemoryBarrier2KHR18698       setSrcStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR srcStageMask_ ) VULKAN_HPP_NOEXCEPT
18699     {
18700       srcStageMask = srcStageMask_;
18701       return *this;
18702     }
18703 
18704     VULKAN_HPP_CONSTEXPR_14 MemoryBarrier2KHR &
setSrcAccessMaskVULKAN_HPP_NAMESPACE::MemoryBarrier2KHR18705                             setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags2KHR srcAccessMask_ ) VULKAN_HPP_NOEXCEPT
18706     {
18707       srcAccessMask = srcAccessMask_;
18708       return *this;
18709     }
18710 
18711     VULKAN_HPP_CONSTEXPR_14 MemoryBarrier2KHR &
setDstStageMaskVULKAN_HPP_NAMESPACE::MemoryBarrier2KHR18712       setDstStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR dstStageMask_ ) VULKAN_HPP_NOEXCEPT
18713     {
18714       dstStageMask = dstStageMask_;
18715       return *this;
18716     }
18717 
18718     VULKAN_HPP_CONSTEXPR_14 MemoryBarrier2KHR &
setDstAccessMaskVULKAN_HPP_NAMESPACE::MemoryBarrier2KHR18719                             setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags2KHR dstAccessMask_ ) VULKAN_HPP_NOEXCEPT
18720     {
18721       dstAccessMask = dstAccessMask_;
18722       return *this;
18723     }
18724 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
18725 
operator VkMemoryBarrier2KHR const&VULKAN_HPP_NAMESPACE::MemoryBarrier2KHR18726     explicit operator VkMemoryBarrier2KHR const &() const VULKAN_HPP_NOEXCEPT
18727     {
18728       return *reinterpret_cast<const VkMemoryBarrier2KHR *>( this );
18729     }
18730 
operator VkMemoryBarrier2KHR&VULKAN_HPP_NAMESPACE::MemoryBarrier2KHR18731     explicit operator VkMemoryBarrier2KHR &() VULKAN_HPP_NOEXCEPT
18732     {
18733       return *reinterpret_cast<VkMemoryBarrier2KHR *>( this );
18734     }
18735 
18736 #if 14 <= VULKAN_HPP_CPP_VERSION
18737     auto
18738 #else
18739     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
18740                const void * const &,
18741                VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR const &,
18742                VULKAN_HPP_NAMESPACE::AccessFlags2KHR const &,
18743                VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR const &,
18744                VULKAN_HPP_NAMESPACE::AccessFlags2KHR const &>
18745 #endif
reflectVULKAN_HPP_NAMESPACE::MemoryBarrier2KHR18746       reflect() const VULKAN_HPP_NOEXCEPT
18747     {
18748       return std::tie( sType, pNext, srcStageMask, srcAccessMask, dstStageMask, dstAccessMask );
18749     }
18750 
18751 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
18752     auto operator<=>( MemoryBarrier2KHR const & ) const = default;
18753 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryBarrier2KHR18754     bool operator==( MemoryBarrier2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
18755     {
18756       return this->reflect() == rhs.reflect();
18757     }
18758 
operator !=VULKAN_HPP_NAMESPACE::MemoryBarrier2KHR18759     bool operator!=( MemoryBarrier2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
18760     {
18761       return this->reflect() != rhs.reflect();
18762     }
18763 #endif
18764 
18765   public:
18766     VULKAN_HPP_NAMESPACE::StructureType          sType         = StructureType::eMemoryBarrier2KHR;
18767     const void *                                 pNext         = {};
18768     VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR srcStageMask  = {};
18769     VULKAN_HPP_NAMESPACE::AccessFlags2KHR        srcAccessMask = {};
18770     VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR dstStageMask  = {};
18771     VULKAN_HPP_NAMESPACE::AccessFlags2KHR        dstAccessMask = {};
18772   };
18773   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryBarrier2KHR ) == sizeof( VkMemoryBarrier2KHR ),
18774                             "struct and wrapper have different size!" );
18775   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::MemoryBarrier2KHR>::value,
18776                             "struct wrapper is not a standard layout!" );
18777   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::MemoryBarrier2KHR>::value,
18778                             "MemoryBarrier2KHR is not nothrow_move_constructible!" );
18779 
18780   template <>
18781   struct CppType<StructureType, StructureType::eMemoryBarrier2KHR>
18782   {
18783     using Type = MemoryBarrier2KHR;
18784   };
18785 
18786   struct ImageSubresourceRange
18787   {
18788     using NativeType = VkImageSubresourceRange;
18789 
18790 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageSubresourceRangeVULKAN_HPP_NAMESPACE::ImageSubresourceRange18791     VULKAN_HPP_CONSTEXPR ImageSubresourceRange( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_     = {},
18792                                                 uint32_t                               baseMipLevel_   = {},
18793                                                 uint32_t                               levelCount_     = {},
18794                                                 uint32_t                               baseArrayLayer_ = {},
18795                                                 uint32_t layerCount_ = {} ) VULKAN_HPP_NOEXCEPT
18796       : aspectMask( aspectMask_ )
18797       , baseMipLevel( baseMipLevel_ )
18798       , levelCount( levelCount_ )
18799       , baseArrayLayer( baseArrayLayer_ )
18800       , layerCount( layerCount_ )
18801     {}
18802 
18803     VULKAN_HPP_CONSTEXPR ImageSubresourceRange( ImageSubresourceRange const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18804 
ImageSubresourceRangeVULKAN_HPP_NAMESPACE::ImageSubresourceRange18805     ImageSubresourceRange( VkImageSubresourceRange const & rhs ) VULKAN_HPP_NOEXCEPT
18806       : ImageSubresourceRange( *reinterpret_cast<ImageSubresourceRange const *>( &rhs ) )
18807     {}
18808 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
18809 
18810     ImageSubresourceRange & operator=( ImageSubresourceRange const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18811 
operator =VULKAN_HPP_NAMESPACE::ImageSubresourceRange18812     ImageSubresourceRange & operator=( VkImageSubresourceRange const & rhs ) VULKAN_HPP_NOEXCEPT
18813     {
18814       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageSubresourceRange const *>( &rhs );
18815       return *this;
18816     }
18817 
18818 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
18819     VULKAN_HPP_CONSTEXPR_14 ImageSubresourceRange &
setAspectMaskVULKAN_HPP_NAMESPACE::ImageSubresourceRange18820                             setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT
18821     {
18822       aspectMask = aspectMask_;
18823       return *this;
18824     }
18825 
setBaseMipLevelVULKAN_HPP_NAMESPACE::ImageSubresourceRange18826     VULKAN_HPP_CONSTEXPR_14 ImageSubresourceRange & setBaseMipLevel( uint32_t baseMipLevel_ ) VULKAN_HPP_NOEXCEPT
18827     {
18828       baseMipLevel = baseMipLevel_;
18829       return *this;
18830     }
18831 
setLevelCountVULKAN_HPP_NAMESPACE::ImageSubresourceRange18832     VULKAN_HPP_CONSTEXPR_14 ImageSubresourceRange & setLevelCount( uint32_t levelCount_ ) VULKAN_HPP_NOEXCEPT
18833     {
18834       levelCount = levelCount_;
18835       return *this;
18836     }
18837 
setBaseArrayLayerVULKAN_HPP_NAMESPACE::ImageSubresourceRange18838     VULKAN_HPP_CONSTEXPR_14 ImageSubresourceRange & setBaseArrayLayer( uint32_t baseArrayLayer_ ) VULKAN_HPP_NOEXCEPT
18839     {
18840       baseArrayLayer = baseArrayLayer_;
18841       return *this;
18842     }
18843 
setLayerCountVULKAN_HPP_NAMESPACE::ImageSubresourceRange18844     VULKAN_HPP_CONSTEXPR_14 ImageSubresourceRange & setLayerCount( uint32_t layerCount_ ) VULKAN_HPP_NOEXCEPT
18845     {
18846       layerCount = layerCount_;
18847       return *this;
18848     }
18849 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
18850 
operator VkImageSubresourceRange const&VULKAN_HPP_NAMESPACE::ImageSubresourceRange18851     explicit operator VkImageSubresourceRange const &() const VULKAN_HPP_NOEXCEPT
18852     {
18853       return *reinterpret_cast<const VkImageSubresourceRange *>( this );
18854     }
18855 
operator VkImageSubresourceRange&VULKAN_HPP_NAMESPACE::ImageSubresourceRange18856     explicit operator VkImageSubresourceRange &() VULKAN_HPP_NOEXCEPT
18857     {
18858       return *reinterpret_cast<VkImageSubresourceRange *>( this );
18859     }
18860 
18861 #if 14 <= VULKAN_HPP_CPP_VERSION
18862     auto
18863 #else
18864     std::tuple<VULKAN_HPP_NAMESPACE::ImageAspectFlags const &,
18865                uint32_t const &,
18866                uint32_t const &,
18867                uint32_t const &,
18868                uint32_t const &>
18869 #endif
reflectVULKAN_HPP_NAMESPACE::ImageSubresourceRange18870       reflect() const VULKAN_HPP_NOEXCEPT
18871     {
18872       return std::tie( aspectMask, baseMipLevel, levelCount, baseArrayLayer, layerCount );
18873     }
18874 
18875 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
18876     auto operator<=>( ImageSubresourceRange const & ) const = default;
18877 #else
operator ==VULKAN_HPP_NAMESPACE::ImageSubresourceRange18878     bool operator==( ImageSubresourceRange const & rhs ) const VULKAN_HPP_NOEXCEPT
18879     {
18880       return this->reflect() == rhs.reflect();
18881     }
18882 
operator !=VULKAN_HPP_NAMESPACE::ImageSubresourceRange18883     bool operator!=( ImageSubresourceRange const & rhs ) const VULKAN_HPP_NOEXCEPT
18884     {
18885       return this->reflect() != rhs.reflect();
18886     }
18887 #endif
18888 
18889   public:
18890     VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask     = {};
18891     uint32_t                               baseMipLevel   = {};
18892     uint32_t                               levelCount     = {};
18893     uint32_t                               baseArrayLayer = {};
18894     uint32_t                               layerCount     = {};
18895   };
18896   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageSubresourceRange ) == sizeof( VkImageSubresourceRange ),
18897                             "struct and wrapper have different size!" );
18898   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImageSubresourceRange>::value,
18899                             "struct wrapper is not a standard layout!" );
18900   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImageSubresourceRange>::value,
18901                             "ImageSubresourceRange is not nothrow_move_constructible!" );
18902 
18903   struct ImageMemoryBarrier2KHR
18904   {
18905     using NativeType = VkImageMemoryBarrier2KHR;
18906 
18907     static const bool                                  allowDuplicate = false;
18908     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageMemoryBarrier2KHR;
18909 
18910 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageMemoryBarrier2KHRVULKAN_HPP_NAMESPACE::ImageMemoryBarrier2KHR18911     VULKAN_HPP_CONSTEXPR ImageMemoryBarrier2KHR(
18912       VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR srcStageMask_        = {},
18913       VULKAN_HPP_NAMESPACE::AccessFlags2KHR        srcAccessMask_       = {},
18914       VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR dstStageMask_        = {},
18915       VULKAN_HPP_NAMESPACE::AccessFlags2KHR        dstAccessMask_       = {},
18916       VULKAN_HPP_NAMESPACE::ImageLayout            oldLayout_           = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
18917       VULKAN_HPP_NAMESPACE::ImageLayout            newLayout_           = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
18918       uint32_t                                     srcQueueFamilyIndex_ = {},
18919       uint32_t                                     dstQueueFamilyIndex_ = {},
18920       VULKAN_HPP_NAMESPACE::Image                  image_               = {},
18921       VULKAN_HPP_NAMESPACE::ImageSubresourceRange  subresourceRange_    = {} ) VULKAN_HPP_NOEXCEPT
18922       : srcStageMask( srcStageMask_ )
18923       , srcAccessMask( srcAccessMask_ )
18924       , dstStageMask( dstStageMask_ )
18925       , dstAccessMask( dstAccessMask_ )
18926       , oldLayout( oldLayout_ )
18927       , newLayout( newLayout_ )
18928       , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
18929       , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
18930       , image( image_ )
18931       , subresourceRange( subresourceRange_ )
18932     {}
18933 
18934     VULKAN_HPP_CONSTEXPR ImageMemoryBarrier2KHR( ImageMemoryBarrier2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18935 
ImageMemoryBarrier2KHRVULKAN_HPP_NAMESPACE::ImageMemoryBarrier2KHR18936     ImageMemoryBarrier2KHR( VkImageMemoryBarrier2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
18937       : ImageMemoryBarrier2KHR( *reinterpret_cast<ImageMemoryBarrier2KHR const *>( &rhs ) )
18938     {}
18939 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
18940 
18941     ImageMemoryBarrier2KHR & operator=( ImageMemoryBarrier2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18942 
operator =VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2KHR18943     ImageMemoryBarrier2KHR & operator=( VkImageMemoryBarrier2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
18944     {
18945       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2KHR const *>( &rhs );
18946       return *this;
18947     }
18948 
18949 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageMemoryBarrier2KHR18950     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2KHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
18951     {
18952       pNext = pNext_;
18953       return *this;
18954     }
18955 
18956     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2KHR &
setSrcStageMaskVULKAN_HPP_NAMESPACE::ImageMemoryBarrier2KHR18957       setSrcStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR srcStageMask_ ) VULKAN_HPP_NOEXCEPT
18958     {
18959       srcStageMask = srcStageMask_;
18960       return *this;
18961     }
18962 
18963     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2KHR &
setSrcAccessMaskVULKAN_HPP_NAMESPACE::ImageMemoryBarrier2KHR18964                             setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags2KHR srcAccessMask_ ) VULKAN_HPP_NOEXCEPT
18965     {
18966       srcAccessMask = srcAccessMask_;
18967       return *this;
18968     }
18969 
18970     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2KHR &
setDstStageMaskVULKAN_HPP_NAMESPACE::ImageMemoryBarrier2KHR18971       setDstStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR dstStageMask_ ) VULKAN_HPP_NOEXCEPT
18972     {
18973       dstStageMask = dstStageMask_;
18974       return *this;
18975     }
18976 
18977     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2KHR &
setDstAccessMaskVULKAN_HPP_NAMESPACE::ImageMemoryBarrier2KHR18978                             setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags2KHR dstAccessMask_ ) VULKAN_HPP_NOEXCEPT
18979     {
18980       dstAccessMask = dstAccessMask_;
18981       return *this;
18982     }
18983 
18984     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2KHR &
setOldLayoutVULKAN_HPP_NAMESPACE::ImageMemoryBarrier2KHR18985                             setOldLayout( VULKAN_HPP_NAMESPACE::ImageLayout oldLayout_ ) VULKAN_HPP_NOEXCEPT
18986     {
18987       oldLayout = oldLayout_;
18988       return *this;
18989     }
18990 
18991     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2KHR &
setNewLayoutVULKAN_HPP_NAMESPACE::ImageMemoryBarrier2KHR18992                             setNewLayout( VULKAN_HPP_NAMESPACE::ImageLayout newLayout_ ) VULKAN_HPP_NOEXCEPT
18993     {
18994       newLayout = newLayout_;
18995       return *this;
18996     }
18997 
18998     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2KHR &
setSrcQueueFamilyIndexVULKAN_HPP_NAMESPACE::ImageMemoryBarrier2KHR18999                             setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
19000     {
19001       srcQueueFamilyIndex = srcQueueFamilyIndex_;
19002       return *this;
19003     }
19004 
19005     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2KHR &
setDstQueueFamilyIndexVULKAN_HPP_NAMESPACE::ImageMemoryBarrier2KHR19006                             setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
19007     {
19008       dstQueueFamilyIndex = dstQueueFamilyIndex_;
19009       return *this;
19010     }
19011 
setImageVULKAN_HPP_NAMESPACE::ImageMemoryBarrier2KHR19012     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2KHR & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
19013     {
19014       image = image_;
19015       return *this;
19016     }
19017 
19018     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2KHR &
setSubresourceRangeVULKAN_HPP_NAMESPACE::ImageMemoryBarrier2KHR19019       setSubresourceRange( VULKAN_HPP_NAMESPACE::ImageSubresourceRange const & subresourceRange_ ) VULKAN_HPP_NOEXCEPT
19020     {
19021       subresourceRange = subresourceRange_;
19022       return *this;
19023     }
19024 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
19025 
operator VkImageMemoryBarrier2KHR const&VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2KHR19026     explicit operator VkImageMemoryBarrier2KHR const &() const VULKAN_HPP_NOEXCEPT
19027     {
19028       return *reinterpret_cast<const VkImageMemoryBarrier2KHR *>( this );
19029     }
19030 
operator VkImageMemoryBarrier2KHR&VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2KHR19031     explicit operator VkImageMemoryBarrier2KHR &() VULKAN_HPP_NOEXCEPT
19032     {
19033       return *reinterpret_cast<VkImageMemoryBarrier2KHR *>( this );
19034     }
19035 
19036 #if 14 <= VULKAN_HPP_CPP_VERSION
19037     auto
19038 #else
19039     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
19040                const void * const &,
19041                VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR const &,
19042                VULKAN_HPP_NAMESPACE::AccessFlags2KHR const &,
19043                VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR const &,
19044                VULKAN_HPP_NAMESPACE::AccessFlags2KHR const &,
19045                VULKAN_HPP_NAMESPACE::ImageLayout const &,
19046                VULKAN_HPP_NAMESPACE::ImageLayout const &,
19047                uint32_t const &,
19048                uint32_t const &,
19049                VULKAN_HPP_NAMESPACE::Image const &,
19050                VULKAN_HPP_NAMESPACE::ImageSubresourceRange const &>
19051 #endif
reflectVULKAN_HPP_NAMESPACE::ImageMemoryBarrier2KHR19052       reflect() const VULKAN_HPP_NOEXCEPT
19053     {
19054       return std::tie( sType,
19055                        pNext,
19056                        srcStageMask,
19057                        srcAccessMask,
19058                        dstStageMask,
19059                        dstAccessMask,
19060                        oldLayout,
19061                        newLayout,
19062                        srcQueueFamilyIndex,
19063                        dstQueueFamilyIndex,
19064                        image,
19065                        subresourceRange );
19066     }
19067 
19068 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
19069     auto operator<=>( ImageMemoryBarrier2KHR const & ) const = default;
19070 #else
operator ==VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2KHR19071     bool operator==( ImageMemoryBarrier2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
19072     {
19073       return this->reflect() == rhs.reflect();
19074     }
19075 
operator !=VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2KHR19076     bool operator!=( ImageMemoryBarrier2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
19077     {
19078       return this->reflect() != rhs.reflect();
19079     }
19080 #endif
19081 
19082   public:
19083     VULKAN_HPP_NAMESPACE::StructureType          sType               = StructureType::eImageMemoryBarrier2KHR;
19084     const void *                                 pNext               = {};
19085     VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR srcStageMask        = {};
19086     VULKAN_HPP_NAMESPACE::AccessFlags2KHR        srcAccessMask       = {};
19087     VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR dstStageMask        = {};
19088     VULKAN_HPP_NAMESPACE::AccessFlags2KHR        dstAccessMask       = {};
19089     VULKAN_HPP_NAMESPACE::ImageLayout            oldLayout           = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
19090     VULKAN_HPP_NAMESPACE::ImageLayout            newLayout           = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
19091     uint32_t                                     srcQueueFamilyIndex = {};
19092     uint32_t                                     dstQueueFamilyIndex = {};
19093     VULKAN_HPP_NAMESPACE::Image                  image               = {};
19094     VULKAN_HPP_NAMESPACE::ImageSubresourceRange  subresourceRange    = {};
19095   };
19096   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2KHR ) ==
19097                               sizeof( VkImageMemoryBarrier2KHR ),
19098                             "struct and wrapper have different size!" );
19099   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2KHR>::value,
19100                             "struct wrapper is not a standard layout!" );
19101   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2KHR>::value,
19102                             "ImageMemoryBarrier2KHR is not nothrow_move_constructible!" );
19103 
19104   template <>
19105   struct CppType<StructureType, StructureType::eImageMemoryBarrier2KHR>
19106   {
19107     using Type = ImageMemoryBarrier2KHR;
19108   };
19109 
19110   struct DependencyInfoKHR
19111   {
19112     using NativeType = VkDependencyInfoKHR;
19113 
19114     static const bool                                  allowDuplicate = false;
19115     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDependencyInfoKHR;
19116 
19117 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DependencyInfoKHRVULKAN_HPP_NAMESPACE::DependencyInfoKHR19118     VULKAN_HPP_CONSTEXPR DependencyInfoKHR(
19119       VULKAN_HPP_NAMESPACE::DependencyFlags                 dependencyFlags_          = {},
19120       uint32_t                                              memoryBarrierCount_       = {},
19121       const VULKAN_HPP_NAMESPACE::MemoryBarrier2KHR *       pMemoryBarriers_          = {},
19122       uint32_t                                              bufferMemoryBarrierCount_ = {},
19123       const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2KHR * pBufferMemoryBarriers_    = {},
19124       uint32_t                                              imageMemoryBarrierCount_  = {},
19125       const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2KHR *  pImageMemoryBarriers_     = {} ) VULKAN_HPP_NOEXCEPT
19126       : dependencyFlags( dependencyFlags_ )
19127       , memoryBarrierCount( memoryBarrierCount_ )
19128       , pMemoryBarriers( pMemoryBarriers_ )
19129       , bufferMemoryBarrierCount( bufferMemoryBarrierCount_ )
19130       , pBufferMemoryBarriers( pBufferMemoryBarriers_ )
19131       , imageMemoryBarrierCount( imageMemoryBarrierCount_ )
19132       , pImageMemoryBarriers( pImageMemoryBarriers_ )
19133     {}
19134 
19135     VULKAN_HPP_CONSTEXPR DependencyInfoKHR( DependencyInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19136 
DependencyInfoKHRVULKAN_HPP_NAMESPACE::DependencyInfoKHR19137     DependencyInfoKHR( VkDependencyInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
19138       : DependencyInfoKHR( *reinterpret_cast<DependencyInfoKHR const *>( &rhs ) )
19139     {}
19140 
19141 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DependencyInfoKHRVULKAN_HPP_NAMESPACE::DependencyInfoKHR19142     DependencyInfoKHR(
19143       VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags_,
19144       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MemoryBarrier2KHR> const &
19145         memoryBarriers_,
19146       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2KHR> const &
19147         bufferMemoryBarriers_ = {},
19148       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2KHR> const &
19149         imageMemoryBarriers_ = {} )
19150       : dependencyFlags( dependencyFlags_ )
19151       , memoryBarrierCount( static_cast<uint32_t>( memoryBarriers_.size() ) )
19152       , pMemoryBarriers( memoryBarriers_.data() )
19153       , bufferMemoryBarrierCount( static_cast<uint32_t>( bufferMemoryBarriers_.size() ) )
19154       , pBufferMemoryBarriers( bufferMemoryBarriers_.data() )
19155       , imageMemoryBarrierCount( static_cast<uint32_t>( imageMemoryBarriers_.size() ) )
19156       , pImageMemoryBarriers( imageMemoryBarriers_.data() )
19157     {}
19158 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
19159 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
19160 
19161     DependencyInfoKHR & operator=( DependencyInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19162 
operator =VULKAN_HPP_NAMESPACE::DependencyInfoKHR19163     DependencyInfoKHR & operator=( VkDependencyInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
19164     {
19165       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DependencyInfoKHR const *>( &rhs );
19166       return *this;
19167     }
19168 
19169 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DependencyInfoKHR19170     VULKAN_HPP_CONSTEXPR_14 DependencyInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
19171     {
19172       pNext = pNext_;
19173       return *this;
19174     }
19175 
19176     VULKAN_HPP_CONSTEXPR_14 DependencyInfoKHR &
setDependencyFlagsVULKAN_HPP_NAMESPACE::DependencyInfoKHR19177       setDependencyFlags( VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags_ ) VULKAN_HPP_NOEXCEPT
19178     {
19179       dependencyFlags = dependencyFlags_;
19180       return *this;
19181     }
19182 
19183     VULKAN_HPP_CONSTEXPR_14 DependencyInfoKHR &
setMemoryBarrierCountVULKAN_HPP_NAMESPACE::DependencyInfoKHR19184                             setMemoryBarrierCount( uint32_t memoryBarrierCount_ ) VULKAN_HPP_NOEXCEPT
19185     {
19186       memoryBarrierCount = memoryBarrierCount_;
19187       return *this;
19188     }
19189 
19190     VULKAN_HPP_CONSTEXPR_14 DependencyInfoKHR &
setPMemoryBarriersVULKAN_HPP_NAMESPACE::DependencyInfoKHR19191       setPMemoryBarriers( const VULKAN_HPP_NAMESPACE::MemoryBarrier2KHR * pMemoryBarriers_ ) VULKAN_HPP_NOEXCEPT
19192     {
19193       pMemoryBarriers = pMemoryBarriers_;
19194       return *this;
19195     }
19196 
19197 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setMemoryBarriersVULKAN_HPP_NAMESPACE::DependencyInfoKHR19198     DependencyInfoKHR & setMemoryBarriers(
19199       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MemoryBarrier2KHR> const &
19200         memoryBarriers_ ) VULKAN_HPP_NOEXCEPT
19201     {
19202       memoryBarrierCount = static_cast<uint32_t>( memoryBarriers_.size() );
19203       pMemoryBarriers    = memoryBarriers_.data();
19204       return *this;
19205     }
19206 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
19207 
19208     VULKAN_HPP_CONSTEXPR_14 DependencyInfoKHR &
setBufferMemoryBarrierCountVULKAN_HPP_NAMESPACE::DependencyInfoKHR19209                             setBufferMemoryBarrierCount( uint32_t bufferMemoryBarrierCount_ ) VULKAN_HPP_NOEXCEPT
19210     {
19211       bufferMemoryBarrierCount = bufferMemoryBarrierCount_;
19212       return *this;
19213     }
19214 
setPBufferMemoryBarriersVULKAN_HPP_NAMESPACE::DependencyInfoKHR19215     VULKAN_HPP_CONSTEXPR_14 DependencyInfoKHR & setPBufferMemoryBarriers(
19216       const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2KHR * pBufferMemoryBarriers_ ) VULKAN_HPP_NOEXCEPT
19217     {
19218       pBufferMemoryBarriers = pBufferMemoryBarriers_;
19219       return *this;
19220     }
19221 
19222 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setBufferMemoryBarriersVULKAN_HPP_NAMESPACE::DependencyInfoKHR19223     DependencyInfoKHR & setBufferMemoryBarriers(
19224       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2KHR> const &
19225         bufferMemoryBarriers_ ) VULKAN_HPP_NOEXCEPT
19226     {
19227       bufferMemoryBarrierCount = static_cast<uint32_t>( bufferMemoryBarriers_.size() );
19228       pBufferMemoryBarriers    = bufferMemoryBarriers_.data();
19229       return *this;
19230     }
19231 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
19232 
19233     VULKAN_HPP_CONSTEXPR_14 DependencyInfoKHR &
setImageMemoryBarrierCountVULKAN_HPP_NAMESPACE::DependencyInfoKHR19234                             setImageMemoryBarrierCount( uint32_t imageMemoryBarrierCount_ ) VULKAN_HPP_NOEXCEPT
19235     {
19236       imageMemoryBarrierCount = imageMemoryBarrierCount_;
19237       return *this;
19238     }
19239 
setPImageMemoryBarriersVULKAN_HPP_NAMESPACE::DependencyInfoKHR19240     VULKAN_HPP_CONSTEXPR_14 DependencyInfoKHR & setPImageMemoryBarriers(
19241       const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2KHR * pImageMemoryBarriers_ ) VULKAN_HPP_NOEXCEPT
19242     {
19243       pImageMemoryBarriers = pImageMemoryBarriers_;
19244       return *this;
19245     }
19246 
19247 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setImageMemoryBarriersVULKAN_HPP_NAMESPACE::DependencyInfoKHR19248     DependencyInfoKHR & setImageMemoryBarriers(
19249       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2KHR> const &
19250         imageMemoryBarriers_ ) VULKAN_HPP_NOEXCEPT
19251     {
19252       imageMemoryBarrierCount = static_cast<uint32_t>( imageMemoryBarriers_.size() );
19253       pImageMemoryBarriers    = imageMemoryBarriers_.data();
19254       return *this;
19255     }
19256 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
19257 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
19258 
operator VkDependencyInfoKHR const&VULKAN_HPP_NAMESPACE::DependencyInfoKHR19259     explicit operator VkDependencyInfoKHR const &() const VULKAN_HPP_NOEXCEPT
19260     {
19261       return *reinterpret_cast<const VkDependencyInfoKHR *>( this );
19262     }
19263 
operator VkDependencyInfoKHR&VULKAN_HPP_NAMESPACE::DependencyInfoKHR19264     explicit operator VkDependencyInfoKHR &() VULKAN_HPP_NOEXCEPT
19265     {
19266       return *reinterpret_cast<VkDependencyInfoKHR *>( this );
19267     }
19268 
19269 #if 14 <= VULKAN_HPP_CPP_VERSION
19270     auto
19271 #else
19272     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
19273                const void * const &,
19274                VULKAN_HPP_NAMESPACE::DependencyFlags const &,
19275                uint32_t const &,
19276                const VULKAN_HPP_NAMESPACE::MemoryBarrier2KHR * const &,
19277                uint32_t const &,
19278                const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2KHR * const &,
19279                uint32_t const &,
19280                const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2KHR * const &>
19281 #endif
reflectVULKAN_HPP_NAMESPACE::DependencyInfoKHR19282       reflect() const VULKAN_HPP_NOEXCEPT
19283     {
19284       return std::tie( sType,
19285                        pNext,
19286                        dependencyFlags,
19287                        memoryBarrierCount,
19288                        pMemoryBarriers,
19289                        bufferMemoryBarrierCount,
19290                        pBufferMemoryBarriers,
19291                        imageMemoryBarrierCount,
19292                        pImageMemoryBarriers );
19293     }
19294 
19295 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
19296     auto operator<=>( DependencyInfoKHR const & ) const = default;
19297 #else
operator ==VULKAN_HPP_NAMESPACE::DependencyInfoKHR19298     bool operator==( DependencyInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
19299     {
19300       return this->reflect() == rhs.reflect();
19301     }
19302 
operator !=VULKAN_HPP_NAMESPACE::DependencyInfoKHR19303     bool operator!=( DependencyInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
19304     {
19305       return this->reflect() != rhs.reflect();
19306     }
19307 #endif
19308 
19309   public:
19310     VULKAN_HPP_NAMESPACE::StructureType                   sType                    = StructureType::eDependencyInfoKHR;
19311     const void *                                          pNext                    = {};
19312     VULKAN_HPP_NAMESPACE::DependencyFlags                 dependencyFlags          = {};
19313     uint32_t                                              memoryBarrierCount       = {};
19314     const VULKAN_HPP_NAMESPACE::MemoryBarrier2KHR *       pMemoryBarriers          = {};
19315     uint32_t                                              bufferMemoryBarrierCount = {};
19316     const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2KHR * pBufferMemoryBarriers    = {};
19317     uint32_t                                              imageMemoryBarrierCount  = {};
19318     const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2KHR *  pImageMemoryBarriers     = {};
19319   };
19320   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DependencyInfoKHR ) == sizeof( VkDependencyInfoKHR ),
19321                             "struct and wrapper have different size!" );
19322   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DependencyInfoKHR>::value,
19323                             "struct wrapper is not a standard layout!" );
19324   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DependencyInfoKHR>::value,
19325                             "DependencyInfoKHR is not nothrow_move_constructible!" );
19326 
19327   template <>
19328   struct CppType<StructureType, StructureType::eDependencyInfoKHR>
19329   {
19330     using Type = DependencyInfoKHR;
19331   };
19332 
19333   struct DescriptorBufferInfo
19334   {
19335     using NativeType = VkDescriptorBufferInfo;
19336 
19337 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorBufferInfoVULKAN_HPP_NAMESPACE::DescriptorBufferInfo19338     VULKAN_HPP_CONSTEXPR DescriptorBufferInfo( VULKAN_HPP_NAMESPACE::Buffer     buffer_ = {},
19339                                                VULKAN_HPP_NAMESPACE::DeviceSize offset_ = {},
19340                                                VULKAN_HPP_NAMESPACE::DeviceSize range_  = {} ) VULKAN_HPP_NOEXCEPT
19341       : buffer( buffer_ )
19342       , offset( offset_ )
19343       , range( range_ )
19344     {}
19345 
19346     VULKAN_HPP_CONSTEXPR DescriptorBufferInfo( DescriptorBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19347 
DescriptorBufferInfoVULKAN_HPP_NAMESPACE::DescriptorBufferInfo19348     DescriptorBufferInfo( VkDescriptorBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT
19349       : DescriptorBufferInfo( *reinterpret_cast<DescriptorBufferInfo const *>( &rhs ) )
19350     {}
19351 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
19352 
19353     DescriptorBufferInfo & operator=( DescriptorBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19354 
operator =VULKAN_HPP_NAMESPACE::DescriptorBufferInfo19355     DescriptorBufferInfo & operator=( VkDescriptorBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT
19356     {
19357       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorBufferInfo const *>( &rhs );
19358       return *this;
19359     }
19360 
19361 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setBufferVULKAN_HPP_NAMESPACE::DescriptorBufferInfo19362     VULKAN_HPP_CONSTEXPR_14 DescriptorBufferInfo & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
19363     {
19364       buffer = buffer_;
19365       return *this;
19366     }
19367 
19368     VULKAN_HPP_CONSTEXPR_14 DescriptorBufferInfo &
setOffsetVULKAN_HPP_NAMESPACE::DescriptorBufferInfo19369                             setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
19370     {
19371       offset = offset_;
19372       return *this;
19373     }
19374 
19375     VULKAN_HPP_CONSTEXPR_14 DescriptorBufferInfo &
setRangeVULKAN_HPP_NAMESPACE::DescriptorBufferInfo19376                             setRange( VULKAN_HPP_NAMESPACE::DeviceSize range_ ) VULKAN_HPP_NOEXCEPT
19377     {
19378       range = range_;
19379       return *this;
19380     }
19381 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
19382 
operator VkDescriptorBufferInfo const&VULKAN_HPP_NAMESPACE::DescriptorBufferInfo19383     explicit operator VkDescriptorBufferInfo const &() const VULKAN_HPP_NOEXCEPT
19384     {
19385       return *reinterpret_cast<const VkDescriptorBufferInfo *>( this );
19386     }
19387 
operator VkDescriptorBufferInfo&VULKAN_HPP_NAMESPACE::DescriptorBufferInfo19388     explicit operator VkDescriptorBufferInfo &() VULKAN_HPP_NOEXCEPT
19389     {
19390       return *reinterpret_cast<VkDescriptorBufferInfo *>( this );
19391     }
19392 
19393 #if 14 <= VULKAN_HPP_CPP_VERSION
19394     auto
19395 #else
19396     std::tuple<VULKAN_HPP_NAMESPACE::Buffer const &,
19397                VULKAN_HPP_NAMESPACE::DeviceSize const &,
19398                VULKAN_HPP_NAMESPACE::DeviceSize const &>
19399 #endif
reflectVULKAN_HPP_NAMESPACE::DescriptorBufferInfo19400       reflect() const VULKAN_HPP_NOEXCEPT
19401     {
19402       return std::tie( buffer, offset, range );
19403     }
19404 
19405 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
19406     auto operator<=>( DescriptorBufferInfo const & ) const = default;
19407 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorBufferInfo19408     bool operator==( DescriptorBufferInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
19409     {
19410       return this->reflect() == rhs.reflect();
19411     }
19412 
operator !=VULKAN_HPP_NAMESPACE::DescriptorBufferInfo19413     bool operator!=( DescriptorBufferInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
19414     {
19415       return this->reflect() != rhs.reflect();
19416     }
19417 #endif
19418 
19419   public:
19420     VULKAN_HPP_NAMESPACE::Buffer     buffer = {};
19421     VULKAN_HPP_NAMESPACE::DeviceSize offset = {};
19422     VULKAN_HPP_NAMESPACE::DeviceSize range  = {};
19423   };
19424   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorBufferInfo ) == sizeof( VkDescriptorBufferInfo ),
19425                             "struct and wrapper have different size!" );
19426   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DescriptorBufferInfo>::value,
19427                             "struct wrapper is not a standard layout!" );
19428   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DescriptorBufferInfo>::value,
19429                             "DescriptorBufferInfo is not nothrow_move_constructible!" );
19430 
19431   struct DescriptorImageInfo
19432   {
19433     using NativeType = VkDescriptorImageInfo;
19434 
19435 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorImageInfoVULKAN_HPP_NAMESPACE::DescriptorImageInfo19436     VULKAN_HPP_CONSTEXPR DescriptorImageInfo( VULKAN_HPP_NAMESPACE::Sampler     sampler_   = {},
19437                                               VULKAN_HPP_NAMESPACE::ImageView   imageView_ = {},
19438                                               VULKAN_HPP_NAMESPACE::ImageLayout imageLayout_ =
19439                                                 VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined ) VULKAN_HPP_NOEXCEPT
19440       : sampler( sampler_ )
19441       , imageView( imageView_ )
19442       , imageLayout( imageLayout_ )
19443     {}
19444 
19445     VULKAN_HPP_CONSTEXPR DescriptorImageInfo( DescriptorImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19446 
DescriptorImageInfoVULKAN_HPP_NAMESPACE::DescriptorImageInfo19447     DescriptorImageInfo( VkDescriptorImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT
19448       : DescriptorImageInfo( *reinterpret_cast<DescriptorImageInfo const *>( &rhs ) )
19449     {}
19450 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
19451 
19452     DescriptorImageInfo & operator=( DescriptorImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19453 
operator =VULKAN_HPP_NAMESPACE::DescriptorImageInfo19454     DescriptorImageInfo & operator=( VkDescriptorImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT
19455     {
19456       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorImageInfo const *>( &rhs );
19457       return *this;
19458     }
19459 
19460 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
19461     VULKAN_HPP_CONSTEXPR_14 DescriptorImageInfo &
setSamplerVULKAN_HPP_NAMESPACE::DescriptorImageInfo19462                             setSampler( VULKAN_HPP_NAMESPACE::Sampler sampler_ ) VULKAN_HPP_NOEXCEPT
19463     {
19464       sampler = sampler_;
19465       return *this;
19466     }
19467 
19468     VULKAN_HPP_CONSTEXPR_14 DescriptorImageInfo &
setImageViewVULKAN_HPP_NAMESPACE::DescriptorImageInfo19469                             setImageView( VULKAN_HPP_NAMESPACE::ImageView imageView_ ) VULKAN_HPP_NOEXCEPT
19470     {
19471       imageView = imageView_;
19472       return *this;
19473     }
19474 
19475     VULKAN_HPP_CONSTEXPR_14 DescriptorImageInfo &
setImageLayoutVULKAN_HPP_NAMESPACE::DescriptorImageInfo19476                             setImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout imageLayout_ ) VULKAN_HPP_NOEXCEPT
19477     {
19478       imageLayout = imageLayout_;
19479       return *this;
19480     }
19481 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
19482 
operator VkDescriptorImageInfo const&VULKAN_HPP_NAMESPACE::DescriptorImageInfo19483     explicit operator VkDescriptorImageInfo const &() const VULKAN_HPP_NOEXCEPT
19484     {
19485       return *reinterpret_cast<const VkDescriptorImageInfo *>( this );
19486     }
19487 
operator VkDescriptorImageInfo&VULKAN_HPP_NAMESPACE::DescriptorImageInfo19488     explicit operator VkDescriptorImageInfo &() VULKAN_HPP_NOEXCEPT
19489     {
19490       return *reinterpret_cast<VkDescriptorImageInfo *>( this );
19491     }
19492 
19493 #if 14 <= VULKAN_HPP_CPP_VERSION
19494     auto
19495 #else
19496     std::tuple<VULKAN_HPP_NAMESPACE::Sampler const &,
19497                VULKAN_HPP_NAMESPACE::ImageView const &,
19498                VULKAN_HPP_NAMESPACE::ImageLayout const &>
19499 #endif
reflectVULKAN_HPP_NAMESPACE::DescriptorImageInfo19500       reflect() const VULKAN_HPP_NOEXCEPT
19501     {
19502       return std::tie( sampler, imageView, imageLayout );
19503     }
19504 
19505 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
19506     auto operator<=>( DescriptorImageInfo const & ) const = default;
19507 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorImageInfo19508     bool operator==( DescriptorImageInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
19509     {
19510       return this->reflect() == rhs.reflect();
19511     }
19512 
operator !=VULKAN_HPP_NAMESPACE::DescriptorImageInfo19513     bool operator!=( DescriptorImageInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
19514     {
19515       return this->reflect() != rhs.reflect();
19516     }
19517 #endif
19518 
19519   public:
19520     VULKAN_HPP_NAMESPACE::Sampler     sampler     = {};
19521     VULKAN_HPP_NAMESPACE::ImageView   imageView   = {};
19522     VULKAN_HPP_NAMESPACE::ImageLayout imageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
19523   };
19524   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorImageInfo ) == sizeof( VkDescriptorImageInfo ),
19525                             "struct and wrapper have different size!" );
19526   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DescriptorImageInfo>::value,
19527                             "struct wrapper is not a standard layout!" );
19528   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DescriptorImageInfo>::value,
19529                             "DescriptorImageInfo is not nothrow_move_constructible!" );
19530 
19531   struct DescriptorPoolSize
19532   {
19533     using NativeType = VkDescriptorPoolSize;
19534 
19535 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
19536     VULKAN_HPP_CONSTEXPR
DescriptorPoolSizeVULKAN_HPP_NAMESPACE::DescriptorPoolSize19537       DescriptorPoolSize( VULKAN_HPP_NAMESPACE::DescriptorType type_ = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler,
19538                           uint32_t                             descriptorCount_ = {} ) VULKAN_HPP_NOEXCEPT
19539       : type( type_ )
19540       , descriptorCount( descriptorCount_ )
19541     {}
19542 
19543     VULKAN_HPP_CONSTEXPR DescriptorPoolSize( DescriptorPoolSize const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19544 
DescriptorPoolSizeVULKAN_HPP_NAMESPACE::DescriptorPoolSize19545     DescriptorPoolSize( VkDescriptorPoolSize const & rhs ) VULKAN_HPP_NOEXCEPT
19546       : DescriptorPoolSize( *reinterpret_cast<DescriptorPoolSize const *>( &rhs ) )
19547     {}
19548 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
19549 
19550     DescriptorPoolSize & operator=( DescriptorPoolSize const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19551 
operator =VULKAN_HPP_NAMESPACE::DescriptorPoolSize19552     DescriptorPoolSize & operator=( VkDescriptorPoolSize const & rhs ) VULKAN_HPP_NOEXCEPT
19553     {
19554       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorPoolSize const *>( &rhs );
19555       return *this;
19556     }
19557 
19558 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
19559     VULKAN_HPP_CONSTEXPR_14 DescriptorPoolSize &
setTypeVULKAN_HPP_NAMESPACE::DescriptorPoolSize19560                             setType( VULKAN_HPP_NAMESPACE::DescriptorType type_ ) VULKAN_HPP_NOEXCEPT
19561     {
19562       type = type_;
19563       return *this;
19564     }
19565 
setDescriptorCountVULKAN_HPP_NAMESPACE::DescriptorPoolSize19566     VULKAN_HPP_CONSTEXPR_14 DescriptorPoolSize & setDescriptorCount( uint32_t descriptorCount_ ) VULKAN_HPP_NOEXCEPT
19567     {
19568       descriptorCount = descriptorCount_;
19569       return *this;
19570     }
19571 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
19572 
operator VkDescriptorPoolSize const&VULKAN_HPP_NAMESPACE::DescriptorPoolSize19573     explicit operator VkDescriptorPoolSize const &() const VULKAN_HPP_NOEXCEPT
19574     {
19575       return *reinterpret_cast<const VkDescriptorPoolSize *>( this );
19576     }
19577 
operator VkDescriptorPoolSize&VULKAN_HPP_NAMESPACE::DescriptorPoolSize19578     explicit operator VkDescriptorPoolSize &() VULKAN_HPP_NOEXCEPT
19579     {
19580       return *reinterpret_cast<VkDescriptorPoolSize *>( this );
19581     }
19582 
19583 #if 14 <= VULKAN_HPP_CPP_VERSION
19584     auto
19585 #else
19586     std::tuple<VULKAN_HPP_NAMESPACE::DescriptorType const &, uint32_t const &>
19587 #endif
reflectVULKAN_HPP_NAMESPACE::DescriptorPoolSize19588       reflect() const VULKAN_HPP_NOEXCEPT
19589     {
19590       return std::tie( type, descriptorCount );
19591     }
19592 
19593 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
19594     auto operator<=>( DescriptorPoolSize const & ) const = default;
19595 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorPoolSize19596     bool operator==( DescriptorPoolSize const & rhs ) const VULKAN_HPP_NOEXCEPT
19597     {
19598       return this->reflect() == rhs.reflect();
19599     }
19600 
operator !=VULKAN_HPP_NAMESPACE::DescriptorPoolSize19601     bool operator!=( DescriptorPoolSize const & rhs ) const VULKAN_HPP_NOEXCEPT
19602     {
19603       return this->reflect() != rhs.reflect();
19604     }
19605 #endif
19606 
19607   public:
19608     VULKAN_HPP_NAMESPACE::DescriptorType type            = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler;
19609     uint32_t                             descriptorCount = {};
19610   };
19611   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorPoolSize ) == sizeof( VkDescriptorPoolSize ),
19612                             "struct and wrapper have different size!" );
19613   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DescriptorPoolSize>::value,
19614                             "struct wrapper is not a standard layout!" );
19615   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DescriptorPoolSize>::value,
19616                             "DescriptorPoolSize is not nothrow_move_constructible!" );
19617 
19618   struct DescriptorPoolCreateInfo
19619   {
19620     using NativeType = VkDescriptorPoolCreateInfo;
19621 
19622     static const bool                                  allowDuplicate = false;
19623     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDescriptorPoolCreateInfo;
19624 
19625 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
19626     VULKAN_HPP_CONSTEXPR
DescriptorPoolCreateInfoVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo19627       DescriptorPoolCreateInfo( VULKAN_HPP_NAMESPACE::DescriptorPoolCreateFlags  flags_         = {},
19628                                 uint32_t                                         maxSets_       = {},
19629                                 uint32_t                                         poolSizeCount_ = {},
19630                                 const VULKAN_HPP_NAMESPACE::DescriptorPoolSize * pPoolSizes_ = {} ) VULKAN_HPP_NOEXCEPT
19631       : flags( flags_ )
19632       , maxSets( maxSets_ )
19633       , poolSizeCount( poolSizeCount_ )
19634       , pPoolSizes( pPoolSizes_ )
19635     {}
19636 
19637     VULKAN_HPP_CONSTEXPR DescriptorPoolCreateInfo( DescriptorPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19638 
DescriptorPoolCreateInfoVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo19639     DescriptorPoolCreateInfo( VkDescriptorPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
19640       : DescriptorPoolCreateInfo( *reinterpret_cast<DescriptorPoolCreateInfo const *>( &rhs ) )
19641     {}
19642 
19643 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DescriptorPoolCreateInfoVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo19644     DescriptorPoolCreateInfo(
19645       VULKAN_HPP_NAMESPACE::DescriptorPoolCreateFlags                                                       flags_,
19646       uint32_t                                                                                              maxSets_,
19647       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorPoolSize> const & poolSizes_ )
19648       : flags( flags_ )
19649       , maxSets( maxSets_ )
19650       , poolSizeCount( static_cast<uint32_t>( poolSizes_.size() ) )
19651       , pPoolSizes( poolSizes_.data() )
19652     {}
19653 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
19654 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
19655 
19656     DescriptorPoolCreateInfo & operator=( DescriptorPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19657 
operator =VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo19658     DescriptorPoolCreateInfo & operator=( VkDescriptorPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
19659     {
19660       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo const *>( &rhs );
19661       return *this;
19662     }
19663 
19664 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo19665     VULKAN_HPP_CONSTEXPR_14 DescriptorPoolCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
19666     {
19667       pNext = pNext_;
19668       return *this;
19669     }
19670 
19671     VULKAN_HPP_CONSTEXPR_14 DescriptorPoolCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo19672                             setFlags( VULKAN_HPP_NAMESPACE::DescriptorPoolCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
19673     {
19674       flags = flags_;
19675       return *this;
19676     }
19677 
setMaxSetsVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo19678     VULKAN_HPP_CONSTEXPR_14 DescriptorPoolCreateInfo & setMaxSets( uint32_t maxSets_ ) VULKAN_HPP_NOEXCEPT
19679     {
19680       maxSets = maxSets_;
19681       return *this;
19682     }
19683 
setPoolSizeCountVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo19684     VULKAN_HPP_CONSTEXPR_14 DescriptorPoolCreateInfo & setPoolSizeCount( uint32_t poolSizeCount_ ) VULKAN_HPP_NOEXCEPT
19685     {
19686       poolSizeCount = poolSizeCount_;
19687       return *this;
19688     }
19689 
19690     VULKAN_HPP_CONSTEXPR_14 DescriptorPoolCreateInfo &
setPPoolSizesVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo19691       setPPoolSizes( const VULKAN_HPP_NAMESPACE::DescriptorPoolSize * pPoolSizes_ ) VULKAN_HPP_NOEXCEPT
19692     {
19693       pPoolSizes = pPoolSizes_;
19694       return *this;
19695     }
19696 
19697 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPoolSizesVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo19698     DescriptorPoolCreateInfo & setPoolSizes(
19699       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorPoolSize> const & poolSizes_ )
19700       VULKAN_HPP_NOEXCEPT
19701     {
19702       poolSizeCount = static_cast<uint32_t>( poolSizes_.size() );
19703       pPoolSizes    = poolSizes_.data();
19704       return *this;
19705     }
19706 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
19707 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
19708 
operator VkDescriptorPoolCreateInfo const&VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo19709     explicit operator VkDescriptorPoolCreateInfo const &() const VULKAN_HPP_NOEXCEPT
19710     {
19711       return *reinterpret_cast<const VkDescriptorPoolCreateInfo *>( this );
19712     }
19713 
operator VkDescriptorPoolCreateInfo&VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo19714     explicit operator VkDescriptorPoolCreateInfo &() VULKAN_HPP_NOEXCEPT
19715     {
19716       return *reinterpret_cast<VkDescriptorPoolCreateInfo *>( this );
19717     }
19718 
19719 #if 14 <= VULKAN_HPP_CPP_VERSION
19720     auto
19721 #else
19722     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
19723                const void * const &,
19724                VULKAN_HPP_NAMESPACE::DescriptorPoolCreateFlags const &,
19725                uint32_t const &,
19726                uint32_t const &,
19727                const VULKAN_HPP_NAMESPACE::DescriptorPoolSize * const &>
19728 #endif
reflectVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo19729       reflect() const VULKAN_HPP_NOEXCEPT
19730     {
19731       return std::tie( sType, pNext, flags, maxSets, poolSizeCount, pPoolSizes );
19732     }
19733 
19734 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
19735     auto operator<=>( DescriptorPoolCreateInfo const & ) const = default;
19736 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo19737     bool operator==( DescriptorPoolCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
19738     {
19739       return this->reflect() == rhs.reflect();
19740     }
19741 
operator !=VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo19742     bool operator!=( DescriptorPoolCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
19743     {
19744       return this->reflect() != rhs.reflect();
19745     }
19746 #endif
19747 
19748   public:
19749     VULKAN_HPP_NAMESPACE::StructureType              sType         = StructureType::eDescriptorPoolCreateInfo;
19750     const void *                                     pNext         = {};
19751     VULKAN_HPP_NAMESPACE::DescriptorPoolCreateFlags  flags         = {};
19752     uint32_t                                         maxSets       = {};
19753     uint32_t                                         poolSizeCount = {};
19754     const VULKAN_HPP_NAMESPACE::DescriptorPoolSize * pPoolSizes    = {};
19755   };
19756   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo ) ==
19757                               sizeof( VkDescriptorPoolCreateInfo ),
19758                             "struct and wrapper have different size!" );
19759   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo>::value,
19760                             "struct wrapper is not a standard layout!" );
19761   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo>::value,
19762                             "DescriptorPoolCreateInfo is not nothrow_move_constructible!" );
19763 
19764   template <>
19765   struct CppType<StructureType, StructureType::eDescriptorPoolCreateInfo>
19766   {
19767     using Type = DescriptorPoolCreateInfo;
19768   };
19769 
19770   struct DescriptorPoolInlineUniformBlockCreateInfoEXT
19771   {
19772     using NativeType = VkDescriptorPoolInlineUniformBlockCreateInfoEXT;
19773 
19774     static const bool                                  allowDuplicate = false;
19775     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
19776       StructureType::eDescriptorPoolInlineUniformBlockCreateInfoEXT;
19777 
19778 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
19779     VULKAN_HPP_CONSTEXPR
DescriptorPoolInlineUniformBlockCreateInfoEXTVULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfoEXT19780       DescriptorPoolInlineUniformBlockCreateInfoEXT( uint32_t maxInlineUniformBlockBindings_ = {} ) VULKAN_HPP_NOEXCEPT
19781       : maxInlineUniformBlockBindings( maxInlineUniformBlockBindings_ )
19782     {}
19783 
19784     VULKAN_HPP_CONSTEXPR DescriptorPoolInlineUniformBlockCreateInfoEXT(
19785       DescriptorPoolInlineUniformBlockCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19786 
DescriptorPoolInlineUniformBlockCreateInfoEXTVULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfoEXT19787     DescriptorPoolInlineUniformBlockCreateInfoEXT( VkDescriptorPoolInlineUniformBlockCreateInfoEXT const & rhs )
19788       VULKAN_HPP_NOEXCEPT
19789       : DescriptorPoolInlineUniformBlockCreateInfoEXT(
19790           *reinterpret_cast<DescriptorPoolInlineUniformBlockCreateInfoEXT const *>( &rhs ) )
19791     {}
19792 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
19793 
19794     DescriptorPoolInlineUniformBlockCreateInfoEXT &
19795       operator=( DescriptorPoolInlineUniformBlockCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19796 
19797     DescriptorPoolInlineUniformBlockCreateInfoEXT &
operator =VULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfoEXT19798       operator=( VkDescriptorPoolInlineUniformBlockCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
19799     {
19800       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfoEXT const *>( &rhs );
19801       return *this;
19802     }
19803 
19804 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
19805     VULKAN_HPP_CONSTEXPR_14 DescriptorPoolInlineUniformBlockCreateInfoEXT &
setPNextVULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfoEXT19806                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
19807     {
19808       pNext = pNext_;
19809       return *this;
19810     }
19811 
19812     VULKAN_HPP_CONSTEXPR_14 DescriptorPoolInlineUniformBlockCreateInfoEXT &
setMaxInlineUniformBlockBindingsVULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfoEXT19813       setMaxInlineUniformBlockBindings( uint32_t maxInlineUniformBlockBindings_ ) VULKAN_HPP_NOEXCEPT
19814     {
19815       maxInlineUniformBlockBindings = maxInlineUniformBlockBindings_;
19816       return *this;
19817     }
19818 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
19819 
operator VkDescriptorPoolInlineUniformBlockCreateInfoEXT const&VULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfoEXT19820     explicit operator VkDescriptorPoolInlineUniformBlockCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
19821     {
19822       return *reinterpret_cast<const VkDescriptorPoolInlineUniformBlockCreateInfoEXT *>( this );
19823     }
19824 
operator VkDescriptorPoolInlineUniformBlockCreateInfoEXT&VULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfoEXT19825     explicit operator VkDescriptorPoolInlineUniformBlockCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
19826     {
19827       return *reinterpret_cast<VkDescriptorPoolInlineUniformBlockCreateInfoEXT *>( this );
19828     }
19829 
19830 #if 14 <= VULKAN_HPP_CPP_VERSION
19831     auto
19832 #else
19833     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &>
19834 #endif
reflectVULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfoEXT19835       reflect() const VULKAN_HPP_NOEXCEPT
19836     {
19837       return std::tie( sType, pNext, maxInlineUniformBlockBindings );
19838     }
19839 
19840 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
19841     auto operator<=>( DescriptorPoolInlineUniformBlockCreateInfoEXT const & ) const = default;
19842 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfoEXT19843     bool operator==( DescriptorPoolInlineUniformBlockCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
19844     {
19845       return this->reflect() == rhs.reflect();
19846     }
19847 
operator !=VULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfoEXT19848     bool operator!=( DescriptorPoolInlineUniformBlockCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
19849     {
19850       return this->reflect() != rhs.reflect();
19851     }
19852 #endif
19853 
19854   public:
19855     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorPoolInlineUniformBlockCreateInfoEXT;
19856     const void *                        pNext = {};
19857     uint32_t                            maxInlineUniformBlockBindings = {};
19858   };
19859   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfoEXT ) ==
19860                               sizeof( VkDescriptorPoolInlineUniformBlockCreateInfoEXT ),
19861                             "struct and wrapper have different size!" );
19862   VULKAN_HPP_STATIC_ASSERT(
19863     std::is_standard_layout<VULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfoEXT>::value,
19864     "struct wrapper is not a standard layout!" );
19865   VULKAN_HPP_STATIC_ASSERT(
19866     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfoEXT>::value,
19867     "DescriptorPoolInlineUniformBlockCreateInfoEXT is not nothrow_move_constructible!" );
19868 
19869   template <>
19870   struct CppType<StructureType, StructureType::eDescriptorPoolInlineUniformBlockCreateInfoEXT>
19871   {
19872     using Type = DescriptorPoolInlineUniformBlockCreateInfoEXT;
19873   };
19874 
19875   struct DescriptorSetAllocateInfo
19876   {
19877     using NativeType = VkDescriptorSetAllocateInfo;
19878 
19879     static const bool                                  allowDuplicate = false;
19880     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDescriptorSetAllocateInfo;
19881 
19882 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorSetAllocateInfoVULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo19883     VULKAN_HPP_CONSTEXPR DescriptorSetAllocateInfo(
19884       VULKAN_HPP_NAMESPACE::DescriptorPool              descriptorPool_     = {},
19885       uint32_t                                          descriptorSetCount_ = {},
19886       const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts_        = {} ) VULKAN_HPP_NOEXCEPT
19887       : descriptorPool( descriptorPool_ )
19888       , descriptorSetCount( descriptorSetCount_ )
19889       , pSetLayouts( pSetLayouts_ )
19890     {}
19891 
19892     VULKAN_HPP_CONSTEXPR
19893       DescriptorSetAllocateInfo( DescriptorSetAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19894 
DescriptorSetAllocateInfoVULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo19895     DescriptorSetAllocateInfo( VkDescriptorSetAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
19896       : DescriptorSetAllocateInfo( *reinterpret_cast<DescriptorSetAllocateInfo const *>( &rhs ) )
19897     {}
19898 
19899 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DescriptorSetAllocateInfoVULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo19900     DescriptorSetAllocateInfo(
19901       VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool_,
19902       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorSetLayout> const &
19903         setLayouts_ )
19904       : descriptorPool( descriptorPool_ )
19905       , descriptorSetCount( static_cast<uint32_t>( setLayouts_.size() ) )
19906       , pSetLayouts( setLayouts_.data() )
19907     {}
19908 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
19909 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
19910 
19911     DescriptorSetAllocateInfo & operator=( DescriptorSetAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19912 
operator =VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo19913     DescriptorSetAllocateInfo & operator=( VkDescriptorSetAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
19914     {
19915       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo const *>( &rhs );
19916       return *this;
19917     }
19918 
19919 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo19920     VULKAN_HPP_CONSTEXPR_14 DescriptorSetAllocateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
19921     {
19922       pNext = pNext_;
19923       return *this;
19924     }
19925 
19926     VULKAN_HPP_CONSTEXPR_14 DescriptorSetAllocateInfo &
setDescriptorPoolVULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo19927       setDescriptorPool( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool_ ) VULKAN_HPP_NOEXCEPT
19928     {
19929       descriptorPool = descriptorPool_;
19930       return *this;
19931     }
19932 
19933     VULKAN_HPP_CONSTEXPR_14 DescriptorSetAllocateInfo &
setDescriptorSetCountVULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo19934                             setDescriptorSetCount( uint32_t descriptorSetCount_ ) VULKAN_HPP_NOEXCEPT
19935     {
19936       descriptorSetCount = descriptorSetCount_;
19937       return *this;
19938     }
19939 
19940     VULKAN_HPP_CONSTEXPR_14 DescriptorSetAllocateInfo &
setPSetLayoutsVULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo19941       setPSetLayouts( const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts_ ) VULKAN_HPP_NOEXCEPT
19942     {
19943       pSetLayouts = pSetLayouts_;
19944       return *this;
19945     }
19946 
19947 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSetLayoutsVULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo19948     DescriptorSetAllocateInfo & setSetLayouts(
19949       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorSetLayout> const &
19950         setLayouts_ ) VULKAN_HPP_NOEXCEPT
19951     {
19952       descriptorSetCount = static_cast<uint32_t>( setLayouts_.size() );
19953       pSetLayouts        = setLayouts_.data();
19954       return *this;
19955     }
19956 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
19957 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
19958 
operator VkDescriptorSetAllocateInfo const&VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo19959     explicit operator VkDescriptorSetAllocateInfo const &() const VULKAN_HPP_NOEXCEPT
19960     {
19961       return *reinterpret_cast<const VkDescriptorSetAllocateInfo *>( this );
19962     }
19963 
operator VkDescriptorSetAllocateInfo&VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo19964     explicit operator VkDescriptorSetAllocateInfo &() VULKAN_HPP_NOEXCEPT
19965     {
19966       return *reinterpret_cast<VkDescriptorSetAllocateInfo *>( this );
19967     }
19968 
19969 #if 14 <= VULKAN_HPP_CPP_VERSION
19970     auto
19971 #else
19972     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
19973                const void * const &,
19974                VULKAN_HPP_NAMESPACE::DescriptorPool const &,
19975                uint32_t const &,
19976                const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * const &>
19977 #endif
reflectVULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo19978       reflect() const VULKAN_HPP_NOEXCEPT
19979     {
19980       return std::tie( sType, pNext, descriptorPool, descriptorSetCount, pSetLayouts );
19981     }
19982 
19983 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
19984     auto operator<=>( DescriptorSetAllocateInfo const & ) const = default;
19985 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo19986     bool operator==( DescriptorSetAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
19987     {
19988       return this->reflect() == rhs.reflect();
19989     }
19990 
operator !=VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo19991     bool operator!=( DescriptorSetAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
19992     {
19993       return this->reflect() != rhs.reflect();
19994     }
19995 #endif
19996 
19997   public:
19998     VULKAN_HPP_NAMESPACE::StructureType               sType              = StructureType::eDescriptorSetAllocateInfo;
19999     const void *                                      pNext              = {};
20000     VULKAN_HPP_NAMESPACE::DescriptorPool              descriptorPool     = {};
20001     uint32_t                                          descriptorSetCount = {};
20002     const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts        = {};
20003   };
20004   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo ) ==
20005                               sizeof( VkDescriptorSetAllocateInfo ),
20006                             "struct and wrapper have different size!" );
20007   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo>::value,
20008                             "struct wrapper is not a standard layout!" );
20009   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo>::value,
20010                             "DescriptorSetAllocateInfo is not nothrow_move_constructible!" );
20011 
20012   template <>
20013   struct CppType<StructureType, StructureType::eDescriptorSetAllocateInfo>
20014   {
20015     using Type = DescriptorSetAllocateInfo;
20016   };
20017 
20018   struct DescriptorSetLayoutBinding
20019   {
20020     using NativeType = VkDescriptorSetLayoutBinding;
20021 
20022 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorSetLayoutBindingVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding20023     VULKAN_HPP_CONSTEXPR DescriptorSetLayoutBinding(
20024       uint32_t                               binding_            = {},
20025       VULKAN_HPP_NAMESPACE::DescriptorType   descriptorType_     = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler,
20026       uint32_t                               descriptorCount_    = {},
20027       VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_         = {},
20028       const VULKAN_HPP_NAMESPACE::Sampler *  pImmutableSamplers_ = {} ) VULKAN_HPP_NOEXCEPT
20029       : binding( binding_ )
20030       , descriptorType( descriptorType_ )
20031       , descriptorCount( descriptorCount_ )
20032       , stageFlags( stageFlags_ )
20033       , pImmutableSamplers( pImmutableSamplers_ )
20034     {}
20035 
20036     VULKAN_HPP_CONSTEXPR
20037       DescriptorSetLayoutBinding( DescriptorSetLayoutBinding const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20038 
DescriptorSetLayoutBindingVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding20039     DescriptorSetLayoutBinding( VkDescriptorSetLayoutBinding const & rhs ) VULKAN_HPP_NOEXCEPT
20040       : DescriptorSetLayoutBinding( *reinterpret_cast<DescriptorSetLayoutBinding const *>( &rhs ) )
20041     {}
20042 
20043 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DescriptorSetLayoutBindingVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding20044     DescriptorSetLayoutBinding(
20045       uint32_t                                                                                   binding_,
20046       VULKAN_HPP_NAMESPACE::DescriptorType                                                       descriptorType_,
20047       VULKAN_HPP_NAMESPACE::ShaderStageFlags                                                     stageFlags_,
20048       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Sampler> const & immutableSamplers_ )
20049       : binding( binding_ )
20050       , descriptorType( descriptorType_ )
20051       , descriptorCount( static_cast<uint32_t>( immutableSamplers_.size() ) )
20052       , stageFlags( stageFlags_ )
20053       , pImmutableSamplers( immutableSamplers_.data() )
20054     {}
20055 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
20056 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
20057 
20058     DescriptorSetLayoutBinding & operator=( DescriptorSetLayoutBinding const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20059 
operator =VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding20060     DescriptorSetLayoutBinding & operator=( VkDescriptorSetLayoutBinding const & rhs ) VULKAN_HPP_NOEXCEPT
20061     {
20062       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding const *>( &rhs );
20063       return *this;
20064     }
20065 
20066 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setBindingVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding20067     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBinding & setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT
20068     {
20069       binding = binding_;
20070       return *this;
20071     }
20072 
20073     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBinding &
setDescriptorTypeVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding20074       setDescriptorType( VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_ ) VULKAN_HPP_NOEXCEPT
20075     {
20076       descriptorType = descriptorType_;
20077       return *this;
20078     }
20079 
20080     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBinding &
setDescriptorCountVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding20081                             setDescriptorCount( uint32_t descriptorCount_ ) VULKAN_HPP_NOEXCEPT
20082     {
20083       descriptorCount = descriptorCount_;
20084       return *this;
20085     }
20086 
20087     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBinding &
setStageFlagsVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding20088                             setStageFlags( VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ ) VULKAN_HPP_NOEXCEPT
20089     {
20090       stageFlags = stageFlags_;
20091       return *this;
20092     }
20093 
20094     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBinding &
setPImmutableSamplersVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding20095       setPImmutableSamplers( const VULKAN_HPP_NAMESPACE::Sampler * pImmutableSamplers_ ) VULKAN_HPP_NOEXCEPT
20096     {
20097       pImmutableSamplers = pImmutableSamplers_;
20098       return *this;
20099     }
20100 
20101 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setImmutableSamplersVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding20102     DescriptorSetLayoutBinding & setImmutableSamplers(
20103       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Sampler> const & immutableSamplers_ )
20104       VULKAN_HPP_NOEXCEPT
20105     {
20106       descriptorCount    = static_cast<uint32_t>( immutableSamplers_.size() );
20107       pImmutableSamplers = immutableSamplers_.data();
20108       return *this;
20109     }
20110 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
20111 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
20112 
operator VkDescriptorSetLayoutBinding const&VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding20113     explicit operator VkDescriptorSetLayoutBinding const &() const VULKAN_HPP_NOEXCEPT
20114     {
20115       return *reinterpret_cast<const VkDescriptorSetLayoutBinding *>( this );
20116     }
20117 
operator VkDescriptorSetLayoutBinding&VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding20118     explicit operator VkDescriptorSetLayoutBinding &() VULKAN_HPP_NOEXCEPT
20119     {
20120       return *reinterpret_cast<VkDescriptorSetLayoutBinding *>( this );
20121     }
20122 
20123 #if 14 <= VULKAN_HPP_CPP_VERSION
20124     auto
20125 #else
20126     std::tuple<uint32_t const &,
20127                VULKAN_HPP_NAMESPACE::DescriptorType const &,
20128                uint32_t const &,
20129                VULKAN_HPP_NAMESPACE::ShaderStageFlags const &,
20130                const VULKAN_HPP_NAMESPACE::Sampler * const &>
20131 #endif
reflectVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding20132       reflect() const VULKAN_HPP_NOEXCEPT
20133     {
20134       return std::tie( binding, descriptorType, descriptorCount, stageFlags, pImmutableSamplers );
20135     }
20136 
20137 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
20138     auto operator<=>( DescriptorSetLayoutBinding const & ) const = default;
20139 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding20140     bool operator==( DescriptorSetLayoutBinding const & rhs ) const VULKAN_HPP_NOEXCEPT
20141     {
20142       return this->reflect() == rhs.reflect();
20143     }
20144 
operator !=VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding20145     bool operator!=( DescriptorSetLayoutBinding const & rhs ) const VULKAN_HPP_NOEXCEPT
20146     {
20147       return this->reflect() != rhs.reflect();
20148     }
20149 #endif
20150 
20151   public:
20152     uint32_t                               binding            = {};
20153     VULKAN_HPP_NAMESPACE::DescriptorType   descriptorType     = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler;
20154     uint32_t                               descriptorCount    = {};
20155     VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags         = {};
20156     const VULKAN_HPP_NAMESPACE::Sampler *  pImmutableSamplers = {};
20157   };
20158   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding ) ==
20159                               sizeof( VkDescriptorSetLayoutBinding ),
20160                             "struct and wrapper have different size!" );
20161   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding>::value,
20162                             "struct wrapper is not a standard layout!" );
20163   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding>::value,
20164                             "DescriptorSetLayoutBinding is not nothrow_move_constructible!" );
20165 
20166   struct DescriptorSetLayoutBindingFlagsCreateInfo
20167   {
20168     using NativeType = VkDescriptorSetLayoutBindingFlagsCreateInfo;
20169 
20170     static const bool                                  allowDuplicate = false;
20171     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
20172       StructureType::eDescriptorSetLayoutBindingFlagsCreateInfo;
20173 
20174 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorSetLayoutBindingFlagsCreateInfoVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo20175     VULKAN_HPP_CONSTEXPR DescriptorSetLayoutBindingFlagsCreateInfo(
20176       uint32_t                                             bindingCount_  = {},
20177       const VULKAN_HPP_NAMESPACE::DescriptorBindingFlags * pBindingFlags_ = {} ) VULKAN_HPP_NOEXCEPT
20178       : bindingCount( bindingCount_ )
20179       , pBindingFlags( pBindingFlags_ )
20180     {}
20181 
20182     VULKAN_HPP_CONSTEXPR DescriptorSetLayoutBindingFlagsCreateInfo(
20183       DescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20184 
DescriptorSetLayoutBindingFlagsCreateInfoVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo20185     DescriptorSetLayoutBindingFlagsCreateInfo( VkDescriptorSetLayoutBindingFlagsCreateInfo const & rhs )
20186       VULKAN_HPP_NOEXCEPT
20187       : DescriptorSetLayoutBindingFlagsCreateInfo(
20188           *reinterpret_cast<DescriptorSetLayoutBindingFlagsCreateInfo const *>( &rhs ) )
20189     {}
20190 
20191 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DescriptorSetLayoutBindingFlagsCreateInfoVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo20192     DescriptorSetLayoutBindingFlagsCreateInfo(
20193       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorBindingFlags> const &
20194         bindingFlags_ )
20195       : bindingCount( static_cast<uint32_t>( bindingFlags_.size() ) ), pBindingFlags( bindingFlags_.data() )
20196     {}
20197 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
20198 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
20199 
20200     DescriptorSetLayoutBindingFlagsCreateInfo &
20201       operator=( DescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20202 
20203     DescriptorSetLayoutBindingFlagsCreateInfo &
operator =VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo20204       operator=( VkDescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
20205     {
20206       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo const *>( &rhs );
20207       return *this;
20208     }
20209 
20210 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
20211     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBindingFlagsCreateInfo &
setPNextVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo20212                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
20213     {
20214       pNext = pNext_;
20215       return *this;
20216     }
20217 
20218     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBindingFlagsCreateInfo &
setBindingCountVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo20219                             setBindingCount( uint32_t bindingCount_ ) VULKAN_HPP_NOEXCEPT
20220     {
20221       bindingCount = bindingCount_;
20222       return *this;
20223     }
20224 
20225     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBindingFlagsCreateInfo &
setPBindingFlagsVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo20226       setPBindingFlags( const VULKAN_HPP_NAMESPACE::DescriptorBindingFlags * pBindingFlags_ ) VULKAN_HPP_NOEXCEPT
20227     {
20228       pBindingFlags = pBindingFlags_;
20229       return *this;
20230     }
20231 
20232 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setBindingFlagsVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo20233     DescriptorSetLayoutBindingFlagsCreateInfo & setBindingFlags(
20234       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorBindingFlags> const &
20235         bindingFlags_ ) VULKAN_HPP_NOEXCEPT
20236     {
20237       bindingCount  = static_cast<uint32_t>( bindingFlags_.size() );
20238       pBindingFlags = bindingFlags_.data();
20239       return *this;
20240     }
20241 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
20242 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
20243 
operator VkDescriptorSetLayoutBindingFlagsCreateInfo const&VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo20244     explicit operator VkDescriptorSetLayoutBindingFlagsCreateInfo const &() const VULKAN_HPP_NOEXCEPT
20245     {
20246       return *reinterpret_cast<const VkDescriptorSetLayoutBindingFlagsCreateInfo *>( this );
20247     }
20248 
operator VkDescriptorSetLayoutBindingFlagsCreateInfo&VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo20249     explicit operator VkDescriptorSetLayoutBindingFlagsCreateInfo &() VULKAN_HPP_NOEXCEPT
20250     {
20251       return *reinterpret_cast<VkDescriptorSetLayoutBindingFlagsCreateInfo *>( this );
20252     }
20253 
20254 #if 14 <= VULKAN_HPP_CPP_VERSION
20255     auto
20256 #else
20257     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
20258                const void * const &,
20259                uint32_t const &,
20260                const VULKAN_HPP_NAMESPACE::DescriptorBindingFlags * const &>
20261 #endif
reflectVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo20262       reflect() const VULKAN_HPP_NOEXCEPT
20263     {
20264       return std::tie( sType, pNext, bindingCount, pBindingFlags );
20265     }
20266 
20267 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
20268     auto operator<=>( DescriptorSetLayoutBindingFlagsCreateInfo const & ) const = default;
20269 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo20270     bool operator==( DescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
20271     {
20272       return this->reflect() == rhs.reflect();
20273     }
20274 
operator !=VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo20275     bool operator!=( DescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
20276     {
20277       return this->reflect() != rhs.reflect();
20278     }
20279 #endif
20280 
20281   public:
20282     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::eDescriptorSetLayoutBindingFlagsCreateInfo;
20283     const void *                        pNext        = {};
20284     uint32_t                            bindingCount = {};
20285     const VULKAN_HPP_NAMESPACE::DescriptorBindingFlags * pBindingFlags = {};
20286   };
20287   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo ) ==
20288                               sizeof( VkDescriptorSetLayoutBindingFlagsCreateInfo ),
20289                             "struct and wrapper have different size!" );
20290   VULKAN_HPP_STATIC_ASSERT(
20291     std::is_standard_layout<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo>::value,
20292     "struct wrapper is not a standard layout!" );
20293   VULKAN_HPP_STATIC_ASSERT(
20294     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo>::value,
20295     "DescriptorSetLayoutBindingFlagsCreateInfo is not nothrow_move_constructible!" );
20296 
20297   template <>
20298   struct CppType<StructureType, StructureType::eDescriptorSetLayoutBindingFlagsCreateInfo>
20299   {
20300     using Type = DescriptorSetLayoutBindingFlagsCreateInfo;
20301   };
20302   using DescriptorSetLayoutBindingFlagsCreateInfoEXT = DescriptorSetLayoutBindingFlagsCreateInfo;
20303 
20304   struct DescriptorSetLayoutCreateInfo
20305   {
20306     using NativeType = VkDescriptorSetLayoutCreateInfo;
20307 
20308     static const bool                                  allowDuplicate = false;
20309     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDescriptorSetLayoutCreateInfo;
20310 
20311 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorSetLayoutCreateInfoVULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo20312     VULKAN_HPP_CONSTEXPR DescriptorSetLayoutCreateInfo(
20313       VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateFlags     flags_        = {},
20314       uint32_t                                                 bindingCount_ = {},
20315       const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding * pBindings_    = {} ) VULKAN_HPP_NOEXCEPT
20316       : flags( flags_ )
20317       , bindingCount( bindingCount_ )
20318       , pBindings( pBindings_ )
20319     {}
20320 
20321     VULKAN_HPP_CONSTEXPR
20322       DescriptorSetLayoutCreateInfo( DescriptorSetLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20323 
DescriptorSetLayoutCreateInfoVULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo20324     DescriptorSetLayoutCreateInfo( VkDescriptorSetLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
20325       : DescriptorSetLayoutCreateInfo( *reinterpret_cast<DescriptorSetLayoutCreateInfo const *>( &rhs ) )
20326     {}
20327 
20328 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DescriptorSetLayoutCreateInfoVULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo20329     DescriptorSetLayoutCreateInfo(
20330       VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateFlags flags_,
20331       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding> const &
20332         bindings_ )
20333       : flags( flags_ ), bindingCount( static_cast<uint32_t>( bindings_.size() ) ), pBindings( bindings_.data() )
20334     {}
20335 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
20336 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
20337 
20338     DescriptorSetLayoutCreateInfo &
20339       operator=( DescriptorSetLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20340 
operator =VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo20341     DescriptorSetLayoutCreateInfo & operator=( VkDescriptorSetLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
20342     {
20343       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo const *>( &rhs );
20344       return *this;
20345     }
20346 
20347 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo20348     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
20349     {
20350       pNext = pNext_;
20351       return *this;
20352     }
20353 
20354     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo20355                             setFlags( VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
20356     {
20357       flags = flags_;
20358       return *this;
20359     }
20360 
20361     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutCreateInfo &
setBindingCountVULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo20362                             setBindingCount( uint32_t bindingCount_ ) VULKAN_HPP_NOEXCEPT
20363     {
20364       bindingCount = bindingCount_;
20365       return *this;
20366     }
20367 
20368     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutCreateInfo &
setPBindingsVULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo20369       setPBindings( const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding * pBindings_ ) VULKAN_HPP_NOEXCEPT
20370     {
20371       pBindings = pBindings_;
20372       return *this;
20373     }
20374 
20375 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setBindingsVULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo20376     DescriptorSetLayoutCreateInfo & setBindings(
20377       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding> const &
20378         bindings_ ) VULKAN_HPP_NOEXCEPT
20379     {
20380       bindingCount = static_cast<uint32_t>( bindings_.size() );
20381       pBindings    = bindings_.data();
20382       return *this;
20383     }
20384 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
20385 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
20386 
operator VkDescriptorSetLayoutCreateInfo const&VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo20387     explicit operator VkDescriptorSetLayoutCreateInfo const &() const VULKAN_HPP_NOEXCEPT
20388     {
20389       return *reinterpret_cast<const VkDescriptorSetLayoutCreateInfo *>( this );
20390     }
20391 
operator VkDescriptorSetLayoutCreateInfo&VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo20392     explicit operator VkDescriptorSetLayoutCreateInfo &() VULKAN_HPP_NOEXCEPT
20393     {
20394       return *reinterpret_cast<VkDescriptorSetLayoutCreateInfo *>( this );
20395     }
20396 
20397 #if 14 <= VULKAN_HPP_CPP_VERSION
20398     auto
20399 #else
20400     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
20401                const void * const &,
20402                VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateFlags const &,
20403                uint32_t const &,
20404                const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding * const &>
20405 #endif
reflectVULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo20406       reflect() const VULKAN_HPP_NOEXCEPT
20407     {
20408       return std::tie( sType, pNext, flags, bindingCount, pBindings );
20409     }
20410 
20411 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
20412     auto operator<=>( DescriptorSetLayoutCreateInfo const & ) const = default;
20413 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo20414     bool operator==( DescriptorSetLayoutCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
20415     {
20416       return this->reflect() == rhs.reflect();
20417     }
20418 
operator !=VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo20419     bool operator!=( DescriptorSetLayoutCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
20420     {
20421       return this->reflect() != rhs.reflect();
20422     }
20423 #endif
20424 
20425   public:
20426     VULKAN_HPP_NAMESPACE::StructureType                      sType = StructureType::eDescriptorSetLayoutCreateInfo;
20427     const void *                                             pNext = {};
20428     VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateFlags     flags = {};
20429     uint32_t                                                 bindingCount = {};
20430     const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding * pBindings    = {};
20431   };
20432   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo ) ==
20433                               sizeof( VkDescriptorSetLayoutCreateInfo ),
20434                             "struct and wrapper have different size!" );
20435   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo>::value,
20436                             "struct wrapper is not a standard layout!" );
20437   VULKAN_HPP_STATIC_ASSERT(
20438     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo>::value,
20439     "DescriptorSetLayoutCreateInfo is not nothrow_move_constructible!" );
20440 
20441   template <>
20442   struct CppType<StructureType, StructureType::eDescriptorSetLayoutCreateInfo>
20443   {
20444     using Type = DescriptorSetLayoutCreateInfo;
20445   };
20446 
20447   struct DescriptorSetLayoutSupport
20448   {
20449     using NativeType = VkDescriptorSetLayoutSupport;
20450 
20451     static const bool                                  allowDuplicate = false;
20452     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDescriptorSetLayoutSupport;
20453 
20454 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorSetLayoutSupportVULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport20455     VULKAN_HPP_CONSTEXPR DescriptorSetLayoutSupport( VULKAN_HPP_NAMESPACE::Bool32 supported_ = {} ) VULKAN_HPP_NOEXCEPT
20456       : supported( supported_ )
20457     {}
20458 
20459     VULKAN_HPP_CONSTEXPR
20460       DescriptorSetLayoutSupport( DescriptorSetLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20461 
DescriptorSetLayoutSupportVULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport20462     DescriptorSetLayoutSupport( VkDescriptorSetLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT
20463       : DescriptorSetLayoutSupport( *reinterpret_cast<DescriptorSetLayoutSupport const *>( &rhs ) )
20464     {}
20465 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
20466 
20467     DescriptorSetLayoutSupport & operator=( DescriptorSetLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20468 
operator =VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport20469     DescriptorSetLayoutSupport & operator=( VkDescriptorSetLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT
20470     {
20471       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport const *>( &rhs );
20472       return *this;
20473     }
20474 
operator VkDescriptorSetLayoutSupport const&VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport20475     explicit operator VkDescriptorSetLayoutSupport const &() const VULKAN_HPP_NOEXCEPT
20476     {
20477       return *reinterpret_cast<const VkDescriptorSetLayoutSupport *>( this );
20478     }
20479 
operator VkDescriptorSetLayoutSupport&VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport20480     explicit operator VkDescriptorSetLayoutSupport &() VULKAN_HPP_NOEXCEPT
20481     {
20482       return *reinterpret_cast<VkDescriptorSetLayoutSupport *>( this );
20483     }
20484 
20485 #if 14 <= VULKAN_HPP_CPP_VERSION
20486     auto
20487 #else
20488     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
20489 #endif
reflectVULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport20490       reflect() const VULKAN_HPP_NOEXCEPT
20491     {
20492       return std::tie( sType, pNext, supported );
20493     }
20494 
20495 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
20496     auto operator<=>( DescriptorSetLayoutSupport const & ) const = default;
20497 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport20498     bool operator==( DescriptorSetLayoutSupport const & rhs ) const VULKAN_HPP_NOEXCEPT
20499     {
20500       return this->reflect() == rhs.reflect();
20501     }
20502 
operator !=VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport20503     bool operator!=( DescriptorSetLayoutSupport const & rhs ) const VULKAN_HPP_NOEXCEPT
20504     {
20505       return this->reflect() != rhs.reflect();
20506     }
20507 #endif
20508 
20509   public:
20510     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::eDescriptorSetLayoutSupport;
20511     void *                              pNext     = {};
20512     VULKAN_HPP_NAMESPACE::Bool32        supported = {};
20513   };
20514   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport ) ==
20515                               sizeof( VkDescriptorSetLayoutSupport ),
20516                             "struct and wrapper have different size!" );
20517   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport>::value,
20518                             "struct wrapper is not a standard layout!" );
20519   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport>::value,
20520                             "DescriptorSetLayoutSupport is not nothrow_move_constructible!" );
20521 
20522   template <>
20523   struct CppType<StructureType, StructureType::eDescriptorSetLayoutSupport>
20524   {
20525     using Type = DescriptorSetLayoutSupport;
20526   };
20527   using DescriptorSetLayoutSupportKHR = DescriptorSetLayoutSupport;
20528 
20529   struct DescriptorSetVariableDescriptorCountAllocateInfo
20530   {
20531     using NativeType = VkDescriptorSetVariableDescriptorCountAllocateInfo;
20532 
20533     static const bool                                  allowDuplicate = false;
20534     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
20535       StructureType::eDescriptorSetVariableDescriptorCountAllocateInfo;
20536 
20537 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
20538     VULKAN_HPP_CONSTEXPR
DescriptorSetVariableDescriptorCountAllocateInfoVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo20539       DescriptorSetVariableDescriptorCountAllocateInfo( uint32_t         descriptorSetCount_ = {},
20540                                                         const uint32_t * pDescriptorCounts_  = {} ) VULKAN_HPP_NOEXCEPT
20541       : descriptorSetCount( descriptorSetCount_ )
20542       , pDescriptorCounts( pDescriptorCounts_ )
20543     {}
20544 
20545     VULKAN_HPP_CONSTEXPR DescriptorSetVariableDescriptorCountAllocateInfo(
20546       DescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20547 
DescriptorSetVariableDescriptorCountAllocateInfoVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo20548     DescriptorSetVariableDescriptorCountAllocateInfo( VkDescriptorSetVariableDescriptorCountAllocateInfo const & rhs )
20549       VULKAN_HPP_NOEXCEPT
20550       : DescriptorSetVariableDescriptorCountAllocateInfo(
20551           *reinterpret_cast<DescriptorSetVariableDescriptorCountAllocateInfo const *>( &rhs ) )
20552     {}
20553 
20554 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DescriptorSetVariableDescriptorCountAllocateInfoVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo20555     DescriptorSetVariableDescriptorCountAllocateInfo(
20556       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & descriptorCounts_ )
20557       : descriptorSetCount( static_cast<uint32_t>( descriptorCounts_.size() ) )
20558       , pDescriptorCounts( descriptorCounts_.data() )
20559     {}
20560 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
20561 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
20562 
20563     DescriptorSetVariableDescriptorCountAllocateInfo &
20564       operator=( DescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20565 
20566     DescriptorSetVariableDescriptorCountAllocateInfo &
operator =VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo20567       operator=( VkDescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
20568     {
20569       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo const *>( &rhs );
20570       return *this;
20571     }
20572 
20573 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
20574     VULKAN_HPP_CONSTEXPR_14 DescriptorSetVariableDescriptorCountAllocateInfo &
setPNextVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo20575                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
20576     {
20577       pNext = pNext_;
20578       return *this;
20579     }
20580 
20581     VULKAN_HPP_CONSTEXPR_14 DescriptorSetVariableDescriptorCountAllocateInfo &
setDescriptorSetCountVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo20582                             setDescriptorSetCount( uint32_t descriptorSetCount_ ) VULKAN_HPP_NOEXCEPT
20583     {
20584       descriptorSetCount = descriptorSetCount_;
20585       return *this;
20586     }
20587 
20588     VULKAN_HPP_CONSTEXPR_14 DescriptorSetVariableDescriptorCountAllocateInfo &
setPDescriptorCountsVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo20589                             setPDescriptorCounts( const uint32_t * pDescriptorCounts_ ) VULKAN_HPP_NOEXCEPT
20590     {
20591       pDescriptorCounts = pDescriptorCounts_;
20592       return *this;
20593     }
20594 
20595 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDescriptorCountsVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo20596     DescriptorSetVariableDescriptorCountAllocateInfo & setDescriptorCounts(
20597       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & descriptorCounts_ ) VULKAN_HPP_NOEXCEPT
20598     {
20599       descriptorSetCount = static_cast<uint32_t>( descriptorCounts_.size() );
20600       pDescriptorCounts  = descriptorCounts_.data();
20601       return *this;
20602     }
20603 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
20604 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
20605 
operator VkDescriptorSetVariableDescriptorCountAllocateInfo const&VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo20606     explicit operator VkDescriptorSetVariableDescriptorCountAllocateInfo const &() const VULKAN_HPP_NOEXCEPT
20607     {
20608       return *reinterpret_cast<const VkDescriptorSetVariableDescriptorCountAllocateInfo *>( this );
20609     }
20610 
operator VkDescriptorSetVariableDescriptorCountAllocateInfo&VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo20611     explicit operator VkDescriptorSetVariableDescriptorCountAllocateInfo &() VULKAN_HPP_NOEXCEPT
20612     {
20613       return *reinterpret_cast<VkDescriptorSetVariableDescriptorCountAllocateInfo *>( this );
20614     }
20615 
20616 #if 14 <= VULKAN_HPP_CPP_VERSION
20617     auto
20618 #else
20619     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
20620                const void * const &,
20621                uint32_t const &,
20622                const uint32_t * const &>
20623 #endif
reflectVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo20624       reflect() const VULKAN_HPP_NOEXCEPT
20625     {
20626       return std::tie( sType, pNext, descriptorSetCount, pDescriptorCounts );
20627     }
20628 
20629 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
20630     auto operator<=>( DescriptorSetVariableDescriptorCountAllocateInfo const & ) const = default;
20631 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo20632     bool operator==( DescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
20633     {
20634       return this->reflect() == rhs.reflect();
20635     }
20636 
operator !=VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo20637     bool operator!=( DescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
20638     {
20639       return this->reflect() != rhs.reflect();
20640     }
20641 #endif
20642 
20643   public:
20644     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorSetVariableDescriptorCountAllocateInfo;
20645     const void *                        pNext = {};
20646     uint32_t                            descriptorSetCount = {};
20647     const uint32_t *                    pDescriptorCounts  = {};
20648   };
20649   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo ) ==
20650                               sizeof( VkDescriptorSetVariableDescriptorCountAllocateInfo ),
20651                             "struct and wrapper have different size!" );
20652   VULKAN_HPP_STATIC_ASSERT(
20653     std::is_standard_layout<VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo>::value,
20654     "struct wrapper is not a standard layout!" );
20655   VULKAN_HPP_STATIC_ASSERT(
20656     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo>::value,
20657     "DescriptorSetVariableDescriptorCountAllocateInfo is not nothrow_move_constructible!" );
20658 
20659   template <>
20660   struct CppType<StructureType, StructureType::eDescriptorSetVariableDescriptorCountAllocateInfo>
20661   {
20662     using Type = DescriptorSetVariableDescriptorCountAllocateInfo;
20663   };
20664   using DescriptorSetVariableDescriptorCountAllocateInfoEXT = DescriptorSetVariableDescriptorCountAllocateInfo;
20665 
20666   struct DescriptorSetVariableDescriptorCountLayoutSupport
20667   {
20668     using NativeType = VkDescriptorSetVariableDescriptorCountLayoutSupport;
20669 
20670     static const bool                                  allowDuplicate = false;
20671     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
20672       StructureType::eDescriptorSetVariableDescriptorCountLayoutSupport;
20673 
20674 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
20675     VULKAN_HPP_CONSTEXPR
DescriptorSetVariableDescriptorCountLayoutSupportVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport20676       DescriptorSetVariableDescriptorCountLayoutSupport( uint32_t maxVariableDescriptorCount_ = {} ) VULKAN_HPP_NOEXCEPT
20677       : maxVariableDescriptorCount( maxVariableDescriptorCount_ )
20678     {}
20679 
20680     VULKAN_HPP_CONSTEXPR DescriptorSetVariableDescriptorCountLayoutSupport(
20681       DescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20682 
DescriptorSetVariableDescriptorCountLayoutSupportVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport20683     DescriptorSetVariableDescriptorCountLayoutSupport( VkDescriptorSetVariableDescriptorCountLayoutSupport const & rhs )
20684       VULKAN_HPP_NOEXCEPT
20685       : DescriptorSetVariableDescriptorCountLayoutSupport(
20686           *reinterpret_cast<DescriptorSetVariableDescriptorCountLayoutSupport const *>( &rhs ) )
20687     {}
20688 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
20689 
20690     DescriptorSetVariableDescriptorCountLayoutSupport &
20691       operator=( DescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20692 
20693     DescriptorSetVariableDescriptorCountLayoutSupport &
operator =VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport20694       operator=( VkDescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT
20695     {
20696       *this =
20697         *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport const *>( &rhs );
20698       return *this;
20699     }
20700 
operator VkDescriptorSetVariableDescriptorCountLayoutSupport const&VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport20701     explicit operator VkDescriptorSetVariableDescriptorCountLayoutSupport const &() const VULKAN_HPP_NOEXCEPT
20702     {
20703       return *reinterpret_cast<const VkDescriptorSetVariableDescriptorCountLayoutSupport *>( this );
20704     }
20705 
operator VkDescriptorSetVariableDescriptorCountLayoutSupport&VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport20706     explicit operator VkDescriptorSetVariableDescriptorCountLayoutSupport &() VULKAN_HPP_NOEXCEPT
20707     {
20708       return *reinterpret_cast<VkDescriptorSetVariableDescriptorCountLayoutSupport *>( this );
20709     }
20710 
20711 #if 14 <= VULKAN_HPP_CPP_VERSION
20712     auto
20713 #else
20714     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
20715 #endif
reflectVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport20716       reflect() const VULKAN_HPP_NOEXCEPT
20717     {
20718       return std::tie( sType, pNext, maxVariableDescriptorCount );
20719     }
20720 
20721 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
20722     auto operator<=>( DescriptorSetVariableDescriptorCountLayoutSupport const & ) const = default;
20723 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport20724     bool operator==( DescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) const VULKAN_HPP_NOEXCEPT
20725     {
20726       return this->reflect() == rhs.reflect();
20727     }
20728 
operator !=VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport20729     bool operator!=( DescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) const VULKAN_HPP_NOEXCEPT
20730     {
20731       return this->reflect() != rhs.reflect();
20732     }
20733 #endif
20734 
20735   public:
20736     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorSetVariableDescriptorCountLayoutSupport;
20737     void *                              pNext = {};
20738     uint32_t                            maxVariableDescriptorCount = {};
20739   };
20740   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport ) ==
20741                               sizeof( VkDescriptorSetVariableDescriptorCountLayoutSupport ),
20742                             "struct and wrapper have different size!" );
20743   VULKAN_HPP_STATIC_ASSERT(
20744     std::is_standard_layout<VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport>::value,
20745     "struct wrapper is not a standard layout!" );
20746   VULKAN_HPP_STATIC_ASSERT(
20747     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport>::value,
20748     "DescriptorSetVariableDescriptorCountLayoutSupport is not nothrow_move_constructible!" );
20749 
20750   template <>
20751   struct CppType<StructureType, StructureType::eDescriptorSetVariableDescriptorCountLayoutSupport>
20752   {
20753     using Type = DescriptorSetVariableDescriptorCountLayoutSupport;
20754   };
20755   using DescriptorSetVariableDescriptorCountLayoutSupportEXT = DescriptorSetVariableDescriptorCountLayoutSupport;
20756 
20757   struct DescriptorUpdateTemplateEntry
20758   {
20759     using NativeType = VkDescriptorUpdateTemplateEntry;
20760 
20761 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorUpdateTemplateEntryVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry20762     VULKAN_HPP_CONSTEXPR DescriptorUpdateTemplateEntry(
20763       uint32_t                             dstBinding_      = {},
20764       uint32_t                             dstArrayElement_ = {},
20765       uint32_t                             descriptorCount_ = {},
20766       VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_  = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler,
20767       size_t                               offset_          = {},
20768       size_t                               stride_          = {} ) VULKAN_HPP_NOEXCEPT
20769       : dstBinding( dstBinding_ )
20770       , dstArrayElement( dstArrayElement_ )
20771       , descriptorCount( descriptorCount_ )
20772       , descriptorType( descriptorType_ )
20773       , offset( offset_ )
20774       , stride( stride_ )
20775     {}
20776 
20777     VULKAN_HPP_CONSTEXPR
20778       DescriptorUpdateTemplateEntry( DescriptorUpdateTemplateEntry const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20779 
DescriptorUpdateTemplateEntryVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry20780     DescriptorUpdateTemplateEntry( VkDescriptorUpdateTemplateEntry const & rhs ) VULKAN_HPP_NOEXCEPT
20781       : DescriptorUpdateTemplateEntry( *reinterpret_cast<DescriptorUpdateTemplateEntry const *>( &rhs ) )
20782     {}
20783 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
20784 
20785     DescriptorUpdateTemplateEntry &
20786       operator=( DescriptorUpdateTemplateEntry const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20787 
operator =VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry20788     DescriptorUpdateTemplateEntry & operator=( VkDescriptorUpdateTemplateEntry const & rhs ) VULKAN_HPP_NOEXCEPT
20789     {
20790       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry const *>( &rhs );
20791       return *this;
20792     }
20793 
20794 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setDstBindingVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry20795     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry & setDstBinding( uint32_t dstBinding_ ) VULKAN_HPP_NOEXCEPT
20796     {
20797       dstBinding = dstBinding_;
20798       return *this;
20799     }
20800 
20801     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry &
setDstArrayElementVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry20802                             setDstArrayElement( uint32_t dstArrayElement_ ) VULKAN_HPP_NOEXCEPT
20803     {
20804       dstArrayElement = dstArrayElement_;
20805       return *this;
20806     }
20807 
20808     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry &
setDescriptorCountVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry20809                             setDescriptorCount( uint32_t descriptorCount_ ) VULKAN_HPP_NOEXCEPT
20810     {
20811       descriptorCount = descriptorCount_;
20812       return *this;
20813     }
20814 
20815     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry &
setDescriptorTypeVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry20816       setDescriptorType( VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_ ) VULKAN_HPP_NOEXCEPT
20817     {
20818       descriptorType = descriptorType_;
20819       return *this;
20820     }
20821 
setOffsetVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry20822     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry & setOffset( size_t offset_ ) VULKAN_HPP_NOEXCEPT
20823     {
20824       offset = offset_;
20825       return *this;
20826     }
20827 
setStrideVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry20828     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry & setStride( size_t stride_ ) VULKAN_HPP_NOEXCEPT
20829     {
20830       stride = stride_;
20831       return *this;
20832     }
20833 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
20834 
operator VkDescriptorUpdateTemplateEntry const&VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry20835     explicit operator VkDescriptorUpdateTemplateEntry const &() const VULKAN_HPP_NOEXCEPT
20836     {
20837       return *reinterpret_cast<const VkDescriptorUpdateTemplateEntry *>( this );
20838     }
20839 
operator VkDescriptorUpdateTemplateEntry&VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry20840     explicit operator VkDescriptorUpdateTemplateEntry &() VULKAN_HPP_NOEXCEPT
20841     {
20842       return *reinterpret_cast<VkDescriptorUpdateTemplateEntry *>( this );
20843     }
20844 
20845 #if 14 <= VULKAN_HPP_CPP_VERSION
20846     auto
20847 #else
20848     std::tuple<uint32_t const &,
20849                uint32_t const &,
20850                uint32_t const &,
20851                VULKAN_HPP_NAMESPACE::DescriptorType const &,
20852                size_t const &,
20853                size_t const &>
20854 #endif
reflectVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry20855       reflect() const VULKAN_HPP_NOEXCEPT
20856     {
20857       return std::tie( dstBinding, dstArrayElement, descriptorCount, descriptorType, offset, stride );
20858     }
20859 
20860 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
20861     auto operator<=>( DescriptorUpdateTemplateEntry const & ) const = default;
20862 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry20863     bool operator==( DescriptorUpdateTemplateEntry const & rhs ) const VULKAN_HPP_NOEXCEPT
20864     {
20865       return this->reflect() == rhs.reflect();
20866     }
20867 
operator !=VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry20868     bool operator!=( DescriptorUpdateTemplateEntry const & rhs ) const VULKAN_HPP_NOEXCEPT
20869     {
20870       return this->reflect() != rhs.reflect();
20871     }
20872 #endif
20873 
20874   public:
20875     uint32_t                             dstBinding      = {};
20876     uint32_t                             dstArrayElement = {};
20877     uint32_t                             descriptorCount = {};
20878     VULKAN_HPP_NAMESPACE::DescriptorType descriptorType  = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler;
20879     size_t                               offset          = {};
20880     size_t                               stride          = {};
20881   };
20882   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry ) ==
20883                               sizeof( VkDescriptorUpdateTemplateEntry ),
20884                             "struct and wrapper have different size!" );
20885   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry>::value,
20886                             "struct wrapper is not a standard layout!" );
20887   VULKAN_HPP_STATIC_ASSERT(
20888     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry>::value,
20889     "DescriptorUpdateTemplateEntry is not nothrow_move_constructible!" );
20890   using DescriptorUpdateTemplateEntryKHR = DescriptorUpdateTemplateEntry;
20891 
20892   struct DescriptorUpdateTemplateCreateInfo
20893   {
20894     using NativeType = VkDescriptorUpdateTemplateCreateInfo;
20895 
20896     static const bool                                  allowDuplicate = false;
20897     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
20898       StructureType::eDescriptorUpdateTemplateCreateInfo;
20899 
20900 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorUpdateTemplateCreateInfoVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo20901     VULKAN_HPP_CONSTEXPR DescriptorUpdateTemplateCreateInfo(
20902       VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateFlags   flags_                      = {},
20903       uint32_t                                                    descriptorUpdateEntryCount_ = {},
20904       const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry * pDescriptorUpdateEntries_   = {},
20905       VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType          templateType_ =
20906         VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType::eDescriptorSet,
20907       VULKAN_HPP_NAMESPACE::DescriptorSetLayout descriptorSetLayout_ = {},
20908       VULKAN_HPP_NAMESPACE::PipelineBindPoint   pipelineBindPoint_ = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics,
20909       VULKAN_HPP_NAMESPACE::PipelineLayout      pipelineLayout_    = {},
20910       uint32_t                                  set_               = {} ) VULKAN_HPP_NOEXCEPT
20911       : flags( flags_ )
20912       , descriptorUpdateEntryCount( descriptorUpdateEntryCount_ )
20913       , pDescriptorUpdateEntries( pDescriptorUpdateEntries_ )
20914       , templateType( templateType_ )
20915       , descriptorSetLayout( descriptorSetLayout_ )
20916       , pipelineBindPoint( pipelineBindPoint_ )
20917       , pipelineLayout( pipelineLayout_ )
20918       , set( set_ )
20919     {}
20920 
20921     VULKAN_HPP_CONSTEXPR DescriptorUpdateTemplateCreateInfo( DescriptorUpdateTemplateCreateInfo const & rhs )
20922       VULKAN_HPP_NOEXCEPT = default;
20923 
DescriptorUpdateTemplateCreateInfoVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo20924     DescriptorUpdateTemplateCreateInfo( VkDescriptorUpdateTemplateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
20925       : DescriptorUpdateTemplateCreateInfo( *reinterpret_cast<DescriptorUpdateTemplateCreateInfo const *>( &rhs ) )
20926     {}
20927 
20928 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DescriptorUpdateTemplateCreateInfoVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo20929     DescriptorUpdateTemplateCreateInfo(
20930       VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateFlags flags_,
20931       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry> const &
20932                                                          descriptorUpdateEntries_,
20933       VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType templateType_ =
20934         VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType::eDescriptorSet,
20935       VULKAN_HPP_NAMESPACE::DescriptorSetLayout descriptorSetLayout_ = {},
20936       VULKAN_HPP_NAMESPACE::PipelineBindPoint   pipelineBindPoint_ = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics,
20937       VULKAN_HPP_NAMESPACE::PipelineLayout      pipelineLayout_    = {},
20938       uint32_t                                  set_               = {} )
20939       : flags( flags_ )
20940       , descriptorUpdateEntryCount( static_cast<uint32_t>( descriptorUpdateEntries_.size() ) )
20941       , pDescriptorUpdateEntries( descriptorUpdateEntries_.data() )
20942       , templateType( templateType_ )
20943       , descriptorSetLayout( descriptorSetLayout_ )
20944       , pipelineBindPoint( pipelineBindPoint_ )
20945       , pipelineLayout( pipelineLayout_ )
20946       , set( set_ )
20947     {}
20948 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
20949 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
20950 
20951     DescriptorUpdateTemplateCreateInfo &
20952       operator=( DescriptorUpdateTemplateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20953 
20954     DescriptorUpdateTemplateCreateInfo &
operator =VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo20955       operator=( VkDescriptorUpdateTemplateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
20956     {
20957       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo const *>( &rhs );
20958       return *this;
20959     }
20960 
20961 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo20962     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
20963     {
20964       pNext = pNext_;
20965       return *this;
20966     }
20967 
20968     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo20969       setFlags( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
20970     {
20971       flags = flags_;
20972       return *this;
20973     }
20974 
20975     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo &
setDescriptorUpdateEntryCountVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo20976                             setDescriptorUpdateEntryCount( uint32_t descriptorUpdateEntryCount_ ) VULKAN_HPP_NOEXCEPT
20977     {
20978       descriptorUpdateEntryCount = descriptorUpdateEntryCount_;
20979       return *this;
20980     }
20981 
setPDescriptorUpdateEntriesVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo20982     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo & setPDescriptorUpdateEntries(
20983       const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry * pDescriptorUpdateEntries_ ) VULKAN_HPP_NOEXCEPT
20984     {
20985       pDescriptorUpdateEntries = pDescriptorUpdateEntries_;
20986       return *this;
20987     }
20988 
20989 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDescriptorUpdateEntriesVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo20990     DescriptorUpdateTemplateCreateInfo & setDescriptorUpdateEntries(
20991       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry> const &
20992         descriptorUpdateEntries_ ) VULKAN_HPP_NOEXCEPT
20993     {
20994       descriptorUpdateEntryCount = static_cast<uint32_t>( descriptorUpdateEntries_.size() );
20995       pDescriptorUpdateEntries   = descriptorUpdateEntries_.data();
20996       return *this;
20997     }
20998 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
20999 
21000     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo &
setTemplateTypeVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo21001       setTemplateType( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType templateType_ ) VULKAN_HPP_NOEXCEPT
21002     {
21003       templateType = templateType_;
21004       return *this;
21005     }
21006 
21007     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo &
setDescriptorSetLayoutVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo21008       setDescriptorSetLayout( VULKAN_HPP_NAMESPACE::DescriptorSetLayout descriptorSetLayout_ ) VULKAN_HPP_NOEXCEPT
21009     {
21010       descriptorSetLayout = descriptorSetLayout_;
21011       return *this;
21012     }
21013 
21014     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo &
setPipelineBindPointVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo21015       setPipelineBindPoint( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ ) VULKAN_HPP_NOEXCEPT
21016     {
21017       pipelineBindPoint = pipelineBindPoint_;
21018       return *this;
21019     }
21020 
21021     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo &
setPipelineLayoutVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo21022       setPipelineLayout( VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout_ ) VULKAN_HPP_NOEXCEPT
21023     {
21024       pipelineLayout = pipelineLayout_;
21025       return *this;
21026     }
21027 
setSetVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo21028     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo & setSet( uint32_t set_ ) VULKAN_HPP_NOEXCEPT
21029     {
21030       set = set_;
21031       return *this;
21032     }
21033 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
21034 
operator VkDescriptorUpdateTemplateCreateInfo const&VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo21035     explicit operator VkDescriptorUpdateTemplateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
21036     {
21037       return *reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfo *>( this );
21038     }
21039 
operator VkDescriptorUpdateTemplateCreateInfo&VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo21040     explicit operator VkDescriptorUpdateTemplateCreateInfo &() VULKAN_HPP_NOEXCEPT
21041     {
21042       return *reinterpret_cast<VkDescriptorUpdateTemplateCreateInfo *>( this );
21043     }
21044 
21045 #if 14 <= VULKAN_HPP_CPP_VERSION
21046     auto
21047 #else
21048     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
21049                const void * const &,
21050                VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateFlags const &,
21051                uint32_t const &,
21052                const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry * const &,
21053                VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType const &,
21054                VULKAN_HPP_NAMESPACE::DescriptorSetLayout const &,
21055                VULKAN_HPP_NAMESPACE::PipelineBindPoint const &,
21056                VULKAN_HPP_NAMESPACE::PipelineLayout const &,
21057                uint32_t const &>
21058 #endif
reflectVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo21059       reflect() const VULKAN_HPP_NOEXCEPT
21060     {
21061       return std::tie( sType,
21062                        pNext,
21063                        flags,
21064                        descriptorUpdateEntryCount,
21065                        pDescriptorUpdateEntries,
21066                        templateType,
21067                        descriptorSetLayout,
21068                        pipelineBindPoint,
21069                        pipelineLayout,
21070                        set );
21071     }
21072 
21073 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
21074     auto operator<=>( DescriptorUpdateTemplateCreateInfo const & ) const = default;
21075 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo21076     bool operator==( DescriptorUpdateTemplateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
21077     {
21078       return this->reflect() == rhs.reflect();
21079     }
21080 
operator !=VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo21081     bool operator!=( DescriptorUpdateTemplateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
21082     {
21083       return this->reflect() != rhs.reflect();
21084     }
21085 #endif
21086 
21087   public:
21088     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorUpdateTemplateCreateInfo;
21089     const void *                        pNext = {};
21090     VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateFlags   flags                      = {};
21091     uint32_t                                                    descriptorUpdateEntryCount = {};
21092     const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry * pDescriptorUpdateEntries   = {};
21093     VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType          templateType =
21094       VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType::eDescriptorSet;
21095     VULKAN_HPP_NAMESPACE::DescriptorSetLayout descriptorSetLayout = {};
21096     VULKAN_HPP_NAMESPACE::PipelineBindPoint   pipelineBindPoint   = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics;
21097     VULKAN_HPP_NAMESPACE::PipelineLayout      pipelineLayout      = {};
21098     uint32_t                                  set                 = {};
21099   };
21100   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo ) ==
21101                               sizeof( VkDescriptorUpdateTemplateCreateInfo ),
21102                             "struct and wrapper have different size!" );
21103   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo>::value,
21104                             "struct wrapper is not a standard layout!" );
21105   VULKAN_HPP_STATIC_ASSERT(
21106     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo>::value,
21107     "DescriptorUpdateTemplateCreateInfo is not nothrow_move_constructible!" );
21108 
21109   template <>
21110   struct CppType<StructureType, StructureType::eDescriptorUpdateTemplateCreateInfo>
21111   {
21112     using Type = DescriptorUpdateTemplateCreateInfo;
21113   };
21114   using DescriptorUpdateTemplateCreateInfoKHR = DescriptorUpdateTemplateCreateInfo;
21115 
21116   struct DeviceBufferMemoryRequirementsKHR
21117   {
21118     using NativeType = VkDeviceBufferMemoryRequirementsKHR;
21119 
21120     static const bool                                  allowDuplicate = false;
21121     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
21122       StructureType::eDeviceBufferMemoryRequirementsKHR;
21123 
21124 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceBufferMemoryRequirementsKHRVULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirementsKHR21125     VULKAN_HPP_CONSTEXPR DeviceBufferMemoryRequirementsKHR(
21126       const VULKAN_HPP_NAMESPACE::BufferCreateInfo * pCreateInfo_ = {} ) VULKAN_HPP_NOEXCEPT
21127       : pCreateInfo( pCreateInfo_ )
21128     {}
21129 
21130     VULKAN_HPP_CONSTEXPR
21131       DeviceBufferMemoryRequirementsKHR( DeviceBufferMemoryRequirementsKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21132 
DeviceBufferMemoryRequirementsKHRVULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirementsKHR21133     DeviceBufferMemoryRequirementsKHR( VkDeviceBufferMemoryRequirementsKHR const & rhs ) VULKAN_HPP_NOEXCEPT
21134       : DeviceBufferMemoryRequirementsKHR( *reinterpret_cast<DeviceBufferMemoryRequirementsKHR const *>( &rhs ) )
21135     {}
21136 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
21137 
21138     DeviceBufferMemoryRequirementsKHR &
21139       operator=( DeviceBufferMemoryRequirementsKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21140 
operator =VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirementsKHR21141     DeviceBufferMemoryRequirementsKHR & operator=( VkDeviceBufferMemoryRequirementsKHR const & rhs ) VULKAN_HPP_NOEXCEPT
21142     {
21143       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirementsKHR const *>( &rhs );
21144       return *this;
21145     }
21146 
21147 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirementsKHR21148     VULKAN_HPP_CONSTEXPR_14 DeviceBufferMemoryRequirementsKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
21149     {
21150       pNext = pNext_;
21151       return *this;
21152     }
21153 
21154     VULKAN_HPP_CONSTEXPR_14 DeviceBufferMemoryRequirementsKHR &
setPCreateInfoVULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirementsKHR21155       setPCreateInfo( const VULKAN_HPP_NAMESPACE::BufferCreateInfo * pCreateInfo_ ) VULKAN_HPP_NOEXCEPT
21156     {
21157       pCreateInfo = pCreateInfo_;
21158       return *this;
21159     }
21160 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
21161 
operator VkDeviceBufferMemoryRequirementsKHR const&VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirementsKHR21162     explicit operator VkDeviceBufferMemoryRequirementsKHR const &() const VULKAN_HPP_NOEXCEPT
21163     {
21164       return *reinterpret_cast<const VkDeviceBufferMemoryRequirementsKHR *>( this );
21165     }
21166 
operator VkDeviceBufferMemoryRequirementsKHR&VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirementsKHR21167     explicit operator VkDeviceBufferMemoryRequirementsKHR &() VULKAN_HPP_NOEXCEPT
21168     {
21169       return *reinterpret_cast<VkDeviceBufferMemoryRequirementsKHR *>( this );
21170     }
21171 
21172 #if 14 <= VULKAN_HPP_CPP_VERSION
21173     auto
21174 #else
21175     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
21176                const void * const &,
21177                const VULKAN_HPP_NAMESPACE::BufferCreateInfo * const &>
21178 #endif
reflectVULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirementsKHR21179       reflect() const VULKAN_HPP_NOEXCEPT
21180     {
21181       return std::tie( sType, pNext, pCreateInfo );
21182     }
21183 
21184 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
21185     auto operator<=>( DeviceBufferMemoryRequirementsKHR const & ) const = default;
21186 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirementsKHR21187     bool operator==( DeviceBufferMemoryRequirementsKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
21188     {
21189       return this->reflect() == rhs.reflect();
21190     }
21191 
operator !=VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirementsKHR21192     bool operator!=( DeviceBufferMemoryRequirementsKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
21193     {
21194       return this->reflect() != rhs.reflect();
21195     }
21196 #endif
21197 
21198   public:
21199     VULKAN_HPP_NAMESPACE::StructureType            sType       = StructureType::eDeviceBufferMemoryRequirementsKHR;
21200     const void *                                   pNext       = {};
21201     const VULKAN_HPP_NAMESPACE::BufferCreateInfo * pCreateInfo = {};
21202   };
21203   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirementsKHR ) ==
21204                               sizeof( VkDeviceBufferMemoryRequirementsKHR ),
21205                             "struct and wrapper have different size!" );
21206   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirementsKHR>::value,
21207                             "struct wrapper is not a standard layout!" );
21208   VULKAN_HPP_STATIC_ASSERT(
21209     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirementsKHR>::value,
21210     "DeviceBufferMemoryRequirementsKHR is not nothrow_move_constructible!" );
21211 
21212   template <>
21213   struct CppType<StructureType, StructureType::eDeviceBufferMemoryRequirementsKHR>
21214   {
21215     using Type = DeviceBufferMemoryRequirementsKHR;
21216   };
21217 
21218   struct DeviceQueueCreateInfo
21219   {
21220     using NativeType = VkDeviceQueueCreateInfo;
21221 
21222     static const bool                                  allowDuplicate = false;
21223     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceQueueCreateInfo;
21224 
21225 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceQueueCreateInfoVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo21226     VULKAN_HPP_CONSTEXPR DeviceQueueCreateInfo( VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags_            = {},
21227                                                 uint32_t                                     queueFamilyIndex_ = {},
21228                                                 uint32_t                                     queueCount_       = {},
21229                                                 const float * pQueuePriorities_ = {} ) VULKAN_HPP_NOEXCEPT
21230       : flags( flags_ )
21231       , queueFamilyIndex( queueFamilyIndex_ )
21232       , queueCount( queueCount_ )
21233       , pQueuePriorities( pQueuePriorities_ )
21234     {}
21235 
21236     VULKAN_HPP_CONSTEXPR DeviceQueueCreateInfo( DeviceQueueCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21237 
DeviceQueueCreateInfoVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo21238     DeviceQueueCreateInfo( VkDeviceQueueCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
21239       : DeviceQueueCreateInfo( *reinterpret_cast<DeviceQueueCreateInfo const *>( &rhs ) )
21240     {}
21241 
21242 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DeviceQueueCreateInfoVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo21243     DeviceQueueCreateInfo( VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags                       flags_,
21244                            uint32_t                                                           queueFamilyIndex_,
21245                            VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const float> const & queuePriorities_ )
21246       : flags( flags_ )
21247       , queueFamilyIndex( queueFamilyIndex_ )
21248       , queueCount( static_cast<uint32_t>( queuePriorities_.size() ) )
21249       , pQueuePriorities( queuePriorities_.data() )
21250     {}
21251 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21252 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
21253 
21254     DeviceQueueCreateInfo & operator=( DeviceQueueCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21255 
operator =VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo21256     DeviceQueueCreateInfo & operator=( VkDeviceQueueCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
21257     {
21258       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo const *>( &rhs );
21259       return *this;
21260     }
21261 
21262 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo21263     VULKAN_HPP_CONSTEXPR_14 DeviceQueueCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
21264     {
21265       pNext = pNext_;
21266       return *this;
21267     }
21268 
21269     VULKAN_HPP_CONSTEXPR_14 DeviceQueueCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo21270                             setFlags( VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
21271     {
21272       flags = flags_;
21273       return *this;
21274     }
21275 
21276     VULKAN_HPP_CONSTEXPR_14 DeviceQueueCreateInfo &
setQueueFamilyIndexVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo21277                             setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
21278     {
21279       queueFamilyIndex = queueFamilyIndex_;
21280       return *this;
21281     }
21282 
setQueueCountVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo21283     VULKAN_HPP_CONSTEXPR_14 DeviceQueueCreateInfo & setQueueCount( uint32_t queueCount_ ) VULKAN_HPP_NOEXCEPT
21284     {
21285       queueCount = queueCount_;
21286       return *this;
21287     }
21288 
21289     VULKAN_HPP_CONSTEXPR_14 DeviceQueueCreateInfo &
setPQueuePrioritiesVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo21290                             setPQueuePriorities( const float * pQueuePriorities_ ) VULKAN_HPP_NOEXCEPT
21291     {
21292       pQueuePriorities = pQueuePriorities_;
21293       return *this;
21294     }
21295 
21296 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setQueuePrioritiesVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo21297     DeviceQueueCreateInfo & setQueuePriorities(
21298       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const float> const & queuePriorities_ ) VULKAN_HPP_NOEXCEPT
21299     {
21300       queueCount       = static_cast<uint32_t>( queuePriorities_.size() );
21301       pQueuePriorities = queuePriorities_.data();
21302       return *this;
21303     }
21304 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21305 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
21306 
operator VkDeviceQueueCreateInfo const&VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo21307     explicit operator VkDeviceQueueCreateInfo const &() const VULKAN_HPP_NOEXCEPT
21308     {
21309       return *reinterpret_cast<const VkDeviceQueueCreateInfo *>( this );
21310     }
21311 
operator VkDeviceQueueCreateInfo&VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo21312     explicit operator VkDeviceQueueCreateInfo &() VULKAN_HPP_NOEXCEPT
21313     {
21314       return *reinterpret_cast<VkDeviceQueueCreateInfo *>( this );
21315     }
21316 
21317 #if 14 <= VULKAN_HPP_CPP_VERSION
21318     auto
21319 #else
21320     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
21321                const void * const &,
21322                VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags const &,
21323                uint32_t const &,
21324                uint32_t const &,
21325                const float * const &>
21326 #endif
reflectVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo21327       reflect() const VULKAN_HPP_NOEXCEPT
21328     {
21329       return std::tie( sType, pNext, flags, queueFamilyIndex, queueCount, pQueuePriorities );
21330     }
21331 
21332 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
21333     auto operator<=>( DeviceQueueCreateInfo const & ) const = default;
21334 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo21335     bool operator==( DeviceQueueCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
21336     {
21337       return this->reflect() == rhs.reflect();
21338     }
21339 
operator !=VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo21340     bool operator!=( DeviceQueueCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
21341     {
21342       return this->reflect() != rhs.reflect();
21343     }
21344 #endif
21345 
21346   public:
21347     VULKAN_HPP_NAMESPACE::StructureType          sType            = StructureType::eDeviceQueueCreateInfo;
21348     const void *                                 pNext            = {};
21349     VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags            = {};
21350     uint32_t                                     queueFamilyIndex = {};
21351     uint32_t                                     queueCount       = {};
21352     const float *                                pQueuePriorities = {};
21353   };
21354   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo ) == sizeof( VkDeviceQueueCreateInfo ),
21355                             "struct and wrapper have different size!" );
21356   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo>::value,
21357                             "struct wrapper is not a standard layout!" );
21358   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo>::value,
21359                             "DeviceQueueCreateInfo is not nothrow_move_constructible!" );
21360 
21361   template <>
21362   struct CppType<StructureType, StructureType::eDeviceQueueCreateInfo>
21363   {
21364     using Type = DeviceQueueCreateInfo;
21365   };
21366 
21367   struct PhysicalDeviceFeatures
21368   {
21369     using NativeType = VkPhysicalDeviceFeatures;
21370 
21371 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
21372     VULKAN_HPP_CONSTEXPR
PhysicalDeviceFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21373       PhysicalDeviceFeatures( VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccess_                      = {},
21374                               VULKAN_HPP_NAMESPACE::Bool32 fullDrawIndexUint32_                     = {},
21375                               VULKAN_HPP_NAMESPACE::Bool32 imageCubeArray_                          = {},
21376                               VULKAN_HPP_NAMESPACE::Bool32 independentBlend_                        = {},
21377                               VULKAN_HPP_NAMESPACE::Bool32 geometryShader_                          = {},
21378                               VULKAN_HPP_NAMESPACE::Bool32 tessellationShader_                      = {},
21379                               VULKAN_HPP_NAMESPACE::Bool32 sampleRateShading_                       = {},
21380                               VULKAN_HPP_NAMESPACE::Bool32 dualSrcBlend_                            = {},
21381                               VULKAN_HPP_NAMESPACE::Bool32 logicOp_                                 = {},
21382                               VULKAN_HPP_NAMESPACE::Bool32 multiDrawIndirect_                       = {},
21383                               VULKAN_HPP_NAMESPACE::Bool32 drawIndirectFirstInstance_               = {},
21384                               VULKAN_HPP_NAMESPACE::Bool32 depthClamp_                              = {},
21385                               VULKAN_HPP_NAMESPACE::Bool32 depthBiasClamp_                          = {},
21386                               VULKAN_HPP_NAMESPACE::Bool32 fillModeNonSolid_                        = {},
21387                               VULKAN_HPP_NAMESPACE::Bool32 depthBounds_                             = {},
21388                               VULKAN_HPP_NAMESPACE::Bool32 wideLines_                               = {},
21389                               VULKAN_HPP_NAMESPACE::Bool32 largePoints_                             = {},
21390                               VULKAN_HPP_NAMESPACE::Bool32 alphaToOne_                              = {},
21391                               VULKAN_HPP_NAMESPACE::Bool32 multiViewport_                           = {},
21392                               VULKAN_HPP_NAMESPACE::Bool32 samplerAnisotropy_                       = {},
21393                               VULKAN_HPP_NAMESPACE::Bool32 textureCompressionETC2_                  = {},
21394                               VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_LDR_              = {},
21395                               VULKAN_HPP_NAMESPACE::Bool32 textureCompressionBC_                    = {},
21396                               VULKAN_HPP_NAMESPACE::Bool32 occlusionQueryPrecise_                   = {},
21397                               VULKAN_HPP_NAMESPACE::Bool32 pipelineStatisticsQuery_                 = {},
21398                               VULKAN_HPP_NAMESPACE::Bool32 vertexPipelineStoresAndAtomics_          = {},
21399                               VULKAN_HPP_NAMESPACE::Bool32 fragmentStoresAndAtomics_                = {},
21400                               VULKAN_HPP_NAMESPACE::Bool32 shaderTessellationAndGeometryPointSize_  = {},
21401                               VULKAN_HPP_NAMESPACE::Bool32 shaderImageGatherExtended_               = {},
21402                               VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageExtendedFormats_       = {},
21403                               VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageMultisample_           = {},
21404                               VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageReadWithoutFormat_     = {},
21405                               VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageWriteWithoutFormat_    = {},
21406                               VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayDynamicIndexing_ = {},
21407                               VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayDynamicIndexing_  = {},
21408                               VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayDynamicIndexing_ = {},
21409                               VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayDynamicIndexing_  = {},
21410                               VULKAN_HPP_NAMESPACE::Bool32 shaderClipDistance_                      = {},
21411                               VULKAN_HPP_NAMESPACE::Bool32 shaderCullDistance_                      = {},
21412                               VULKAN_HPP_NAMESPACE::Bool32 shaderFloat64_                           = {},
21413                               VULKAN_HPP_NAMESPACE::Bool32 shaderInt64_                             = {},
21414                               VULKAN_HPP_NAMESPACE::Bool32 shaderInt16_                             = {},
21415                               VULKAN_HPP_NAMESPACE::Bool32 shaderResourceResidency_                 = {},
21416                               VULKAN_HPP_NAMESPACE::Bool32 shaderResourceMinLod_                    = {},
21417                               VULKAN_HPP_NAMESPACE::Bool32 sparseBinding_                           = {},
21418                               VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyBuffer_                   = {},
21419                               VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyImage2D_                  = {},
21420                               VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyImage3D_                  = {},
21421                               VULKAN_HPP_NAMESPACE::Bool32 sparseResidency2Samples_                 = {},
21422                               VULKAN_HPP_NAMESPACE::Bool32 sparseResidency4Samples_                 = {},
21423                               VULKAN_HPP_NAMESPACE::Bool32 sparseResidency8Samples_                 = {},
21424                               VULKAN_HPP_NAMESPACE::Bool32 sparseResidency16Samples_                = {},
21425                               VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyAliased_                  = {},
21426                               VULKAN_HPP_NAMESPACE::Bool32 variableMultisampleRate_                 = {},
21427                               VULKAN_HPP_NAMESPACE::Bool32 inheritedQueries_ = {} ) VULKAN_HPP_NOEXCEPT
21428       : robustBufferAccess( robustBufferAccess_ )
21429       , fullDrawIndexUint32( fullDrawIndexUint32_ )
21430       , imageCubeArray( imageCubeArray_ )
21431       , independentBlend( independentBlend_ )
21432       , geometryShader( geometryShader_ )
21433       , tessellationShader( tessellationShader_ )
21434       , sampleRateShading( sampleRateShading_ )
21435       , dualSrcBlend( dualSrcBlend_ )
21436       , logicOp( logicOp_ )
21437       , multiDrawIndirect( multiDrawIndirect_ )
21438       , drawIndirectFirstInstance( drawIndirectFirstInstance_ )
21439       , depthClamp( depthClamp_ )
21440       , depthBiasClamp( depthBiasClamp_ )
21441       , fillModeNonSolid( fillModeNonSolid_ )
21442       , depthBounds( depthBounds_ )
21443       , wideLines( wideLines_ )
21444       , largePoints( largePoints_ )
21445       , alphaToOne( alphaToOne_ )
21446       , multiViewport( multiViewport_ )
21447       , samplerAnisotropy( samplerAnisotropy_ )
21448       , textureCompressionETC2( textureCompressionETC2_ )
21449       , textureCompressionASTC_LDR( textureCompressionASTC_LDR_ )
21450       , textureCompressionBC( textureCompressionBC_ )
21451       , occlusionQueryPrecise( occlusionQueryPrecise_ )
21452       , pipelineStatisticsQuery( pipelineStatisticsQuery_ )
21453       , vertexPipelineStoresAndAtomics( vertexPipelineStoresAndAtomics_ )
21454       , fragmentStoresAndAtomics( fragmentStoresAndAtomics_ )
21455       , shaderTessellationAndGeometryPointSize( shaderTessellationAndGeometryPointSize_ )
21456       , shaderImageGatherExtended( shaderImageGatherExtended_ )
21457       , shaderStorageImageExtendedFormats( shaderStorageImageExtendedFormats_ )
21458       , shaderStorageImageMultisample( shaderStorageImageMultisample_ )
21459       , shaderStorageImageReadWithoutFormat( shaderStorageImageReadWithoutFormat_ )
21460       , shaderStorageImageWriteWithoutFormat( shaderStorageImageWriteWithoutFormat_ )
21461       , shaderUniformBufferArrayDynamicIndexing( shaderUniformBufferArrayDynamicIndexing_ )
21462       , shaderSampledImageArrayDynamicIndexing( shaderSampledImageArrayDynamicIndexing_ )
21463       , shaderStorageBufferArrayDynamicIndexing( shaderStorageBufferArrayDynamicIndexing_ )
21464       , shaderStorageImageArrayDynamicIndexing( shaderStorageImageArrayDynamicIndexing_ )
21465       , shaderClipDistance( shaderClipDistance_ )
21466       , shaderCullDistance( shaderCullDistance_ )
21467       , shaderFloat64( shaderFloat64_ )
21468       , shaderInt64( shaderInt64_ )
21469       , shaderInt16( shaderInt16_ )
21470       , shaderResourceResidency( shaderResourceResidency_ )
21471       , shaderResourceMinLod( shaderResourceMinLod_ )
21472       , sparseBinding( sparseBinding_ )
21473       , sparseResidencyBuffer( sparseResidencyBuffer_ )
21474       , sparseResidencyImage2D( sparseResidencyImage2D_ )
21475       , sparseResidencyImage3D( sparseResidencyImage3D_ )
21476       , sparseResidency2Samples( sparseResidency2Samples_ )
21477       , sparseResidency4Samples( sparseResidency4Samples_ )
21478       , sparseResidency8Samples( sparseResidency8Samples_ )
21479       , sparseResidency16Samples( sparseResidency16Samples_ )
21480       , sparseResidencyAliased( sparseResidencyAliased_ )
21481       , variableMultisampleRate( variableMultisampleRate_ )
21482       , inheritedQueries( inheritedQueries_ )
21483     {}
21484 
21485     VULKAN_HPP_CONSTEXPR PhysicalDeviceFeatures( PhysicalDeviceFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21486 
PhysicalDeviceFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21487     PhysicalDeviceFeatures( VkPhysicalDeviceFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
21488       : PhysicalDeviceFeatures( *reinterpret_cast<PhysicalDeviceFeatures const *>( &rhs ) )
21489     {}
21490 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
21491 
21492     PhysicalDeviceFeatures & operator=( PhysicalDeviceFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21493 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21494     PhysicalDeviceFeatures & operator=( VkPhysicalDeviceFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
21495     {
21496       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures const *>( &rhs );
21497       return *this;
21498     }
21499 
21500 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
21501     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setRobustBufferAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21502       setRobustBufferAccess( VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccess_ ) VULKAN_HPP_NOEXCEPT
21503     {
21504       robustBufferAccess = robustBufferAccess_;
21505       return *this;
21506     }
21507 
21508     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setFullDrawIndexUint32VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21509       setFullDrawIndexUint32( VULKAN_HPP_NAMESPACE::Bool32 fullDrawIndexUint32_ ) VULKAN_HPP_NOEXCEPT
21510     {
21511       fullDrawIndexUint32 = fullDrawIndexUint32_;
21512       return *this;
21513     }
21514 
21515     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setImageCubeArrayVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21516                             setImageCubeArray( VULKAN_HPP_NAMESPACE::Bool32 imageCubeArray_ ) VULKAN_HPP_NOEXCEPT
21517     {
21518       imageCubeArray = imageCubeArray_;
21519       return *this;
21520     }
21521 
21522     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setIndependentBlendVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21523                             setIndependentBlend( VULKAN_HPP_NAMESPACE::Bool32 independentBlend_ ) VULKAN_HPP_NOEXCEPT
21524     {
21525       independentBlend = independentBlend_;
21526       return *this;
21527     }
21528 
21529     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setGeometryShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21530                             setGeometryShader( VULKAN_HPP_NAMESPACE::Bool32 geometryShader_ ) VULKAN_HPP_NOEXCEPT
21531     {
21532       geometryShader = geometryShader_;
21533       return *this;
21534     }
21535 
21536     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setTessellationShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21537       setTessellationShader( VULKAN_HPP_NAMESPACE::Bool32 tessellationShader_ ) VULKAN_HPP_NOEXCEPT
21538     {
21539       tessellationShader = tessellationShader_;
21540       return *this;
21541     }
21542 
21543     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setSampleRateShadingVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21544                             setSampleRateShading( VULKAN_HPP_NAMESPACE::Bool32 sampleRateShading_ ) VULKAN_HPP_NOEXCEPT
21545     {
21546       sampleRateShading = sampleRateShading_;
21547       return *this;
21548     }
21549 
21550     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setDualSrcBlendVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21551                             setDualSrcBlend( VULKAN_HPP_NAMESPACE::Bool32 dualSrcBlend_ ) VULKAN_HPP_NOEXCEPT
21552     {
21553       dualSrcBlend = dualSrcBlend_;
21554       return *this;
21555     }
21556 
21557     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setLogicOpVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21558                             setLogicOp( VULKAN_HPP_NAMESPACE::Bool32 logicOp_ ) VULKAN_HPP_NOEXCEPT
21559     {
21560       logicOp = logicOp_;
21561       return *this;
21562     }
21563 
21564     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setMultiDrawIndirectVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21565                             setMultiDrawIndirect( VULKAN_HPP_NAMESPACE::Bool32 multiDrawIndirect_ ) VULKAN_HPP_NOEXCEPT
21566     {
21567       multiDrawIndirect = multiDrawIndirect_;
21568       return *this;
21569     }
21570 
21571     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setDrawIndirectFirstInstanceVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21572       setDrawIndirectFirstInstance( VULKAN_HPP_NAMESPACE::Bool32 drawIndirectFirstInstance_ ) VULKAN_HPP_NOEXCEPT
21573     {
21574       drawIndirectFirstInstance = drawIndirectFirstInstance_;
21575       return *this;
21576     }
21577 
21578     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setDepthClampVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21579                             setDepthClamp( VULKAN_HPP_NAMESPACE::Bool32 depthClamp_ ) VULKAN_HPP_NOEXCEPT
21580     {
21581       depthClamp = depthClamp_;
21582       return *this;
21583     }
21584 
21585     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setDepthBiasClampVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21586                             setDepthBiasClamp( VULKAN_HPP_NAMESPACE::Bool32 depthBiasClamp_ ) VULKAN_HPP_NOEXCEPT
21587     {
21588       depthBiasClamp = depthBiasClamp_;
21589       return *this;
21590     }
21591 
21592     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setFillModeNonSolidVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21593                             setFillModeNonSolid( VULKAN_HPP_NAMESPACE::Bool32 fillModeNonSolid_ ) VULKAN_HPP_NOEXCEPT
21594     {
21595       fillModeNonSolid = fillModeNonSolid_;
21596       return *this;
21597     }
21598 
21599     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setDepthBoundsVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21600                             setDepthBounds( VULKAN_HPP_NAMESPACE::Bool32 depthBounds_ ) VULKAN_HPP_NOEXCEPT
21601     {
21602       depthBounds = depthBounds_;
21603       return *this;
21604     }
21605 
21606     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setWideLinesVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21607                             setWideLines( VULKAN_HPP_NAMESPACE::Bool32 wideLines_ ) VULKAN_HPP_NOEXCEPT
21608     {
21609       wideLines = wideLines_;
21610       return *this;
21611     }
21612 
21613     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setLargePointsVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21614                             setLargePoints( VULKAN_HPP_NAMESPACE::Bool32 largePoints_ ) VULKAN_HPP_NOEXCEPT
21615     {
21616       largePoints = largePoints_;
21617       return *this;
21618     }
21619 
21620     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setAlphaToOneVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21621                             setAlphaToOne( VULKAN_HPP_NAMESPACE::Bool32 alphaToOne_ ) VULKAN_HPP_NOEXCEPT
21622     {
21623       alphaToOne = alphaToOne_;
21624       return *this;
21625     }
21626 
21627     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setMultiViewportVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21628                             setMultiViewport( VULKAN_HPP_NAMESPACE::Bool32 multiViewport_ ) VULKAN_HPP_NOEXCEPT
21629     {
21630       multiViewport = multiViewport_;
21631       return *this;
21632     }
21633 
21634     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setSamplerAnisotropyVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21635                             setSamplerAnisotropy( VULKAN_HPP_NAMESPACE::Bool32 samplerAnisotropy_ ) VULKAN_HPP_NOEXCEPT
21636     {
21637       samplerAnisotropy = samplerAnisotropy_;
21638       return *this;
21639     }
21640 
21641     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setTextureCompressionETC2VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21642       setTextureCompressionETC2( VULKAN_HPP_NAMESPACE::Bool32 textureCompressionETC2_ ) VULKAN_HPP_NOEXCEPT
21643     {
21644       textureCompressionETC2 = textureCompressionETC2_;
21645       return *this;
21646     }
21647 
21648     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setTextureCompressionASTC_LDRVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21649       setTextureCompressionASTC_LDR( VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_LDR_ ) VULKAN_HPP_NOEXCEPT
21650     {
21651       textureCompressionASTC_LDR = textureCompressionASTC_LDR_;
21652       return *this;
21653     }
21654 
21655     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setTextureCompressionBCVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21656       setTextureCompressionBC( VULKAN_HPP_NAMESPACE::Bool32 textureCompressionBC_ ) VULKAN_HPP_NOEXCEPT
21657     {
21658       textureCompressionBC = textureCompressionBC_;
21659       return *this;
21660     }
21661 
21662     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setOcclusionQueryPreciseVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21663       setOcclusionQueryPrecise( VULKAN_HPP_NAMESPACE::Bool32 occlusionQueryPrecise_ ) VULKAN_HPP_NOEXCEPT
21664     {
21665       occlusionQueryPrecise = occlusionQueryPrecise_;
21666       return *this;
21667     }
21668 
21669     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setPipelineStatisticsQueryVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21670       setPipelineStatisticsQuery( VULKAN_HPP_NAMESPACE::Bool32 pipelineStatisticsQuery_ ) VULKAN_HPP_NOEXCEPT
21671     {
21672       pipelineStatisticsQuery = pipelineStatisticsQuery_;
21673       return *this;
21674     }
21675 
setVertexPipelineStoresAndAtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21676     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setVertexPipelineStoresAndAtomics(
21677       VULKAN_HPP_NAMESPACE::Bool32 vertexPipelineStoresAndAtomics_ ) VULKAN_HPP_NOEXCEPT
21678     {
21679       vertexPipelineStoresAndAtomics = vertexPipelineStoresAndAtomics_;
21680       return *this;
21681     }
21682 
21683     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setFragmentStoresAndAtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21684       setFragmentStoresAndAtomics( VULKAN_HPP_NAMESPACE::Bool32 fragmentStoresAndAtomics_ ) VULKAN_HPP_NOEXCEPT
21685     {
21686       fragmentStoresAndAtomics = fragmentStoresAndAtomics_;
21687       return *this;
21688     }
21689 
setShaderTessellationAndGeometryPointSizeVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21690     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderTessellationAndGeometryPointSize(
21691       VULKAN_HPP_NAMESPACE::Bool32 shaderTessellationAndGeometryPointSize_ ) VULKAN_HPP_NOEXCEPT
21692     {
21693       shaderTessellationAndGeometryPointSize = shaderTessellationAndGeometryPointSize_;
21694       return *this;
21695     }
21696 
21697     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setShaderImageGatherExtendedVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21698       setShaderImageGatherExtended( VULKAN_HPP_NAMESPACE::Bool32 shaderImageGatherExtended_ ) VULKAN_HPP_NOEXCEPT
21699     {
21700       shaderImageGatherExtended = shaderImageGatherExtended_;
21701       return *this;
21702     }
21703 
setShaderStorageImageExtendedFormatsVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21704     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderStorageImageExtendedFormats(
21705       VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageExtendedFormats_ ) VULKAN_HPP_NOEXCEPT
21706     {
21707       shaderStorageImageExtendedFormats = shaderStorageImageExtendedFormats_;
21708       return *this;
21709     }
21710 
setShaderStorageImageMultisampleVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21711     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderStorageImageMultisample(
21712       VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageMultisample_ ) VULKAN_HPP_NOEXCEPT
21713     {
21714       shaderStorageImageMultisample = shaderStorageImageMultisample_;
21715       return *this;
21716     }
21717 
setShaderStorageImageReadWithoutFormatVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21718     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderStorageImageReadWithoutFormat(
21719       VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageReadWithoutFormat_ ) VULKAN_HPP_NOEXCEPT
21720     {
21721       shaderStorageImageReadWithoutFormat = shaderStorageImageReadWithoutFormat_;
21722       return *this;
21723     }
21724 
setShaderStorageImageWriteWithoutFormatVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21725     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderStorageImageWriteWithoutFormat(
21726       VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageWriteWithoutFormat_ ) VULKAN_HPP_NOEXCEPT
21727     {
21728       shaderStorageImageWriteWithoutFormat = shaderStorageImageWriteWithoutFormat_;
21729       return *this;
21730     }
21731 
setShaderUniformBufferArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21732     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderUniformBufferArrayDynamicIndexing(
21733       VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
21734     {
21735       shaderUniformBufferArrayDynamicIndexing = shaderUniformBufferArrayDynamicIndexing_;
21736       return *this;
21737     }
21738 
setShaderSampledImageArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21739     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderSampledImageArrayDynamicIndexing(
21740       VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
21741     {
21742       shaderSampledImageArrayDynamicIndexing = shaderSampledImageArrayDynamicIndexing_;
21743       return *this;
21744     }
21745 
setShaderStorageBufferArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21746     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderStorageBufferArrayDynamicIndexing(
21747       VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
21748     {
21749       shaderStorageBufferArrayDynamicIndexing = shaderStorageBufferArrayDynamicIndexing_;
21750       return *this;
21751     }
21752 
setShaderStorageImageArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21753     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderStorageImageArrayDynamicIndexing(
21754       VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
21755     {
21756       shaderStorageImageArrayDynamicIndexing = shaderStorageImageArrayDynamicIndexing_;
21757       return *this;
21758     }
21759 
21760     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setShaderClipDistanceVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21761       setShaderClipDistance( VULKAN_HPP_NAMESPACE::Bool32 shaderClipDistance_ ) VULKAN_HPP_NOEXCEPT
21762     {
21763       shaderClipDistance = shaderClipDistance_;
21764       return *this;
21765     }
21766 
21767     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setShaderCullDistanceVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21768       setShaderCullDistance( VULKAN_HPP_NAMESPACE::Bool32 shaderCullDistance_ ) VULKAN_HPP_NOEXCEPT
21769     {
21770       shaderCullDistance = shaderCullDistance_;
21771       return *this;
21772     }
21773 
21774     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setShaderFloat64VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21775                             setShaderFloat64( VULKAN_HPP_NAMESPACE::Bool32 shaderFloat64_ ) VULKAN_HPP_NOEXCEPT
21776     {
21777       shaderFloat64 = shaderFloat64_;
21778       return *this;
21779     }
21780 
21781     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setShaderInt64VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21782                             setShaderInt64( VULKAN_HPP_NAMESPACE::Bool32 shaderInt64_ ) VULKAN_HPP_NOEXCEPT
21783     {
21784       shaderInt64 = shaderInt64_;
21785       return *this;
21786     }
21787 
21788     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setShaderInt16VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21789                             setShaderInt16( VULKAN_HPP_NAMESPACE::Bool32 shaderInt16_ ) VULKAN_HPP_NOEXCEPT
21790     {
21791       shaderInt16 = shaderInt16_;
21792       return *this;
21793     }
21794 
21795     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setShaderResourceResidencyVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21796       setShaderResourceResidency( VULKAN_HPP_NAMESPACE::Bool32 shaderResourceResidency_ ) VULKAN_HPP_NOEXCEPT
21797     {
21798       shaderResourceResidency = shaderResourceResidency_;
21799       return *this;
21800     }
21801 
21802     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setShaderResourceMinLodVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21803       setShaderResourceMinLod( VULKAN_HPP_NAMESPACE::Bool32 shaderResourceMinLod_ ) VULKAN_HPP_NOEXCEPT
21804     {
21805       shaderResourceMinLod = shaderResourceMinLod_;
21806       return *this;
21807     }
21808 
21809     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setSparseBindingVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21810                             setSparseBinding( VULKAN_HPP_NAMESPACE::Bool32 sparseBinding_ ) VULKAN_HPP_NOEXCEPT
21811     {
21812       sparseBinding = sparseBinding_;
21813       return *this;
21814     }
21815 
21816     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setSparseResidencyBufferVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21817       setSparseResidencyBuffer( VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyBuffer_ ) VULKAN_HPP_NOEXCEPT
21818     {
21819       sparseResidencyBuffer = sparseResidencyBuffer_;
21820       return *this;
21821     }
21822 
21823     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setSparseResidencyImage2DVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21824       setSparseResidencyImage2D( VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyImage2D_ ) VULKAN_HPP_NOEXCEPT
21825     {
21826       sparseResidencyImage2D = sparseResidencyImage2D_;
21827       return *this;
21828     }
21829 
21830     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setSparseResidencyImage3DVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21831       setSparseResidencyImage3D( VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyImage3D_ ) VULKAN_HPP_NOEXCEPT
21832     {
21833       sparseResidencyImage3D = sparseResidencyImage3D_;
21834       return *this;
21835     }
21836 
21837     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setSparseResidency2SamplesVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21838       setSparseResidency2Samples( VULKAN_HPP_NAMESPACE::Bool32 sparseResidency2Samples_ ) VULKAN_HPP_NOEXCEPT
21839     {
21840       sparseResidency2Samples = sparseResidency2Samples_;
21841       return *this;
21842     }
21843 
21844     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setSparseResidency4SamplesVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21845       setSparseResidency4Samples( VULKAN_HPP_NAMESPACE::Bool32 sparseResidency4Samples_ ) VULKAN_HPP_NOEXCEPT
21846     {
21847       sparseResidency4Samples = sparseResidency4Samples_;
21848       return *this;
21849     }
21850 
21851     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setSparseResidency8SamplesVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21852       setSparseResidency8Samples( VULKAN_HPP_NAMESPACE::Bool32 sparseResidency8Samples_ ) VULKAN_HPP_NOEXCEPT
21853     {
21854       sparseResidency8Samples = sparseResidency8Samples_;
21855       return *this;
21856     }
21857 
21858     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setSparseResidency16SamplesVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21859       setSparseResidency16Samples( VULKAN_HPP_NAMESPACE::Bool32 sparseResidency16Samples_ ) VULKAN_HPP_NOEXCEPT
21860     {
21861       sparseResidency16Samples = sparseResidency16Samples_;
21862       return *this;
21863     }
21864 
21865     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setSparseResidencyAliasedVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21866       setSparseResidencyAliased( VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyAliased_ ) VULKAN_HPP_NOEXCEPT
21867     {
21868       sparseResidencyAliased = sparseResidencyAliased_;
21869       return *this;
21870     }
21871 
21872     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setVariableMultisampleRateVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21873       setVariableMultisampleRate( VULKAN_HPP_NAMESPACE::Bool32 variableMultisampleRate_ ) VULKAN_HPP_NOEXCEPT
21874     {
21875       variableMultisampleRate = variableMultisampleRate_;
21876       return *this;
21877     }
21878 
21879     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setInheritedQueriesVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21880                             setInheritedQueries( VULKAN_HPP_NAMESPACE::Bool32 inheritedQueries_ ) VULKAN_HPP_NOEXCEPT
21881     {
21882       inheritedQueries = inheritedQueries_;
21883       return *this;
21884     }
21885 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
21886 
operator VkPhysicalDeviceFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21887     explicit operator VkPhysicalDeviceFeatures const &() const VULKAN_HPP_NOEXCEPT
21888     {
21889       return *reinterpret_cast<const VkPhysicalDeviceFeatures *>( this );
21890     }
21891 
operator VkPhysicalDeviceFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21892     explicit operator VkPhysicalDeviceFeatures &() VULKAN_HPP_NOEXCEPT
21893     {
21894       return *reinterpret_cast<VkPhysicalDeviceFeatures *>( this );
21895     }
21896 
21897 #if 14 <= VULKAN_HPP_CPP_VERSION
21898     auto
21899 #else
21900     std::tuple<VULKAN_HPP_NAMESPACE::Bool32 const &,
21901                VULKAN_HPP_NAMESPACE::Bool32 const &,
21902                VULKAN_HPP_NAMESPACE::Bool32 const &,
21903                VULKAN_HPP_NAMESPACE::Bool32 const &,
21904                VULKAN_HPP_NAMESPACE::Bool32 const &,
21905                VULKAN_HPP_NAMESPACE::Bool32 const &,
21906                VULKAN_HPP_NAMESPACE::Bool32 const &,
21907                VULKAN_HPP_NAMESPACE::Bool32 const &,
21908                VULKAN_HPP_NAMESPACE::Bool32 const &,
21909                VULKAN_HPP_NAMESPACE::Bool32 const &,
21910                VULKAN_HPP_NAMESPACE::Bool32 const &,
21911                VULKAN_HPP_NAMESPACE::Bool32 const &,
21912                VULKAN_HPP_NAMESPACE::Bool32 const &,
21913                VULKAN_HPP_NAMESPACE::Bool32 const &,
21914                VULKAN_HPP_NAMESPACE::Bool32 const &,
21915                VULKAN_HPP_NAMESPACE::Bool32 const &,
21916                VULKAN_HPP_NAMESPACE::Bool32 const &,
21917                VULKAN_HPP_NAMESPACE::Bool32 const &,
21918                VULKAN_HPP_NAMESPACE::Bool32 const &,
21919                VULKAN_HPP_NAMESPACE::Bool32 const &,
21920                VULKAN_HPP_NAMESPACE::Bool32 const &,
21921                VULKAN_HPP_NAMESPACE::Bool32 const &,
21922                VULKAN_HPP_NAMESPACE::Bool32 const &,
21923                VULKAN_HPP_NAMESPACE::Bool32 const &,
21924                VULKAN_HPP_NAMESPACE::Bool32 const &,
21925                VULKAN_HPP_NAMESPACE::Bool32 const &,
21926                VULKAN_HPP_NAMESPACE::Bool32 const &,
21927                VULKAN_HPP_NAMESPACE::Bool32 const &,
21928                VULKAN_HPP_NAMESPACE::Bool32 const &,
21929                VULKAN_HPP_NAMESPACE::Bool32 const &,
21930                VULKAN_HPP_NAMESPACE::Bool32 const &,
21931                VULKAN_HPP_NAMESPACE::Bool32 const &,
21932                VULKAN_HPP_NAMESPACE::Bool32 const &,
21933                VULKAN_HPP_NAMESPACE::Bool32 const &,
21934                VULKAN_HPP_NAMESPACE::Bool32 const &,
21935                VULKAN_HPP_NAMESPACE::Bool32 const &,
21936                VULKAN_HPP_NAMESPACE::Bool32 const &,
21937                VULKAN_HPP_NAMESPACE::Bool32 const &,
21938                VULKAN_HPP_NAMESPACE::Bool32 const &,
21939                VULKAN_HPP_NAMESPACE::Bool32 const &,
21940                VULKAN_HPP_NAMESPACE::Bool32 const &,
21941                VULKAN_HPP_NAMESPACE::Bool32 const &,
21942                VULKAN_HPP_NAMESPACE::Bool32 const &,
21943                VULKAN_HPP_NAMESPACE::Bool32 const &,
21944                VULKAN_HPP_NAMESPACE::Bool32 const &,
21945                VULKAN_HPP_NAMESPACE::Bool32 const &,
21946                VULKAN_HPP_NAMESPACE::Bool32 const &,
21947                VULKAN_HPP_NAMESPACE::Bool32 const &,
21948                VULKAN_HPP_NAMESPACE::Bool32 const &,
21949                VULKAN_HPP_NAMESPACE::Bool32 const &,
21950                VULKAN_HPP_NAMESPACE::Bool32 const &,
21951                VULKAN_HPP_NAMESPACE::Bool32 const &,
21952                VULKAN_HPP_NAMESPACE::Bool32 const &,
21953                VULKAN_HPP_NAMESPACE::Bool32 const &,
21954                VULKAN_HPP_NAMESPACE::Bool32 const &>
21955 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures21956       reflect() const VULKAN_HPP_NOEXCEPT
21957     {
21958       return std::tie( robustBufferAccess,
21959                        fullDrawIndexUint32,
21960                        imageCubeArray,
21961                        independentBlend,
21962                        geometryShader,
21963                        tessellationShader,
21964                        sampleRateShading,
21965                        dualSrcBlend,
21966                        logicOp,
21967                        multiDrawIndirect,
21968                        drawIndirectFirstInstance,
21969                        depthClamp,
21970                        depthBiasClamp,
21971                        fillModeNonSolid,
21972                        depthBounds,
21973                        wideLines,
21974                        largePoints,
21975                        alphaToOne,
21976                        multiViewport,
21977                        samplerAnisotropy,
21978                        textureCompressionETC2,
21979                        textureCompressionASTC_LDR,
21980                        textureCompressionBC,
21981                        occlusionQueryPrecise,
21982                        pipelineStatisticsQuery,
21983                        vertexPipelineStoresAndAtomics,
21984                        fragmentStoresAndAtomics,
21985                        shaderTessellationAndGeometryPointSize,
21986                        shaderImageGatherExtended,
21987                        shaderStorageImageExtendedFormats,
21988                        shaderStorageImageMultisample,
21989                        shaderStorageImageReadWithoutFormat,
21990                        shaderStorageImageWriteWithoutFormat,
21991                        shaderUniformBufferArrayDynamicIndexing,
21992                        shaderSampledImageArrayDynamicIndexing,
21993                        shaderStorageBufferArrayDynamicIndexing,
21994                        shaderStorageImageArrayDynamicIndexing,
21995                        shaderClipDistance,
21996                        shaderCullDistance,
21997                        shaderFloat64,
21998                        shaderInt64,
21999                        shaderInt16,
22000                        shaderResourceResidency,
22001                        shaderResourceMinLod,
22002                        sparseBinding,
22003                        sparseResidencyBuffer,
22004                        sparseResidencyImage2D,
22005                        sparseResidencyImage3D,
22006                        sparseResidency2Samples,
22007                        sparseResidency4Samples,
22008                        sparseResidency8Samples,
22009                        sparseResidency16Samples,
22010                        sparseResidencyAliased,
22011                        variableMultisampleRate,
22012                        inheritedQueries );
22013     }
22014 
22015 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
22016     auto operator<=>( PhysicalDeviceFeatures const & ) const = default;
22017 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures22018     bool operator==( PhysicalDeviceFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
22019     {
22020       return this->reflect() == rhs.reflect();
22021     }
22022 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures22023     bool operator!=( PhysicalDeviceFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
22024     {
22025       return this->reflect() != rhs.reflect();
22026     }
22027 #endif
22028 
22029   public:
22030     VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccess                      = {};
22031     VULKAN_HPP_NAMESPACE::Bool32 fullDrawIndexUint32                     = {};
22032     VULKAN_HPP_NAMESPACE::Bool32 imageCubeArray                          = {};
22033     VULKAN_HPP_NAMESPACE::Bool32 independentBlend                        = {};
22034     VULKAN_HPP_NAMESPACE::Bool32 geometryShader                          = {};
22035     VULKAN_HPP_NAMESPACE::Bool32 tessellationShader                      = {};
22036     VULKAN_HPP_NAMESPACE::Bool32 sampleRateShading                       = {};
22037     VULKAN_HPP_NAMESPACE::Bool32 dualSrcBlend                            = {};
22038     VULKAN_HPP_NAMESPACE::Bool32 logicOp                                 = {};
22039     VULKAN_HPP_NAMESPACE::Bool32 multiDrawIndirect                       = {};
22040     VULKAN_HPP_NAMESPACE::Bool32 drawIndirectFirstInstance               = {};
22041     VULKAN_HPP_NAMESPACE::Bool32 depthClamp                              = {};
22042     VULKAN_HPP_NAMESPACE::Bool32 depthBiasClamp                          = {};
22043     VULKAN_HPP_NAMESPACE::Bool32 fillModeNonSolid                        = {};
22044     VULKAN_HPP_NAMESPACE::Bool32 depthBounds                             = {};
22045     VULKAN_HPP_NAMESPACE::Bool32 wideLines                               = {};
22046     VULKAN_HPP_NAMESPACE::Bool32 largePoints                             = {};
22047     VULKAN_HPP_NAMESPACE::Bool32 alphaToOne                              = {};
22048     VULKAN_HPP_NAMESPACE::Bool32 multiViewport                           = {};
22049     VULKAN_HPP_NAMESPACE::Bool32 samplerAnisotropy                       = {};
22050     VULKAN_HPP_NAMESPACE::Bool32 textureCompressionETC2                  = {};
22051     VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_LDR              = {};
22052     VULKAN_HPP_NAMESPACE::Bool32 textureCompressionBC                    = {};
22053     VULKAN_HPP_NAMESPACE::Bool32 occlusionQueryPrecise                   = {};
22054     VULKAN_HPP_NAMESPACE::Bool32 pipelineStatisticsQuery                 = {};
22055     VULKAN_HPP_NAMESPACE::Bool32 vertexPipelineStoresAndAtomics          = {};
22056     VULKAN_HPP_NAMESPACE::Bool32 fragmentStoresAndAtomics                = {};
22057     VULKAN_HPP_NAMESPACE::Bool32 shaderTessellationAndGeometryPointSize  = {};
22058     VULKAN_HPP_NAMESPACE::Bool32 shaderImageGatherExtended               = {};
22059     VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageExtendedFormats       = {};
22060     VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageMultisample           = {};
22061     VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageReadWithoutFormat     = {};
22062     VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageWriteWithoutFormat    = {};
22063     VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayDynamicIndexing = {};
22064     VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayDynamicIndexing  = {};
22065     VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayDynamicIndexing = {};
22066     VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayDynamicIndexing  = {};
22067     VULKAN_HPP_NAMESPACE::Bool32 shaderClipDistance                      = {};
22068     VULKAN_HPP_NAMESPACE::Bool32 shaderCullDistance                      = {};
22069     VULKAN_HPP_NAMESPACE::Bool32 shaderFloat64                           = {};
22070     VULKAN_HPP_NAMESPACE::Bool32 shaderInt64                             = {};
22071     VULKAN_HPP_NAMESPACE::Bool32 shaderInt16                             = {};
22072     VULKAN_HPP_NAMESPACE::Bool32 shaderResourceResidency                 = {};
22073     VULKAN_HPP_NAMESPACE::Bool32 shaderResourceMinLod                    = {};
22074     VULKAN_HPP_NAMESPACE::Bool32 sparseBinding                           = {};
22075     VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyBuffer                   = {};
22076     VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyImage2D                  = {};
22077     VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyImage3D                  = {};
22078     VULKAN_HPP_NAMESPACE::Bool32 sparseResidency2Samples                 = {};
22079     VULKAN_HPP_NAMESPACE::Bool32 sparseResidency4Samples                 = {};
22080     VULKAN_HPP_NAMESPACE::Bool32 sparseResidency8Samples                 = {};
22081     VULKAN_HPP_NAMESPACE::Bool32 sparseResidency16Samples                = {};
22082     VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyAliased                  = {};
22083     VULKAN_HPP_NAMESPACE::Bool32 variableMultisampleRate                 = {};
22084     VULKAN_HPP_NAMESPACE::Bool32 inheritedQueries                        = {};
22085   };
22086   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures ) ==
22087                               sizeof( VkPhysicalDeviceFeatures ),
22088                             "struct and wrapper have different size!" );
22089   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures>::value,
22090                             "struct wrapper is not a standard layout!" );
22091   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures>::value,
22092                             "PhysicalDeviceFeatures is not nothrow_move_constructible!" );
22093 
22094   struct DeviceCreateInfo
22095   {
22096     using NativeType = VkDeviceCreateInfo;
22097 
22098     static const bool                                  allowDuplicate = false;
22099     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceCreateInfo;
22100 
22101 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceCreateInfoVULKAN_HPP_NAMESPACE::DeviceCreateInfo22102     VULKAN_HPP_CONSTEXPR DeviceCreateInfo( VULKAN_HPP_NAMESPACE::DeviceCreateFlags flags_                         = {},
22103                                            uint32_t                                queueCreateInfoCount_          = {},
22104                                            const VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo * pQueueCreateInfos_ = {},
22105                                            uint32_t                                            enabledLayerCount_ = {},
22106                                            const char * const * ppEnabledLayerNames_                              = {},
22107                                            uint32_t             enabledExtensionCount_                            = {},
22108                                            const char * const * ppEnabledExtensionNames_                          = {},
22109                                            const VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures * pEnabledFeatures_ = {} )
22110       VULKAN_HPP_NOEXCEPT
22111       : flags( flags_ )
22112       , queueCreateInfoCount( queueCreateInfoCount_ )
22113       , pQueueCreateInfos( pQueueCreateInfos_ )
22114       , enabledLayerCount( enabledLayerCount_ )
22115       , ppEnabledLayerNames( ppEnabledLayerNames_ )
22116       , enabledExtensionCount( enabledExtensionCount_ )
22117       , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
22118       , pEnabledFeatures( pEnabledFeatures_ )
22119     {}
22120 
22121     VULKAN_HPP_CONSTEXPR DeviceCreateInfo( DeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22122 
DeviceCreateInfoVULKAN_HPP_NAMESPACE::DeviceCreateInfo22123     DeviceCreateInfo( VkDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
22124       : DeviceCreateInfo( *reinterpret_cast<DeviceCreateInfo const *>( &rhs ) )
22125     {}
22126 
22127 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DeviceCreateInfoVULKAN_HPP_NAMESPACE::DeviceCreateInfo22128     DeviceCreateInfo(
22129       VULKAN_HPP_NAMESPACE::DeviceCreateFlags flags_,
22130       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo> const &
22131                                                                                 queueCreateInfos_,
22132       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const char * const> const & pEnabledLayerNames_     = {},
22133       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const char * const> const & pEnabledExtensionNames_ = {},
22134       const VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures *                      pEnabledFeatures_       = {} )
22135       : flags( flags_ )
22136       , queueCreateInfoCount( static_cast<uint32_t>( queueCreateInfos_.size() ) )
22137       , pQueueCreateInfos( queueCreateInfos_.data() )
22138       , enabledLayerCount( static_cast<uint32_t>( pEnabledLayerNames_.size() ) )
22139       , ppEnabledLayerNames( pEnabledLayerNames_.data() )
22140       , enabledExtensionCount( static_cast<uint32_t>( pEnabledExtensionNames_.size() ) )
22141       , ppEnabledExtensionNames( pEnabledExtensionNames_.data() )
22142       , pEnabledFeatures( pEnabledFeatures_ )
22143     {}
22144 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22145 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
22146 
22147     DeviceCreateInfo & operator=( DeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22148 
operator =VULKAN_HPP_NAMESPACE::DeviceCreateInfo22149     DeviceCreateInfo & operator=( VkDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
22150     {
22151       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceCreateInfo const *>( &rhs );
22152       return *this;
22153     }
22154 
22155 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceCreateInfo22156     VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
22157     {
22158       pNext = pNext_;
22159       return *this;
22160     }
22161 
22162     VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::DeviceCreateInfo22163                             setFlags( VULKAN_HPP_NAMESPACE::DeviceCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
22164     {
22165       flags = flags_;
22166       return *this;
22167     }
22168 
22169     VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo &
setQueueCreateInfoCountVULKAN_HPP_NAMESPACE::DeviceCreateInfo22170                             setQueueCreateInfoCount( uint32_t queueCreateInfoCount_ ) VULKAN_HPP_NOEXCEPT
22171     {
22172       queueCreateInfoCount = queueCreateInfoCount_;
22173       return *this;
22174     }
22175 
22176     VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo &
setPQueueCreateInfosVULKAN_HPP_NAMESPACE::DeviceCreateInfo22177       setPQueueCreateInfos( const VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo * pQueueCreateInfos_ ) VULKAN_HPP_NOEXCEPT
22178     {
22179       pQueueCreateInfos = pQueueCreateInfos_;
22180       return *this;
22181     }
22182 
22183 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setQueueCreateInfosVULKAN_HPP_NAMESPACE::DeviceCreateInfo22184     DeviceCreateInfo & setQueueCreateInfos(
22185       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo> const &
22186         queueCreateInfos_ ) VULKAN_HPP_NOEXCEPT
22187     {
22188       queueCreateInfoCount = static_cast<uint32_t>( queueCreateInfos_.size() );
22189       pQueueCreateInfos    = queueCreateInfos_.data();
22190       return *this;
22191     }
22192 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22193 
setEnabledLayerCountVULKAN_HPP_NAMESPACE::DeviceCreateInfo22194     VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setEnabledLayerCount( uint32_t enabledLayerCount_ ) VULKAN_HPP_NOEXCEPT
22195     {
22196       enabledLayerCount = enabledLayerCount_;
22197       return *this;
22198     }
22199 
22200     VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo &
setPpEnabledLayerNamesVULKAN_HPP_NAMESPACE::DeviceCreateInfo22201                             setPpEnabledLayerNames( const char * const * ppEnabledLayerNames_ ) VULKAN_HPP_NOEXCEPT
22202     {
22203       ppEnabledLayerNames = ppEnabledLayerNames_;
22204       return *this;
22205     }
22206 
22207 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPEnabledLayerNamesVULKAN_HPP_NAMESPACE::DeviceCreateInfo22208     DeviceCreateInfo & setPEnabledLayerNames( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const char * const> const &
22209                                                 pEnabledLayerNames_ ) VULKAN_HPP_NOEXCEPT
22210     {
22211       enabledLayerCount   = static_cast<uint32_t>( pEnabledLayerNames_.size() );
22212       ppEnabledLayerNames = pEnabledLayerNames_.data();
22213       return *this;
22214     }
22215 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22216 
22217     VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo &
setEnabledExtensionCountVULKAN_HPP_NAMESPACE::DeviceCreateInfo22218                             setEnabledExtensionCount( uint32_t enabledExtensionCount_ ) VULKAN_HPP_NOEXCEPT
22219     {
22220       enabledExtensionCount = enabledExtensionCount_;
22221       return *this;
22222     }
22223 
22224     VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo &
setPpEnabledExtensionNamesVULKAN_HPP_NAMESPACE::DeviceCreateInfo22225       setPpEnabledExtensionNames( const char * const * ppEnabledExtensionNames_ ) VULKAN_HPP_NOEXCEPT
22226     {
22227       ppEnabledExtensionNames = ppEnabledExtensionNames_;
22228       return *this;
22229     }
22230 
22231 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPEnabledExtensionNamesVULKAN_HPP_NAMESPACE::DeviceCreateInfo22232     DeviceCreateInfo & setPEnabledExtensionNames(
22233       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const char * const> const & pEnabledExtensionNames_ )
22234       VULKAN_HPP_NOEXCEPT
22235     {
22236       enabledExtensionCount   = static_cast<uint32_t>( pEnabledExtensionNames_.size() );
22237       ppEnabledExtensionNames = pEnabledExtensionNames_.data();
22238       return *this;
22239     }
22240 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22241 
22242     VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo &
setPEnabledFeaturesVULKAN_HPP_NAMESPACE::DeviceCreateInfo22243       setPEnabledFeatures( const VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures * pEnabledFeatures_ ) VULKAN_HPP_NOEXCEPT
22244     {
22245       pEnabledFeatures = pEnabledFeatures_;
22246       return *this;
22247     }
22248 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
22249 
operator VkDeviceCreateInfo const&VULKAN_HPP_NAMESPACE::DeviceCreateInfo22250     explicit operator VkDeviceCreateInfo const &() const VULKAN_HPP_NOEXCEPT
22251     {
22252       return *reinterpret_cast<const VkDeviceCreateInfo *>( this );
22253     }
22254 
operator VkDeviceCreateInfo&VULKAN_HPP_NAMESPACE::DeviceCreateInfo22255     explicit operator VkDeviceCreateInfo &() VULKAN_HPP_NOEXCEPT
22256     {
22257       return *reinterpret_cast<VkDeviceCreateInfo *>( this );
22258     }
22259 
22260 #if 14 <= VULKAN_HPP_CPP_VERSION
22261     auto
22262 #else
22263     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
22264                const void * const &,
22265                VULKAN_HPP_NAMESPACE::DeviceCreateFlags const &,
22266                uint32_t const &,
22267                const VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo * const &,
22268                uint32_t const &,
22269                const char * const * const &,
22270                uint32_t const &,
22271                const char * const * const &,
22272                const VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures * const &>
22273 #endif
reflectVULKAN_HPP_NAMESPACE::DeviceCreateInfo22274       reflect() const VULKAN_HPP_NOEXCEPT
22275     {
22276       return std::tie( sType,
22277                        pNext,
22278                        flags,
22279                        queueCreateInfoCount,
22280                        pQueueCreateInfos,
22281                        enabledLayerCount,
22282                        ppEnabledLayerNames,
22283                        enabledExtensionCount,
22284                        ppEnabledExtensionNames,
22285                        pEnabledFeatures );
22286     }
22287 
22288 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
22289     auto operator<=>( DeviceCreateInfo const & ) const = default;
22290 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceCreateInfo22291     bool operator==( DeviceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
22292     {
22293       return this->reflect() == rhs.reflect();
22294     }
22295 
operator !=VULKAN_HPP_NAMESPACE::DeviceCreateInfo22296     bool operator!=( DeviceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
22297     {
22298       return this->reflect() != rhs.reflect();
22299     }
22300 #endif
22301 
22302   public:
22303     VULKAN_HPP_NAMESPACE::StructureType                  sType                   = StructureType::eDeviceCreateInfo;
22304     const void *                                         pNext                   = {};
22305     VULKAN_HPP_NAMESPACE::DeviceCreateFlags              flags                   = {};
22306     uint32_t                                             queueCreateInfoCount    = {};
22307     const VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo *  pQueueCreateInfos       = {};
22308     uint32_t                                             enabledLayerCount       = {};
22309     const char * const *                                 ppEnabledLayerNames     = {};
22310     uint32_t                                             enabledExtensionCount   = {};
22311     const char * const *                                 ppEnabledExtensionNames = {};
22312     const VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures * pEnabledFeatures        = {};
22313   };
22314   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceCreateInfo ) == sizeof( VkDeviceCreateInfo ),
22315                             "struct and wrapper have different size!" );
22316   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DeviceCreateInfo>::value,
22317                             "struct wrapper is not a standard layout!" );
22318   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DeviceCreateInfo>::value,
22319                             "DeviceCreateInfo is not nothrow_move_constructible!" );
22320 
22321   template <>
22322   struct CppType<StructureType, StructureType::eDeviceCreateInfo>
22323   {
22324     using Type = DeviceCreateInfo;
22325   };
22326 
22327   struct DeviceDeviceMemoryReportCreateInfoEXT
22328   {
22329     using NativeType = VkDeviceDeviceMemoryReportCreateInfoEXT;
22330 
22331     static const bool                                  allowDuplicate = true;
22332     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
22333       StructureType::eDeviceDeviceMemoryReportCreateInfoEXT;
22334 
22335 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
22336     VULKAN_HPP_CONSTEXPR
DeviceDeviceMemoryReportCreateInfoEXTVULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT22337       DeviceDeviceMemoryReportCreateInfoEXT( VULKAN_HPP_NAMESPACE::DeviceMemoryReportFlagsEXT flags_           = {},
22338                                              PFN_vkDeviceMemoryReportCallbackEXT              pfnUserCallback_ = {},
22339                                              void * pUserData_ = {} ) VULKAN_HPP_NOEXCEPT
22340       : flags( flags_ )
22341       , pfnUserCallback( pfnUserCallback_ )
22342       , pUserData( pUserData_ )
22343     {}
22344 
22345     VULKAN_HPP_CONSTEXPR DeviceDeviceMemoryReportCreateInfoEXT( DeviceDeviceMemoryReportCreateInfoEXT const & rhs )
22346       VULKAN_HPP_NOEXCEPT = default;
22347 
DeviceDeviceMemoryReportCreateInfoEXTVULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT22348     DeviceDeviceMemoryReportCreateInfoEXT( VkDeviceDeviceMemoryReportCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
22349       : DeviceDeviceMemoryReportCreateInfoEXT(
22350           *reinterpret_cast<DeviceDeviceMemoryReportCreateInfoEXT const *>( &rhs ) )
22351     {}
22352 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
22353 
22354     DeviceDeviceMemoryReportCreateInfoEXT &
22355       operator=( DeviceDeviceMemoryReportCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22356 
22357     DeviceDeviceMemoryReportCreateInfoEXT &
operator =VULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT22358       operator=( VkDeviceDeviceMemoryReportCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
22359     {
22360       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT const *>( &rhs );
22361       return *this;
22362     }
22363 
22364 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT22365     VULKAN_HPP_CONSTEXPR_14 DeviceDeviceMemoryReportCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
22366     {
22367       pNext = pNext_;
22368       return *this;
22369     }
22370 
22371     VULKAN_HPP_CONSTEXPR_14 DeviceDeviceMemoryReportCreateInfoEXT &
setFlagsVULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT22372                             setFlags( VULKAN_HPP_NAMESPACE::DeviceMemoryReportFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
22373     {
22374       flags = flags_;
22375       return *this;
22376     }
22377 
22378     VULKAN_HPP_CONSTEXPR_14 DeviceDeviceMemoryReportCreateInfoEXT &
setPfnUserCallbackVULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT22379       setPfnUserCallback( PFN_vkDeviceMemoryReportCallbackEXT pfnUserCallback_ ) VULKAN_HPP_NOEXCEPT
22380     {
22381       pfnUserCallback = pfnUserCallback_;
22382       return *this;
22383     }
22384 
22385     VULKAN_HPP_CONSTEXPR_14 DeviceDeviceMemoryReportCreateInfoEXT &
setPUserDataVULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT22386                             setPUserData( void * pUserData_ ) VULKAN_HPP_NOEXCEPT
22387     {
22388       pUserData = pUserData_;
22389       return *this;
22390     }
22391 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
22392 
operator VkDeviceDeviceMemoryReportCreateInfoEXT const&VULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT22393     explicit operator VkDeviceDeviceMemoryReportCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
22394     {
22395       return *reinterpret_cast<const VkDeviceDeviceMemoryReportCreateInfoEXT *>( this );
22396     }
22397 
operator VkDeviceDeviceMemoryReportCreateInfoEXT&VULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT22398     explicit operator VkDeviceDeviceMemoryReportCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
22399     {
22400       return *reinterpret_cast<VkDeviceDeviceMemoryReportCreateInfoEXT *>( this );
22401     }
22402 
22403 #if 14 <= VULKAN_HPP_CPP_VERSION
22404     auto
22405 #else
22406     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
22407                const void * const &,
22408                VULKAN_HPP_NAMESPACE::DeviceMemoryReportFlagsEXT const &,
22409                PFN_vkDeviceMemoryReportCallbackEXT const &,
22410                void * const &>
22411 #endif
reflectVULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT22412       reflect() const VULKAN_HPP_NOEXCEPT
22413     {
22414       return std::tie( sType, pNext, flags, pfnUserCallback, pUserData );
22415     }
22416 
22417 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
22418     auto operator<=>( DeviceDeviceMemoryReportCreateInfoEXT const & ) const = default;
22419 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT22420     bool operator==( DeviceDeviceMemoryReportCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
22421     {
22422       return this->reflect() == rhs.reflect();
22423     }
22424 
operator !=VULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT22425     bool operator!=( DeviceDeviceMemoryReportCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
22426     {
22427       return this->reflect() != rhs.reflect();
22428     }
22429 #endif
22430 
22431   public:
22432     VULKAN_HPP_NAMESPACE::StructureType              sType = StructureType::eDeviceDeviceMemoryReportCreateInfoEXT;
22433     const void *                                     pNext = {};
22434     VULKAN_HPP_NAMESPACE::DeviceMemoryReportFlagsEXT flags = {};
22435     PFN_vkDeviceMemoryReportCallbackEXT              pfnUserCallback = {};
22436     void *                                           pUserData       = {};
22437   };
22438   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT ) ==
22439                               sizeof( VkDeviceDeviceMemoryReportCreateInfoEXT ),
22440                             "struct and wrapper have different size!" );
22441   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT>::value,
22442                             "struct wrapper is not a standard layout!" );
22443   VULKAN_HPP_STATIC_ASSERT(
22444     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT>::value,
22445     "DeviceDeviceMemoryReportCreateInfoEXT is not nothrow_move_constructible!" );
22446 
22447   template <>
22448   struct CppType<StructureType, StructureType::eDeviceDeviceMemoryReportCreateInfoEXT>
22449   {
22450     using Type = DeviceDeviceMemoryReportCreateInfoEXT;
22451   };
22452 
22453   struct DeviceDiagnosticsConfigCreateInfoNV
22454   {
22455     using NativeType = VkDeviceDiagnosticsConfigCreateInfoNV;
22456 
22457     static const bool                                  allowDuplicate = false;
22458     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
22459       StructureType::eDeviceDiagnosticsConfigCreateInfoNV;
22460 
22461 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceDiagnosticsConfigCreateInfoNVVULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV22462     VULKAN_HPP_CONSTEXPR DeviceDiagnosticsConfigCreateInfoNV(
22463       VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigFlagsNV flags_ = {} ) VULKAN_HPP_NOEXCEPT : flags( flags_ )
22464     {}
22465 
22466     VULKAN_HPP_CONSTEXPR DeviceDiagnosticsConfigCreateInfoNV( DeviceDiagnosticsConfigCreateInfoNV const & rhs )
22467       VULKAN_HPP_NOEXCEPT = default;
22468 
DeviceDiagnosticsConfigCreateInfoNVVULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV22469     DeviceDiagnosticsConfigCreateInfoNV( VkDeviceDiagnosticsConfigCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
22470       : DeviceDiagnosticsConfigCreateInfoNV( *reinterpret_cast<DeviceDiagnosticsConfigCreateInfoNV const *>( &rhs ) )
22471     {}
22472 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
22473 
22474     DeviceDiagnosticsConfigCreateInfoNV &
22475       operator=( DeviceDiagnosticsConfigCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22476 
22477     DeviceDiagnosticsConfigCreateInfoNV &
operator =VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV22478       operator=( VkDeviceDiagnosticsConfigCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
22479     {
22480       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV const *>( &rhs );
22481       return *this;
22482     }
22483 
22484 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV22485     VULKAN_HPP_CONSTEXPR_14 DeviceDiagnosticsConfigCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
22486     {
22487       pNext = pNext_;
22488       return *this;
22489     }
22490 
22491     VULKAN_HPP_CONSTEXPR_14 DeviceDiagnosticsConfigCreateInfoNV &
setFlagsVULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV22492                             setFlags( VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT
22493     {
22494       flags = flags_;
22495       return *this;
22496     }
22497 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
22498 
operator VkDeviceDiagnosticsConfigCreateInfoNV const&VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV22499     explicit operator VkDeviceDiagnosticsConfigCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
22500     {
22501       return *reinterpret_cast<const VkDeviceDiagnosticsConfigCreateInfoNV *>( this );
22502     }
22503 
operator VkDeviceDiagnosticsConfigCreateInfoNV&VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV22504     explicit operator VkDeviceDiagnosticsConfigCreateInfoNV &() VULKAN_HPP_NOEXCEPT
22505     {
22506       return *reinterpret_cast<VkDeviceDiagnosticsConfigCreateInfoNV *>( this );
22507     }
22508 
22509 #if 14 <= VULKAN_HPP_CPP_VERSION
22510     auto
22511 #else
22512     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
22513                const void * const &,
22514                VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigFlagsNV const &>
22515 #endif
reflectVULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV22516       reflect() const VULKAN_HPP_NOEXCEPT
22517     {
22518       return std::tie( sType, pNext, flags );
22519     }
22520 
22521 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
22522     auto operator<=>( DeviceDiagnosticsConfigCreateInfoNV const & ) const = default;
22523 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV22524     bool operator==( DeviceDiagnosticsConfigCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
22525     {
22526       return this->reflect() == rhs.reflect();
22527     }
22528 
operator !=VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV22529     bool operator!=( DeviceDiagnosticsConfigCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
22530     {
22531       return this->reflect() != rhs.reflect();
22532     }
22533 #endif
22534 
22535   public:
22536     VULKAN_HPP_NAMESPACE::StructureType                  sType = StructureType::eDeviceDiagnosticsConfigCreateInfoNV;
22537     const void *                                         pNext = {};
22538     VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigFlagsNV flags = {};
22539   };
22540   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV ) ==
22541                               sizeof( VkDeviceDiagnosticsConfigCreateInfoNV ),
22542                             "struct and wrapper have different size!" );
22543   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV>::value,
22544                             "struct wrapper is not a standard layout!" );
22545   VULKAN_HPP_STATIC_ASSERT(
22546     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV>::value,
22547     "DeviceDiagnosticsConfigCreateInfoNV is not nothrow_move_constructible!" );
22548 
22549   template <>
22550   struct CppType<StructureType, StructureType::eDeviceDiagnosticsConfigCreateInfoNV>
22551   {
22552     using Type = DeviceDiagnosticsConfigCreateInfoNV;
22553   };
22554 
22555   struct DeviceEventInfoEXT
22556   {
22557     using NativeType = VkDeviceEventInfoEXT;
22558 
22559     static const bool                                  allowDuplicate = false;
22560     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceEventInfoEXT;
22561 
22562 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
22563     VULKAN_HPP_CONSTEXPR
DeviceEventInfoEXTVULKAN_HPP_NAMESPACE::DeviceEventInfoEXT22564       DeviceEventInfoEXT( VULKAN_HPP_NAMESPACE::DeviceEventTypeEXT deviceEvent_ =
22565                             VULKAN_HPP_NAMESPACE::DeviceEventTypeEXT::eDisplayHotplug ) VULKAN_HPP_NOEXCEPT
22566       : deviceEvent( deviceEvent_ )
22567     {}
22568 
22569     VULKAN_HPP_CONSTEXPR DeviceEventInfoEXT( DeviceEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22570 
DeviceEventInfoEXTVULKAN_HPP_NAMESPACE::DeviceEventInfoEXT22571     DeviceEventInfoEXT( VkDeviceEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
22572       : DeviceEventInfoEXT( *reinterpret_cast<DeviceEventInfoEXT const *>( &rhs ) )
22573     {}
22574 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
22575 
22576     DeviceEventInfoEXT & operator=( DeviceEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22577 
operator =VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT22578     DeviceEventInfoEXT & operator=( VkDeviceEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
22579     {
22580       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT const *>( &rhs );
22581       return *this;
22582     }
22583 
22584 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceEventInfoEXT22585     VULKAN_HPP_CONSTEXPR_14 DeviceEventInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
22586     {
22587       pNext = pNext_;
22588       return *this;
22589     }
22590 
22591     VULKAN_HPP_CONSTEXPR_14 DeviceEventInfoEXT &
setDeviceEventVULKAN_HPP_NAMESPACE::DeviceEventInfoEXT22592                             setDeviceEvent( VULKAN_HPP_NAMESPACE::DeviceEventTypeEXT deviceEvent_ ) VULKAN_HPP_NOEXCEPT
22593     {
22594       deviceEvent = deviceEvent_;
22595       return *this;
22596     }
22597 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
22598 
operator VkDeviceEventInfoEXT const&VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT22599     explicit operator VkDeviceEventInfoEXT const &() const VULKAN_HPP_NOEXCEPT
22600     {
22601       return *reinterpret_cast<const VkDeviceEventInfoEXT *>( this );
22602     }
22603 
operator VkDeviceEventInfoEXT&VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT22604     explicit operator VkDeviceEventInfoEXT &() VULKAN_HPP_NOEXCEPT
22605     {
22606       return *reinterpret_cast<VkDeviceEventInfoEXT *>( this );
22607     }
22608 
22609 #if 14 <= VULKAN_HPP_CPP_VERSION
22610     auto
22611 #else
22612     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
22613                const void * const &,
22614                VULKAN_HPP_NAMESPACE::DeviceEventTypeEXT const &>
22615 #endif
reflectVULKAN_HPP_NAMESPACE::DeviceEventInfoEXT22616       reflect() const VULKAN_HPP_NOEXCEPT
22617     {
22618       return std::tie( sType, pNext, deviceEvent );
22619     }
22620 
22621 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
22622     auto operator<=>( DeviceEventInfoEXT const & ) const = default;
22623 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT22624     bool operator==( DeviceEventInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
22625     {
22626       return this->reflect() == rhs.reflect();
22627     }
22628 
operator !=VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT22629     bool operator!=( DeviceEventInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
22630     {
22631       return this->reflect() != rhs.reflect();
22632     }
22633 #endif
22634 
22635   public:
22636     VULKAN_HPP_NAMESPACE::StructureType      sType       = StructureType::eDeviceEventInfoEXT;
22637     const void *                             pNext       = {};
22638     VULKAN_HPP_NAMESPACE::DeviceEventTypeEXT deviceEvent = VULKAN_HPP_NAMESPACE::DeviceEventTypeEXT::eDisplayHotplug;
22639   };
22640   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT ) == sizeof( VkDeviceEventInfoEXT ),
22641                             "struct and wrapper have different size!" );
22642   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT>::value,
22643                             "struct wrapper is not a standard layout!" );
22644   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT>::value,
22645                             "DeviceEventInfoEXT is not nothrow_move_constructible!" );
22646 
22647   template <>
22648   struct CppType<StructureType, StructureType::eDeviceEventInfoEXT>
22649   {
22650     using Type = DeviceEventInfoEXT;
22651   };
22652 
22653   struct DeviceGroupBindSparseInfo
22654   {
22655     using NativeType = VkDeviceGroupBindSparseInfo;
22656 
22657     static const bool                                  allowDuplicate = false;
22658     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceGroupBindSparseInfo;
22659 
22660 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceGroupBindSparseInfoVULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo22661     VULKAN_HPP_CONSTEXPR DeviceGroupBindSparseInfo( uint32_t resourceDeviceIndex_ = {},
22662                                                     uint32_t memoryDeviceIndex_   = {} ) VULKAN_HPP_NOEXCEPT
22663       : resourceDeviceIndex( resourceDeviceIndex_ )
22664       , memoryDeviceIndex( memoryDeviceIndex_ )
22665     {}
22666 
22667     VULKAN_HPP_CONSTEXPR
22668       DeviceGroupBindSparseInfo( DeviceGroupBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22669 
DeviceGroupBindSparseInfoVULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo22670     DeviceGroupBindSparseInfo( VkDeviceGroupBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT
22671       : DeviceGroupBindSparseInfo( *reinterpret_cast<DeviceGroupBindSparseInfo const *>( &rhs ) )
22672     {}
22673 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
22674 
22675     DeviceGroupBindSparseInfo & operator=( DeviceGroupBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22676 
operator =VULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo22677     DeviceGroupBindSparseInfo & operator=( VkDeviceGroupBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT
22678     {
22679       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo const *>( &rhs );
22680       return *this;
22681     }
22682 
22683 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo22684     VULKAN_HPP_CONSTEXPR_14 DeviceGroupBindSparseInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
22685     {
22686       pNext = pNext_;
22687       return *this;
22688     }
22689 
22690     VULKAN_HPP_CONSTEXPR_14 DeviceGroupBindSparseInfo &
setResourceDeviceIndexVULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo22691                             setResourceDeviceIndex( uint32_t resourceDeviceIndex_ ) VULKAN_HPP_NOEXCEPT
22692     {
22693       resourceDeviceIndex = resourceDeviceIndex_;
22694       return *this;
22695     }
22696 
22697     VULKAN_HPP_CONSTEXPR_14 DeviceGroupBindSparseInfo &
setMemoryDeviceIndexVULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo22698                             setMemoryDeviceIndex( uint32_t memoryDeviceIndex_ ) VULKAN_HPP_NOEXCEPT
22699     {
22700       memoryDeviceIndex = memoryDeviceIndex_;
22701       return *this;
22702     }
22703 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
22704 
operator VkDeviceGroupBindSparseInfo const&VULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo22705     explicit operator VkDeviceGroupBindSparseInfo const &() const VULKAN_HPP_NOEXCEPT
22706     {
22707       return *reinterpret_cast<const VkDeviceGroupBindSparseInfo *>( this );
22708     }
22709 
operator VkDeviceGroupBindSparseInfo&VULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo22710     explicit operator VkDeviceGroupBindSparseInfo &() VULKAN_HPP_NOEXCEPT
22711     {
22712       return *reinterpret_cast<VkDeviceGroupBindSparseInfo *>( this );
22713     }
22714 
22715 #if 14 <= VULKAN_HPP_CPP_VERSION
22716     auto
22717 #else
22718     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, uint32_t const &>
22719 #endif
reflectVULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo22720       reflect() const VULKAN_HPP_NOEXCEPT
22721     {
22722       return std::tie( sType, pNext, resourceDeviceIndex, memoryDeviceIndex );
22723     }
22724 
22725 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
22726     auto operator<=>( DeviceGroupBindSparseInfo const & ) const = default;
22727 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo22728     bool operator==( DeviceGroupBindSparseInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
22729     {
22730       return this->reflect() == rhs.reflect();
22731     }
22732 
operator !=VULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo22733     bool operator!=( DeviceGroupBindSparseInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
22734     {
22735       return this->reflect() != rhs.reflect();
22736     }
22737 #endif
22738 
22739   public:
22740     VULKAN_HPP_NAMESPACE::StructureType sType               = StructureType::eDeviceGroupBindSparseInfo;
22741     const void *                        pNext               = {};
22742     uint32_t                            resourceDeviceIndex = {};
22743     uint32_t                            memoryDeviceIndex   = {};
22744   };
22745   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo ) ==
22746                               sizeof( VkDeviceGroupBindSparseInfo ),
22747                             "struct and wrapper have different size!" );
22748   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo>::value,
22749                             "struct wrapper is not a standard layout!" );
22750   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo>::value,
22751                             "DeviceGroupBindSparseInfo is not nothrow_move_constructible!" );
22752 
22753   template <>
22754   struct CppType<StructureType, StructureType::eDeviceGroupBindSparseInfo>
22755   {
22756     using Type = DeviceGroupBindSparseInfo;
22757   };
22758   using DeviceGroupBindSparseInfoKHR = DeviceGroupBindSparseInfo;
22759 
22760   struct DeviceGroupCommandBufferBeginInfo
22761   {
22762     using NativeType = VkDeviceGroupCommandBufferBeginInfo;
22763 
22764     static const bool                                  allowDuplicate = false;
22765     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
22766       StructureType::eDeviceGroupCommandBufferBeginInfo;
22767 
22768 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceGroupCommandBufferBeginInfoVULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo22769     VULKAN_HPP_CONSTEXPR DeviceGroupCommandBufferBeginInfo( uint32_t deviceMask_ = {} ) VULKAN_HPP_NOEXCEPT
22770       : deviceMask( deviceMask_ )
22771     {}
22772 
22773     VULKAN_HPP_CONSTEXPR
22774       DeviceGroupCommandBufferBeginInfo( DeviceGroupCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22775 
DeviceGroupCommandBufferBeginInfoVULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo22776     DeviceGroupCommandBufferBeginInfo( VkDeviceGroupCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
22777       : DeviceGroupCommandBufferBeginInfo( *reinterpret_cast<DeviceGroupCommandBufferBeginInfo const *>( &rhs ) )
22778     {}
22779 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
22780 
22781     DeviceGroupCommandBufferBeginInfo &
22782       operator=( DeviceGroupCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22783 
operator =VULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo22784     DeviceGroupCommandBufferBeginInfo & operator=( VkDeviceGroupCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
22785     {
22786       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo const *>( &rhs );
22787       return *this;
22788     }
22789 
22790 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo22791     VULKAN_HPP_CONSTEXPR_14 DeviceGroupCommandBufferBeginInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
22792     {
22793       pNext = pNext_;
22794       return *this;
22795     }
22796 
22797     VULKAN_HPP_CONSTEXPR_14 DeviceGroupCommandBufferBeginInfo &
setDeviceMaskVULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo22798                             setDeviceMask( uint32_t deviceMask_ ) VULKAN_HPP_NOEXCEPT
22799     {
22800       deviceMask = deviceMask_;
22801       return *this;
22802     }
22803 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
22804 
operator VkDeviceGroupCommandBufferBeginInfo const&VULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo22805     explicit operator VkDeviceGroupCommandBufferBeginInfo const &() const VULKAN_HPP_NOEXCEPT
22806     {
22807       return *reinterpret_cast<const VkDeviceGroupCommandBufferBeginInfo *>( this );
22808     }
22809 
operator VkDeviceGroupCommandBufferBeginInfo&VULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo22810     explicit operator VkDeviceGroupCommandBufferBeginInfo &() VULKAN_HPP_NOEXCEPT
22811     {
22812       return *reinterpret_cast<VkDeviceGroupCommandBufferBeginInfo *>( this );
22813     }
22814 
22815 #if 14 <= VULKAN_HPP_CPP_VERSION
22816     auto
22817 #else
22818     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &>
22819 #endif
reflectVULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo22820       reflect() const VULKAN_HPP_NOEXCEPT
22821     {
22822       return std::tie( sType, pNext, deviceMask );
22823     }
22824 
22825 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
22826     auto operator<=>( DeviceGroupCommandBufferBeginInfo const & ) const = default;
22827 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo22828     bool operator==( DeviceGroupCommandBufferBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
22829     {
22830       return this->reflect() == rhs.reflect();
22831     }
22832 
operator !=VULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo22833     bool operator!=( DeviceGroupCommandBufferBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
22834     {
22835       return this->reflect() != rhs.reflect();
22836     }
22837 #endif
22838 
22839   public:
22840     VULKAN_HPP_NAMESPACE::StructureType sType      = StructureType::eDeviceGroupCommandBufferBeginInfo;
22841     const void *                        pNext      = {};
22842     uint32_t                            deviceMask = {};
22843   };
22844   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo ) ==
22845                               sizeof( VkDeviceGroupCommandBufferBeginInfo ),
22846                             "struct and wrapper have different size!" );
22847   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo>::value,
22848                             "struct wrapper is not a standard layout!" );
22849   VULKAN_HPP_STATIC_ASSERT(
22850     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo>::value,
22851     "DeviceGroupCommandBufferBeginInfo is not nothrow_move_constructible!" );
22852 
22853   template <>
22854   struct CppType<StructureType, StructureType::eDeviceGroupCommandBufferBeginInfo>
22855   {
22856     using Type = DeviceGroupCommandBufferBeginInfo;
22857   };
22858   using DeviceGroupCommandBufferBeginInfoKHR = DeviceGroupCommandBufferBeginInfo;
22859 
22860   struct DeviceGroupDeviceCreateInfo
22861   {
22862     using NativeType = VkDeviceGroupDeviceCreateInfo;
22863 
22864     static const bool                                  allowDuplicate = false;
22865     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceGroupDeviceCreateInfo;
22866 
22867 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceGroupDeviceCreateInfoVULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo22868     VULKAN_HPP_CONSTEXPR DeviceGroupDeviceCreateInfo(
22869       uint32_t                                     physicalDeviceCount_ = {},
22870       const VULKAN_HPP_NAMESPACE::PhysicalDevice * pPhysicalDevices_    = {} ) VULKAN_HPP_NOEXCEPT
22871       : physicalDeviceCount( physicalDeviceCount_ )
22872       , pPhysicalDevices( pPhysicalDevices_ )
22873     {}
22874 
22875     VULKAN_HPP_CONSTEXPR
22876       DeviceGroupDeviceCreateInfo( DeviceGroupDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22877 
DeviceGroupDeviceCreateInfoVULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo22878     DeviceGroupDeviceCreateInfo( VkDeviceGroupDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
22879       : DeviceGroupDeviceCreateInfo( *reinterpret_cast<DeviceGroupDeviceCreateInfo const *>( &rhs ) )
22880     {}
22881 
22882 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DeviceGroupDeviceCreateInfoVULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo22883     DeviceGroupDeviceCreateInfo(
22884       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PhysicalDevice> const &
22885         physicalDevices_ )
22886       : physicalDeviceCount( static_cast<uint32_t>( physicalDevices_.size() ) )
22887       , pPhysicalDevices( physicalDevices_.data() )
22888     {}
22889 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22890 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
22891 
22892     DeviceGroupDeviceCreateInfo & operator=( DeviceGroupDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22893 
operator =VULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo22894     DeviceGroupDeviceCreateInfo & operator=( VkDeviceGroupDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
22895     {
22896       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo const *>( &rhs );
22897       return *this;
22898     }
22899 
22900 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo22901     VULKAN_HPP_CONSTEXPR_14 DeviceGroupDeviceCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
22902     {
22903       pNext = pNext_;
22904       return *this;
22905     }
22906 
22907     VULKAN_HPP_CONSTEXPR_14 DeviceGroupDeviceCreateInfo &
setPhysicalDeviceCountVULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo22908                             setPhysicalDeviceCount( uint32_t physicalDeviceCount_ ) VULKAN_HPP_NOEXCEPT
22909     {
22910       physicalDeviceCount = physicalDeviceCount_;
22911       return *this;
22912     }
22913 
22914     VULKAN_HPP_CONSTEXPR_14 DeviceGroupDeviceCreateInfo &
setPPhysicalDevicesVULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo22915       setPPhysicalDevices( const VULKAN_HPP_NAMESPACE::PhysicalDevice * pPhysicalDevices_ ) VULKAN_HPP_NOEXCEPT
22916     {
22917       pPhysicalDevices = pPhysicalDevices_;
22918       return *this;
22919     }
22920 
22921 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPhysicalDevicesVULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo22922     DeviceGroupDeviceCreateInfo & setPhysicalDevices(
22923       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PhysicalDevice> const &
22924         physicalDevices_ ) VULKAN_HPP_NOEXCEPT
22925     {
22926       physicalDeviceCount = static_cast<uint32_t>( physicalDevices_.size() );
22927       pPhysicalDevices    = physicalDevices_.data();
22928       return *this;
22929     }
22930 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22931 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
22932 
operator VkDeviceGroupDeviceCreateInfo const&VULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo22933     explicit operator VkDeviceGroupDeviceCreateInfo const &() const VULKAN_HPP_NOEXCEPT
22934     {
22935       return *reinterpret_cast<const VkDeviceGroupDeviceCreateInfo *>( this );
22936     }
22937 
operator VkDeviceGroupDeviceCreateInfo&VULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo22938     explicit operator VkDeviceGroupDeviceCreateInfo &() VULKAN_HPP_NOEXCEPT
22939     {
22940       return *reinterpret_cast<VkDeviceGroupDeviceCreateInfo *>( this );
22941     }
22942 
22943 #if 14 <= VULKAN_HPP_CPP_VERSION
22944     auto
22945 #else
22946     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
22947                const void * const &,
22948                uint32_t const &,
22949                const VULKAN_HPP_NAMESPACE::PhysicalDevice * const &>
22950 #endif
reflectVULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo22951       reflect() const VULKAN_HPP_NOEXCEPT
22952     {
22953       return std::tie( sType, pNext, physicalDeviceCount, pPhysicalDevices );
22954     }
22955 
22956 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
22957     auto operator<=>( DeviceGroupDeviceCreateInfo const & ) const = default;
22958 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo22959     bool operator==( DeviceGroupDeviceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
22960     {
22961       return this->reflect() == rhs.reflect();
22962     }
22963 
operator !=VULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo22964     bool operator!=( DeviceGroupDeviceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
22965     {
22966       return this->reflect() != rhs.reflect();
22967     }
22968 #endif
22969 
22970   public:
22971     VULKAN_HPP_NAMESPACE::StructureType          sType               = StructureType::eDeviceGroupDeviceCreateInfo;
22972     const void *                                 pNext               = {};
22973     uint32_t                                     physicalDeviceCount = {};
22974     const VULKAN_HPP_NAMESPACE::PhysicalDevice * pPhysicalDevices    = {};
22975   };
22976   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo ) ==
22977                               sizeof( VkDeviceGroupDeviceCreateInfo ),
22978                             "struct and wrapper have different size!" );
22979   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo>::value,
22980                             "struct wrapper is not a standard layout!" );
22981   VULKAN_HPP_STATIC_ASSERT(
22982     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo>::value,
22983     "DeviceGroupDeviceCreateInfo is not nothrow_move_constructible!" );
22984 
22985   template <>
22986   struct CppType<StructureType, StructureType::eDeviceGroupDeviceCreateInfo>
22987   {
22988     using Type = DeviceGroupDeviceCreateInfo;
22989   };
22990   using DeviceGroupDeviceCreateInfoKHR = DeviceGroupDeviceCreateInfo;
22991 
22992   struct DeviceGroupPresentCapabilitiesKHR
22993   {
22994     using NativeType = VkDeviceGroupPresentCapabilitiesKHR;
22995 
22996     static const bool                                  allowDuplicate = false;
22997     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
22998       StructureType::eDeviceGroupPresentCapabilitiesKHR;
22999 
23000 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceGroupPresentCapabilitiesKHRVULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR23001     VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentCapabilitiesKHR(
23002       std::array<uint32_t, VK_MAX_DEVICE_GROUP_SIZE> const & presentMask_ = {},
23003       VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR   modes_       = {} ) VULKAN_HPP_NOEXCEPT
23004       : presentMask( presentMask_ )
23005       , modes( modes_ )
23006     {}
23007 
23008     VULKAN_HPP_CONSTEXPR_14
23009       DeviceGroupPresentCapabilitiesKHR( DeviceGroupPresentCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23010 
DeviceGroupPresentCapabilitiesKHRVULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR23011     DeviceGroupPresentCapabilitiesKHR( VkDeviceGroupPresentCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
23012       : DeviceGroupPresentCapabilitiesKHR( *reinterpret_cast<DeviceGroupPresentCapabilitiesKHR const *>( &rhs ) )
23013     {}
23014 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
23015 
23016     DeviceGroupPresentCapabilitiesKHR &
23017       operator=( DeviceGroupPresentCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23018 
operator =VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR23019     DeviceGroupPresentCapabilitiesKHR & operator=( VkDeviceGroupPresentCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
23020     {
23021       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR const *>( &rhs );
23022       return *this;
23023     }
23024 
operator VkDeviceGroupPresentCapabilitiesKHR const&VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR23025     explicit operator VkDeviceGroupPresentCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT
23026     {
23027       return *reinterpret_cast<const VkDeviceGroupPresentCapabilitiesKHR *>( this );
23028     }
23029 
operator VkDeviceGroupPresentCapabilitiesKHR&VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR23030     explicit operator VkDeviceGroupPresentCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT
23031     {
23032       return *reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHR *>( this );
23033     }
23034 
23035 #if 14 <= VULKAN_HPP_CPP_VERSION
23036     auto
23037 #else
23038     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
23039                void * const &,
23040                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, VK_MAX_DEVICE_GROUP_SIZE> const &,
23041                VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR const &>
23042 #endif
reflectVULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR23043       reflect() const VULKAN_HPP_NOEXCEPT
23044     {
23045       return std::tie( sType, pNext, presentMask, modes );
23046     }
23047 
23048 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
23049     auto operator<=>( DeviceGroupPresentCapabilitiesKHR const & ) const = default;
23050 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR23051     bool operator==( DeviceGroupPresentCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
23052     {
23053       return this->reflect() == rhs.reflect();
23054     }
23055 
operator !=VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR23056     bool operator!=( DeviceGroupPresentCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
23057     {
23058       return this->reflect() != rhs.reflect();
23059     }
23060 #endif
23061 
23062   public:
23063     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupPresentCapabilitiesKHR;
23064     void *                              pNext = {};
23065     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, VK_MAX_DEVICE_GROUP_SIZE> presentMask = {};
23066     VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR                     modes       = {};
23067   };
23068   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR ) ==
23069                               sizeof( VkDeviceGroupPresentCapabilitiesKHR ),
23070                             "struct and wrapper have different size!" );
23071   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR>::value,
23072                             "struct wrapper is not a standard layout!" );
23073   VULKAN_HPP_STATIC_ASSERT(
23074     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR>::value,
23075     "DeviceGroupPresentCapabilitiesKHR is not nothrow_move_constructible!" );
23076 
23077   template <>
23078   struct CppType<StructureType, StructureType::eDeviceGroupPresentCapabilitiesKHR>
23079   {
23080     using Type = DeviceGroupPresentCapabilitiesKHR;
23081   };
23082 
23083   struct DeviceGroupPresentInfoKHR
23084   {
23085     using NativeType = VkDeviceGroupPresentInfoKHR;
23086 
23087     static const bool                                  allowDuplicate = false;
23088     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceGroupPresentInfoKHR;
23089 
23090 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
23091     VULKAN_HPP_CONSTEXPR
DeviceGroupPresentInfoKHRVULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR23092       DeviceGroupPresentInfoKHR( uint32_t                                                swapchainCount_ = {},
23093                                  const uint32_t *                                        pDeviceMasks_   = {},
23094                                  VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR mode_ =
23095                                    VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR::eLocal ) VULKAN_HPP_NOEXCEPT
23096       : swapchainCount( swapchainCount_ )
23097       , pDeviceMasks( pDeviceMasks_ )
23098       , mode( mode_ )
23099     {}
23100 
23101     VULKAN_HPP_CONSTEXPR
23102       DeviceGroupPresentInfoKHR( DeviceGroupPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23103 
DeviceGroupPresentInfoKHRVULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR23104     DeviceGroupPresentInfoKHR( VkDeviceGroupPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
23105       : DeviceGroupPresentInfoKHR( *reinterpret_cast<DeviceGroupPresentInfoKHR const *>( &rhs ) )
23106     {}
23107 
23108 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DeviceGroupPresentInfoKHRVULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR23109     DeviceGroupPresentInfoKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & deviceMasks_,
23110                                VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR               mode_ =
23111                                  VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR::eLocal )
23112       : swapchainCount( static_cast<uint32_t>( deviceMasks_.size() ) )
23113       , pDeviceMasks( deviceMasks_.data() )
23114       , mode( mode_ )
23115     {}
23116 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23117 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
23118 
23119     DeviceGroupPresentInfoKHR & operator=( DeviceGroupPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23120 
operator =VULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR23121     DeviceGroupPresentInfoKHR & operator=( VkDeviceGroupPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
23122     {
23123       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR const *>( &rhs );
23124       return *this;
23125     }
23126 
23127 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR23128     VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
23129     {
23130       pNext = pNext_;
23131       return *this;
23132     }
23133 
23134     VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentInfoKHR &
setSwapchainCountVULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR23135                             setSwapchainCount( uint32_t swapchainCount_ ) VULKAN_HPP_NOEXCEPT
23136     {
23137       swapchainCount = swapchainCount_;
23138       return *this;
23139     }
23140 
23141     VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentInfoKHR &
setPDeviceMasksVULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR23142                             setPDeviceMasks( const uint32_t * pDeviceMasks_ ) VULKAN_HPP_NOEXCEPT
23143     {
23144       pDeviceMasks = pDeviceMasks_;
23145       return *this;
23146     }
23147 
23148 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDeviceMasksVULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR23149     DeviceGroupPresentInfoKHR & setDeviceMasks(
23150       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & deviceMasks_ ) VULKAN_HPP_NOEXCEPT
23151     {
23152       swapchainCount = static_cast<uint32_t>( deviceMasks_.size() );
23153       pDeviceMasks   = deviceMasks_.data();
23154       return *this;
23155     }
23156 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23157 
23158     VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentInfoKHR &
setModeVULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR23159                             setMode( VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR mode_ ) VULKAN_HPP_NOEXCEPT
23160     {
23161       mode = mode_;
23162       return *this;
23163     }
23164 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
23165 
operator VkDeviceGroupPresentInfoKHR const&VULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR23166     explicit operator VkDeviceGroupPresentInfoKHR const &() const VULKAN_HPP_NOEXCEPT
23167     {
23168       return *reinterpret_cast<const VkDeviceGroupPresentInfoKHR *>( this );
23169     }
23170 
operator VkDeviceGroupPresentInfoKHR&VULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR23171     explicit operator VkDeviceGroupPresentInfoKHR &() VULKAN_HPP_NOEXCEPT
23172     {
23173       return *reinterpret_cast<VkDeviceGroupPresentInfoKHR *>( this );
23174     }
23175 
23176 #if 14 <= VULKAN_HPP_CPP_VERSION
23177     auto
23178 #else
23179     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
23180                const void * const &,
23181                uint32_t const &,
23182                const uint32_t * const &,
23183                VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR const &>
23184 #endif
reflectVULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR23185       reflect() const VULKAN_HPP_NOEXCEPT
23186     {
23187       return std::tie( sType, pNext, swapchainCount, pDeviceMasks, mode );
23188     }
23189 
23190 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
23191     auto operator<=>( DeviceGroupPresentInfoKHR const & ) const = default;
23192 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR23193     bool operator==( DeviceGroupPresentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
23194     {
23195       return this->reflect() == rhs.reflect();
23196     }
23197 
operator !=VULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR23198     bool operator!=( DeviceGroupPresentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
23199     {
23200       return this->reflect() != rhs.reflect();
23201     }
23202 #endif
23203 
23204   public:
23205     VULKAN_HPP_NAMESPACE::StructureType                     sType          = StructureType::eDeviceGroupPresentInfoKHR;
23206     const void *                                            pNext          = {};
23207     uint32_t                                                swapchainCount = {};
23208     const uint32_t *                                        pDeviceMasks   = {};
23209     VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR mode =
23210       VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR::eLocal;
23211   };
23212   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR ) ==
23213                               sizeof( VkDeviceGroupPresentInfoKHR ),
23214                             "struct and wrapper have different size!" );
23215   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR>::value,
23216                             "struct wrapper is not a standard layout!" );
23217   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR>::value,
23218                             "DeviceGroupPresentInfoKHR is not nothrow_move_constructible!" );
23219 
23220   template <>
23221   struct CppType<StructureType, StructureType::eDeviceGroupPresentInfoKHR>
23222   {
23223     using Type = DeviceGroupPresentInfoKHR;
23224   };
23225 
23226   struct DeviceGroupRenderPassBeginInfo
23227   {
23228     using NativeType = VkDeviceGroupRenderPassBeginInfo;
23229 
23230     static const bool                                  allowDuplicate = false;
23231     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceGroupRenderPassBeginInfo;
23232 
23233 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceGroupRenderPassBeginInfoVULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo23234     VULKAN_HPP_CONSTEXPR DeviceGroupRenderPassBeginInfo( uint32_t deviceMask_                                     = {},
23235                                                          uint32_t deviceRenderAreaCount_                          = {},
23236                                                          const VULKAN_HPP_NAMESPACE::Rect2D * pDeviceRenderAreas_ = {} )
23237       VULKAN_HPP_NOEXCEPT
23238       : deviceMask( deviceMask_ )
23239       , deviceRenderAreaCount( deviceRenderAreaCount_ )
23240       , pDeviceRenderAreas( pDeviceRenderAreas_ )
23241     {}
23242 
23243     VULKAN_HPP_CONSTEXPR
23244       DeviceGroupRenderPassBeginInfo( DeviceGroupRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23245 
DeviceGroupRenderPassBeginInfoVULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo23246     DeviceGroupRenderPassBeginInfo( VkDeviceGroupRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
23247       : DeviceGroupRenderPassBeginInfo( *reinterpret_cast<DeviceGroupRenderPassBeginInfo const *>( &rhs ) )
23248     {}
23249 
23250 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DeviceGroupRenderPassBeginInfoVULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo23251     DeviceGroupRenderPassBeginInfo(
23252       uint32_t                                                                                  deviceMask_,
23253       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & deviceRenderAreas_ )
23254       : deviceMask( deviceMask_ )
23255       , deviceRenderAreaCount( static_cast<uint32_t>( deviceRenderAreas_.size() ) )
23256       , pDeviceRenderAreas( deviceRenderAreas_.data() )
23257     {}
23258 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23259 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
23260 
23261     DeviceGroupRenderPassBeginInfo &
23262       operator=( DeviceGroupRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23263 
operator =VULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo23264     DeviceGroupRenderPassBeginInfo & operator=( VkDeviceGroupRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
23265     {
23266       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo const *>( &rhs );
23267       return *this;
23268     }
23269 
23270 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo23271     VULKAN_HPP_CONSTEXPR_14 DeviceGroupRenderPassBeginInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
23272     {
23273       pNext = pNext_;
23274       return *this;
23275     }
23276 
setDeviceMaskVULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo23277     VULKAN_HPP_CONSTEXPR_14 DeviceGroupRenderPassBeginInfo & setDeviceMask( uint32_t deviceMask_ ) VULKAN_HPP_NOEXCEPT
23278     {
23279       deviceMask = deviceMask_;
23280       return *this;
23281     }
23282 
23283     VULKAN_HPP_CONSTEXPR_14 DeviceGroupRenderPassBeginInfo &
setDeviceRenderAreaCountVULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo23284                             setDeviceRenderAreaCount( uint32_t deviceRenderAreaCount_ ) VULKAN_HPP_NOEXCEPT
23285     {
23286       deviceRenderAreaCount = deviceRenderAreaCount_;
23287       return *this;
23288     }
23289 
23290     VULKAN_HPP_CONSTEXPR_14 DeviceGroupRenderPassBeginInfo &
setPDeviceRenderAreasVULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo23291       setPDeviceRenderAreas( const VULKAN_HPP_NAMESPACE::Rect2D * pDeviceRenderAreas_ ) VULKAN_HPP_NOEXCEPT
23292     {
23293       pDeviceRenderAreas = pDeviceRenderAreas_;
23294       return *this;
23295     }
23296 
23297 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDeviceRenderAreasVULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo23298     DeviceGroupRenderPassBeginInfo & setDeviceRenderAreas(
23299       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & deviceRenderAreas_ )
23300       VULKAN_HPP_NOEXCEPT
23301     {
23302       deviceRenderAreaCount = static_cast<uint32_t>( deviceRenderAreas_.size() );
23303       pDeviceRenderAreas    = deviceRenderAreas_.data();
23304       return *this;
23305     }
23306 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23307 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
23308 
operator VkDeviceGroupRenderPassBeginInfo const&VULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo23309     explicit operator VkDeviceGroupRenderPassBeginInfo const &() const VULKAN_HPP_NOEXCEPT
23310     {
23311       return *reinterpret_cast<const VkDeviceGroupRenderPassBeginInfo *>( this );
23312     }
23313 
operator VkDeviceGroupRenderPassBeginInfo&VULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo23314     explicit operator VkDeviceGroupRenderPassBeginInfo &() VULKAN_HPP_NOEXCEPT
23315     {
23316       return *reinterpret_cast<VkDeviceGroupRenderPassBeginInfo *>( this );
23317     }
23318 
23319 #if 14 <= VULKAN_HPP_CPP_VERSION
23320     auto
23321 #else
23322     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
23323                const void * const &,
23324                uint32_t const &,
23325                uint32_t const &,
23326                const VULKAN_HPP_NAMESPACE::Rect2D * const &>
23327 #endif
reflectVULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo23328       reflect() const VULKAN_HPP_NOEXCEPT
23329     {
23330       return std::tie( sType, pNext, deviceMask, deviceRenderAreaCount, pDeviceRenderAreas );
23331     }
23332 
23333 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
23334     auto operator<=>( DeviceGroupRenderPassBeginInfo const & ) const = default;
23335 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo23336     bool operator==( DeviceGroupRenderPassBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
23337     {
23338       return this->reflect() == rhs.reflect();
23339     }
23340 
operator !=VULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo23341     bool operator!=( DeviceGroupRenderPassBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
23342     {
23343       return this->reflect() != rhs.reflect();
23344     }
23345 #endif
23346 
23347   public:
23348     VULKAN_HPP_NAMESPACE::StructureType  sType                 = StructureType::eDeviceGroupRenderPassBeginInfo;
23349     const void *                         pNext                 = {};
23350     uint32_t                             deviceMask            = {};
23351     uint32_t                             deviceRenderAreaCount = {};
23352     const VULKAN_HPP_NAMESPACE::Rect2D * pDeviceRenderAreas    = {};
23353   };
23354   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo ) ==
23355                               sizeof( VkDeviceGroupRenderPassBeginInfo ),
23356                             "struct and wrapper have different size!" );
23357   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo>::value,
23358                             "struct wrapper is not a standard layout!" );
23359   VULKAN_HPP_STATIC_ASSERT(
23360     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo>::value,
23361     "DeviceGroupRenderPassBeginInfo is not nothrow_move_constructible!" );
23362 
23363   template <>
23364   struct CppType<StructureType, StructureType::eDeviceGroupRenderPassBeginInfo>
23365   {
23366     using Type = DeviceGroupRenderPassBeginInfo;
23367   };
23368   using DeviceGroupRenderPassBeginInfoKHR = DeviceGroupRenderPassBeginInfo;
23369 
23370   struct DeviceGroupSubmitInfo
23371   {
23372     using NativeType = VkDeviceGroupSubmitInfo;
23373 
23374     static const bool                                  allowDuplicate = false;
23375     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceGroupSubmitInfo;
23376 
23377 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
23378     VULKAN_HPP_CONSTEXPR
DeviceGroupSubmitInfoVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo23379       DeviceGroupSubmitInfo( uint32_t         waitSemaphoreCount_            = {},
23380                              const uint32_t * pWaitSemaphoreDeviceIndices_   = {},
23381                              uint32_t         commandBufferCount_            = {},
23382                              const uint32_t * pCommandBufferDeviceMasks_     = {},
23383                              uint32_t         signalSemaphoreCount_          = {},
23384                              const uint32_t * pSignalSemaphoreDeviceIndices_ = {} ) VULKAN_HPP_NOEXCEPT
23385       : waitSemaphoreCount( waitSemaphoreCount_ )
23386       , pWaitSemaphoreDeviceIndices( pWaitSemaphoreDeviceIndices_ )
23387       , commandBufferCount( commandBufferCount_ )
23388       , pCommandBufferDeviceMasks( pCommandBufferDeviceMasks_ )
23389       , signalSemaphoreCount( signalSemaphoreCount_ )
23390       , pSignalSemaphoreDeviceIndices( pSignalSemaphoreDeviceIndices_ )
23391     {}
23392 
23393     VULKAN_HPP_CONSTEXPR DeviceGroupSubmitInfo( DeviceGroupSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23394 
DeviceGroupSubmitInfoVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo23395     DeviceGroupSubmitInfo( VkDeviceGroupSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
23396       : DeviceGroupSubmitInfo( *reinterpret_cast<DeviceGroupSubmitInfo const *>( &rhs ) )
23397     {}
23398 
23399 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DeviceGroupSubmitInfoVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo23400     DeviceGroupSubmitInfo(
23401       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & waitSemaphoreDeviceIndices_,
23402       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & commandBufferDeviceMasks_     = {},
23403       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & signalSemaphoreDeviceIndices_ = {} )
23404       : waitSemaphoreCount( static_cast<uint32_t>( waitSemaphoreDeviceIndices_.size() ) )
23405       , pWaitSemaphoreDeviceIndices( waitSemaphoreDeviceIndices_.data() )
23406       , commandBufferCount( static_cast<uint32_t>( commandBufferDeviceMasks_.size() ) )
23407       , pCommandBufferDeviceMasks( commandBufferDeviceMasks_.data() )
23408       , signalSemaphoreCount( static_cast<uint32_t>( signalSemaphoreDeviceIndices_.size() ) )
23409       , pSignalSemaphoreDeviceIndices( signalSemaphoreDeviceIndices_.data() )
23410     {}
23411 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23412 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
23413 
23414     DeviceGroupSubmitInfo & operator=( DeviceGroupSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23415 
operator =VULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo23416     DeviceGroupSubmitInfo & operator=( VkDeviceGroupSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
23417     {
23418       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo const *>( &rhs );
23419       return *this;
23420     }
23421 
23422 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo23423     VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
23424     {
23425       pNext = pNext_;
23426       return *this;
23427     }
23428 
23429     VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo &
setWaitSemaphoreCountVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo23430                             setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT
23431     {
23432       waitSemaphoreCount = waitSemaphoreCount_;
23433       return *this;
23434     }
23435 
23436     VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo &
setPWaitSemaphoreDeviceIndicesVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo23437       setPWaitSemaphoreDeviceIndices( const uint32_t * pWaitSemaphoreDeviceIndices_ ) VULKAN_HPP_NOEXCEPT
23438     {
23439       pWaitSemaphoreDeviceIndices = pWaitSemaphoreDeviceIndices_;
23440       return *this;
23441     }
23442 
23443 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setWaitSemaphoreDeviceIndicesVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo23444     DeviceGroupSubmitInfo & setWaitSemaphoreDeviceIndices(
23445       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & waitSemaphoreDeviceIndices_ )
23446       VULKAN_HPP_NOEXCEPT
23447     {
23448       waitSemaphoreCount          = static_cast<uint32_t>( waitSemaphoreDeviceIndices_.size() );
23449       pWaitSemaphoreDeviceIndices = waitSemaphoreDeviceIndices_.data();
23450       return *this;
23451     }
23452 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23453 
23454     VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo &
setCommandBufferCountVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo23455                             setCommandBufferCount( uint32_t commandBufferCount_ ) VULKAN_HPP_NOEXCEPT
23456     {
23457       commandBufferCount = commandBufferCount_;
23458       return *this;
23459     }
23460 
23461     VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo &
setPCommandBufferDeviceMasksVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo23462       setPCommandBufferDeviceMasks( const uint32_t * pCommandBufferDeviceMasks_ ) VULKAN_HPP_NOEXCEPT
23463     {
23464       pCommandBufferDeviceMasks = pCommandBufferDeviceMasks_;
23465       return *this;
23466     }
23467 
23468 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setCommandBufferDeviceMasksVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo23469     DeviceGroupSubmitInfo & setCommandBufferDeviceMasks(
23470       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & commandBufferDeviceMasks_ )
23471       VULKAN_HPP_NOEXCEPT
23472     {
23473       commandBufferCount        = static_cast<uint32_t>( commandBufferDeviceMasks_.size() );
23474       pCommandBufferDeviceMasks = commandBufferDeviceMasks_.data();
23475       return *this;
23476     }
23477 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23478 
23479     VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo &
setSignalSemaphoreCountVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo23480                             setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT
23481     {
23482       signalSemaphoreCount = signalSemaphoreCount_;
23483       return *this;
23484     }
23485 
23486     VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo &
setPSignalSemaphoreDeviceIndicesVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo23487       setPSignalSemaphoreDeviceIndices( const uint32_t * pSignalSemaphoreDeviceIndices_ ) VULKAN_HPP_NOEXCEPT
23488     {
23489       pSignalSemaphoreDeviceIndices = pSignalSemaphoreDeviceIndices_;
23490       return *this;
23491     }
23492 
23493 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSignalSemaphoreDeviceIndicesVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo23494     DeviceGroupSubmitInfo & setSignalSemaphoreDeviceIndices(
23495       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & signalSemaphoreDeviceIndices_ )
23496       VULKAN_HPP_NOEXCEPT
23497     {
23498       signalSemaphoreCount          = static_cast<uint32_t>( signalSemaphoreDeviceIndices_.size() );
23499       pSignalSemaphoreDeviceIndices = signalSemaphoreDeviceIndices_.data();
23500       return *this;
23501     }
23502 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23503 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
23504 
operator VkDeviceGroupSubmitInfo const&VULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo23505     explicit operator VkDeviceGroupSubmitInfo const &() const VULKAN_HPP_NOEXCEPT
23506     {
23507       return *reinterpret_cast<const VkDeviceGroupSubmitInfo *>( this );
23508     }
23509 
operator VkDeviceGroupSubmitInfo&VULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo23510     explicit operator VkDeviceGroupSubmitInfo &() VULKAN_HPP_NOEXCEPT
23511     {
23512       return *reinterpret_cast<VkDeviceGroupSubmitInfo *>( this );
23513     }
23514 
23515 #if 14 <= VULKAN_HPP_CPP_VERSION
23516     auto
23517 #else
23518     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
23519                const void * const &,
23520                uint32_t const &,
23521                const uint32_t * const &,
23522                uint32_t const &,
23523                const uint32_t * const &,
23524                uint32_t const &,
23525                const uint32_t * const &>
23526 #endif
reflectVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo23527       reflect() const VULKAN_HPP_NOEXCEPT
23528     {
23529       return std::tie( sType,
23530                        pNext,
23531                        waitSemaphoreCount,
23532                        pWaitSemaphoreDeviceIndices,
23533                        commandBufferCount,
23534                        pCommandBufferDeviceMasks,
23535                        signalSemaphoreCount,
23536                        pSignalSemaphoreDeviceIndices );
23537     }
23538 
23539 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
23540     auto operator<=>( DeviceGroupSubmitInfo const & ) const = default;
23541 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo23542     bool operator==( DeviceGroupSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
23543     {
23544       return this->reflect() == rhs.reflect();
23545     }
23546 
operator !=VULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo23547     bool operator!=( DeviceGroupSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
23548     {
23549       return this->reflect() != rhs.reflect();
23550     }
23551 #endif
23552 
23553   public:
23554     VULKAN_HPP_NAMESPACE::StructureType sType                         = StructureType::eDeviceGroupSubmitInfo;
23555     const void *                        pNext                         = {};
23556     uint32_t                            waitSemaphoreCount            = {};
23557     const uint32_t *                    pWaitSemaphoreDeviceIndices   = {};
23558     uint32_t                            commandBufferCount            = {};
23559     const uint32_t *                    pCommandBufferDeviceMasks     = {};
23560     uint32_t                            signalSemaphoreCount          = {};
23561     const uint32_t *                    pSignalSemaphoreDeviceIndices = {};
23562   };
23563   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo ) == sizeof( VkDeviceGroupSubmitInfo ),
23564                             "struct and wrapper have different size!" );
23565   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo>::value,
23566                             "struct wrapper is not a standard layout!" );
23567   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo>::value,
23568                             "DeviceGroupSubmitInfo is not nothrow_move_constructible!" );
23569 
23570   template <>
23571   struct CppType<StructureType, StructureType::eDeviceGroupSubmitInfo>
23572   {
23573     using Type = DeviceGroupSubmitInfo;
23574   };
23575   using DeviceGroupSubmitInfoKHR = DeviceGroupSubmitInfo;
23576 
23577   struct DeviceGroupSwapchainCreateInfoKHR
23578   {
23579     using NativeType = VkDeviceGroupSwapchainCreateInfoKHR;
23580 
23581     static const bool                                  allowDuplicate = false;
23582     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
23583       StructureType::eDeviceGroupSwapchainCreateInfoKHR;
23584 
23585 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceGroupSwapchainCreateInfoKHRVULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR23586     VULKAN_HPP_CONSTEXPR DeviceGroupSwapchainCreateInfoKHR(
23587       VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes_ = {} ) VULKAN_HPP_NOEXCEPT : modes( modes_ )
23588     {}
23589 
23590     VULKAN_HPP_CONSTEXPR
23591       DeviceGroupSwapchainCreateInfoKHR( DeviceGroupSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23592 
DeviceGroupSwapchainCreateInfoKHRVULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR23593     DeviceGroupSwapchainCreateInfoKHR( VkDeviceGroupSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
23594       : DeviceGroupSwapchainCreateInfoKHR( *reinterpret_cast<DeviceGroupSwapchainCreateInfoKHR const *>( &rhs ) )
23595     {}
23596 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
23597 
23598     DeviceGroupSwapchainCreateInfoKHR &
23599       operator=( DeviceGroupSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23600 
operator =VULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR23601     DeviceGroupSwapchainCreateInfoKHR & operator=( VkDeviceGroupSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
23602     {
23603       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR const *>( &rhs );
23604       return *this;
23605     }
23606 
23607 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR23608     VULKAN_HPP_CONSTEXPR_14 DeviceGroupSwapchainCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
23609     {
23610       pNext = pNext_;
23611       return *this;
23612     }
23613 
23614     VULKAN_HPP_CONSTEXPR_14 DeviceGroupSwapchainCreateInfoKHR &
setModesVULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR23615                             setModes( VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes_ ) VULKAN_HPP_NOEXCEPT
23616     {
23617       modes = modes_;
23618       return *this;
23619     }
23620 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
23621 
operator VkDeviceGroupSwapchainCreateInfoKHR const&VULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR23622     explicit operator VkDeviceGroupSwapchainCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
23623     {
23624       return *reinterpret_cast<const VkDeviceGroupSwapchainCreateInfoKHR *>( this );
23625     }
23626 
operator VkDeviceGroupSwapchainCreateInfoKHR&VULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR23627     explicit operator VkDeviceGroupSwapchainCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
23628     {
23629       return *reinterpret_cast<VkDeviceGroupSwapchainCreateInfoKHR *>( this );
23630     }
23631 
23632 #if 14 <= VULKAN_HPP_CPP_VERSION
23633     auto
23634 #else
23635     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
23636                const void * const &,
23637                VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR const &>
23638 #endif
reflectVULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR23639       reflect() const VULKAN_HPP_NOEXCEPT
23640     {
23641       return std::tie( sType, pNext, modes );
23642     }
23643 
23644 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
23645     auto operator<=>( DeviceGroupSwapchainCreateInfoKHR const & ) const = default;
23646 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR23647     bool operator==( DeviceGroupSwapchainCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
23648     {
23649       return this->reflect() == rhs.reflect();
23650     }
23651 
operator !=VULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR23652     bool operator!=( DeviceGroupSwapchainCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
23653     {
23654       return this->reflect() != rhs.reflect();
23655     }
23656 #endif
23657 
23658   public:
23659     VULKAN_HPP_NAMESPACE::StructureType                  sType = StructureType::eDeviceGroupSwapchainCreateInfoKHR;
23660     const void *                                         pNext = {};
23661     VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes = {};
23662   };
23663   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR ) ==
23664                               sizeof( VkDeviceGroupSwapchainCreateInfoKHR ),
23665                             "struct and wrapper have different size!" );
23666   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR>::value,
23667                             "struct wrapper is not a standard layout!" );
23668   VULKAN_HPP_STATIC_ASSERT(
23669     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR>::value,
23670     "DeviceGroupSwapchainCreateInfoKHR is not nothrow_move_constructible!" );
23671 
23672   template <>
23673   struct CppType<StructureType, StructureType::eDeviceGroupSwapchainCreateInfoKHR>
23674   {
23675     using Type = DeviceGroupSwapchainCreateInfoKHR;
23676   };
23677 
23678   struct ImageCreateInfo
23679   {
23680     using NativeType = VkImageCreateInfo;
23681 
23682     static const bool                                  allowDuplicate = false;
23683     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageCreateInfo;
23684 
23685 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageCreateInfoVULKAN_HPP_NAMESPACE::ImageCreateInfo23686     VULKAN_HPP_CONSTEXPR ImageCreateInfo(
23687       VULKAN_HPP_NAMESPACE::ImageCreateFlags    flags_                 = {},
23688       VULKAN_HPP_NAMESPACE::ImageType           imageType_             = VULKAN_HPP_NAMESPACE::ImageType::e1D,
23689       VULKAN_HPP_NAMESPACE::Format              format_                = VULKAN_HPP_NAMESPACE::Format::eUndefined,
23690       VULKAN_HPP_NAMESPACE::Extent3D            extent_                = {},
23691       uint32_t                                  mipLevels_             = {},
23692       uint32_t                                  arrayLayers_           = {},
23693       VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_               = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1,
23694       VULKAN_HPP_NAMESPACE::ImageTiling         tiling_                = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal,
23695       VULKAN_HPP_NAMESPACE::ImageUsageFlags     usage_                 = {},
23696       VULKAN_HPP_NAMESPACE::SharingMode         sharingMode_           = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive,
23697       uint32_t                                  queueFamilyIndexCount_ = {},
23698       const uint32_t *                          pQueueFamilyIndices_   = {},
23699       VULKAN_HPP_NAMESPACE::ImageLayout         initialLayout_         = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined )
23700       VULKAN_HPP_NOEXCEPT
23701       : flags( flags_ )
23702       , imageType( imageType_ )
23703       , format( format_ )
23704       , extent( extent_ )
23705       , mipLevels( mipLevels_ )
23706       , arrayLayers( arrayLayers_ )
23707       , samples( samples_ )
23708       , tiling( tiling_ )
23709       , usage( usage_ )
23710       , sharingMode( sharingMode_ )
23711       , queueFamilyIndexCount( queueFamilyIndexCount_ )
23712       , pQueueFamilyIndices( pQueueFamilyIndices_ )
23713       , initialLayout( initialLayout_ )
23714     {}
23715 
23716     VULKAN_HPP_CONSTEXPR ImageCreateInfo( ImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23717 
ImageCreateInfoVULKAN_HPP_NAMESPACE::ImageCreateInfo23718     ImageCreateInfo( VkImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
23719       : ImageCreateInfo( *reinterpret_cast<ImageCreateInfo const *>( &rhs ) )
23720     {}
23721 
23722 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ImageCreateInfoVULKAN_HPP_NAMESPACE::ImageCreateInfo23723     ImageCreateInfo( VULKAN_HPP_NAMESPACE::ImageCreateFlags                                flags_,
23724                      VULKAN_HPP_NAMESPACE::ImageType                                       imageType_,
23725                      VULKAN_HPP_NAMESPACE::Format                                          format_,
23726                      VULKAN_HPP_NAMESPACE::Extent3D                                        extent_,
23727                      uint32_t                                                              mipLevels_,
23728                      uint32_t                                                              arrayLayers_,
23729                      VULKAN_HPP_NAMESPACE::SampleCountFlagBits                             samples_,
23730                      VULKAN_HPP_NAMESPACE::ImageTiling                                     tiling_,
23731                      VULKAN_HPP_NAMESPACE::ImageUsageFlags                                 usage_,
23732                      VULKAN_HPP_NAMESPACE::SharingMode                                     sharingMode_,
23733                      VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & queueFamilyIndices_,
23734                      VULKAN_HPP_NAMESPACE::ImageLayout initialLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined )
23735       : flags( flags_ )
23736       , imageType( imageType_ )
23737       , format( format_ )
23738       , extent( extent_ )
23739       , mipLevels( mipLevels_ )
23740       , arrayLayers( arrayLayers_ )
23741       , samples( samples_ )
23742       , tiling( tiling_ )
23743       , usage( usage_ )
23744       , sharingMode( sharingMode_ )
23745       , queueFamilyIndexCount( static_cast<uint32_t>( queueFamilyIndices_.size() ) )
23746       , pQueueFamilyIndices( queueFamilyIndices_.data() )
23747       , initialLayout( initialLayout_ )
23748     {}
23749 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23750 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
23751 
23752     ImageCreateInfo & operator=( ImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23753 
operator =VULKAN_HPP_NAMESPACE::ImageCreateInfo23754     ImageCreateInfo & operator=( VkImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
23755     {
23756       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageCreateInfo const *>( &rhs );
23757       return *this;
23758     }
23759 
23760 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageCreateInfo23761     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
23762     {
23763       pNext = pNext_;
23764       return *this;
23765     }
23766 
23767     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::ImageCreateInfo23768                             setFlags( VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
23769     {
23770       flags = flags_;
23771       return *this;
23772     }
23773 
23774     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo &
setImageTypeVULKAN_HPP_NAMESPACE::ImageCreateInfo23775                             setImageType( VULKAN_HPP_NAMESPACE::ImageType imageType_ ) VULKAN_HPP_NOEXCEPT
23776     {
23777       imageType = imageType_;
23778       return *this;
23779     }
23780 
setFormatVULKAN_HPP_NAMESPACE::ImageCreateInfo23781     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
23782     {
23783       format = format_;
23784       return *this;
23785     }
23786 
23787     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo &
setExtentVULKAN_HPP_NAMESPACE::ImageCreateInfo23788                             setExtent( VULKAN_HPP_NAMESPACE::Extent3D const & extent_ ) VULKAN_HPP_NOEXCEPT
23789     {
23790       extent = extent_;
23791       return *this;
23792     }
23793 
setMipLevelsVULKAN_HPP_NAMESPACE::ImageCreateInfo23794     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setMipLevels( uint32_t mipLevels_ ) VULKAN_HPP_NOEXCEPT
23795     {
23796       mipLevels = mipLevels_;
23797       return *this;
23798     }
23799 
setArrayLayersVULKAN_HPP_NAMESPACE::ImageCreateInfo23800     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setArrayLayers( uint32_t arrayLayers_ ) VULKAN_HPP_NOEXCEPT
23801     {
23802       arrayLayers = arrayLayers_;
23803       return *this;
23804     }
23805 
23806     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo &
setSamplesVULKAN_HPP_NAMESPACE::ImageCreateInfo23807                             setSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_ ) VULKAN_HPP_NOEXCEPT
23808     {
23809       samples = samples_;
23810       return *this;
23811     }
23812 
setTilingVULKAN_HPP_NAMESPACE::ImageCreateInfo23813     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setTiling( VULKAN_HPP_NAMESPACE::ImageTiling tiling_ ) VULKAN_HPP_NOEXCEPT
23814     {
23815       tiling = tiling_;
23816       return *this;
23817     }
23818 
23819     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo &
setUsageVULKAN_HPP_NAMESPACE::ImageCreateInfo23820                             setUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT
23821     {
23822       usage = usage_;
23823       return *this;
23824     }
23825 
23826     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo &
setSharingModeVULKAN_HPP_NAMESPACE::ImageCreateInfo23827                             setSharingMode( VULKAN_HPP_NAMESPACE::SharingMode sharingMode_ ) VULKAN_HPP_NOEXCEPT
23828     {
23829       sharingMode = sharingMode_;
23830       return *this;
23831     }
23832 
23833     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo &
setQueueFamilyIndexCountVULKAN_HPP_NAMESPACE::ImageCreateInfo23834                             setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) VULKAN_HPP_NOEXCEPT
23835     {
23836       queueFamilyIndexCount = queueFamilyIndexCount_;
23837       return *this;
23838     }
23839 
23840     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo &
setPQueueFamilyIndicesVULKAN_HPP_NAMESPACE::ImageCreateInfo23841                             setPQueueFamilyIndices( const uint32_t * pQueueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT
23842     {
23843       pQueueFamilyIndices = pQueueFamilyIndices_;
23844       return *this;
23845     }
23846 
23847 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setQueueFamilyIndicesVULKAN_HPP_NAMESPACE::ImageCreateInfo23848     ImageCreateInfo & setQueueFamilyIndices(
23849       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & queueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT
23850     {
23851       queueFamilyIndexCount = static_cast<uint32_t>( queueFamilyIndices_.size() );
23852       pQueueFamilyIndices   = queueFamilyIndices_.data();
23853       return *this;
23854     }
23855 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23856 
23857     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo &
setInitialLayoutVULKAN_HPP_NAMESPACE::ImageCreateInfo23858                             setInitialLayout( VULKAN_HPP_NAMESPACE::ImageLayout initialLayout_ ) VULKAN_HPP_NOEXCEPT
23859     {
23860       initialLayout = initialLayout_;
23861       return *this;
23862     }
23863 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
23864 
operator VkImageCreateInfo const&VULKAN_HPP_NAMESPACE::ImageCreateInfo23865     explicit operator VkImageCreateInfo const &() const VULKAN_HPP_NOEXCEPT
23866     {
23867       return *reinterpret_cast<const VkImageCreateInfo *>( this );
23868     }
23869 
operator VkImageCreateInfo&VULKAN_HPP_NAMESPACE::ImageCreateInfo23870     explicit operator VkImageCreateInfo &() VULKAN_HPP_NOEXCEPT
23871     {
23872       return *reinterpret_cast<VkImageCreateInfo *>( this );
23873     }
23874 
23875 #if 14 <= VULKAN_HPP_CPP_VERSION
23876     auto
23877 #else
23878     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
23879                const void * const &,
23880                VULKAN_HPP_NAMESPACE::ImageCreateFlags const &,
23881                VULKAN_HPP_NAMESPACE::ImageType const &,
23882                VULKAN_HPP_NAMESPACE::Format const &,
23883                VULKAN_HPP_NAMESPACE::Extent3D const &,
23884                uint32_t const &,
23885                uint32_t const &,
23886                VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &,
23887                VULKAN_HPP_NAMESPACE::ImageTiling const &,
23888                VULKAN_HPP_NAMESPACE::ImageUsageFlags const &,
23889                VULKAN_HPP_NAMESPACE::SharingMode const &,
23890                uint32_t const &,
23891                const uint32_t * const &,
23892                VULKAN_HPP_NAMESPACE::ImageLayout const &>
23893 #endif
reflectVULKAN_HPP_NAMESPACE::ImageCreateInfo23894       reflect() const VULKAN_HPP_NOEXCEPT
23895     {
23896       return std::tie( sType,
23897                        pNext,
23898                        flags,
23899                        imageType,
23900                        format,
23901                        extent,
23902                        mipLevels,
23903                        arrayLayers,
23904                        samples,
23905                        tiling,
23906                        usage,
23907                        sharingMode,
23908                        queueFamilyIndexCount,
23909                        pQueueFamilyIndices,
23910                        initialLayout );
23911     }
23912 
23913 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
23914     auto operator<=>( ImageCreateInfo const & ) const = default;
23915 #else
operator ==VULKAN_HPP_NAMESPACE::ImageCreateInfo23916     bool operator==( ImageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
23917     {
23918       return this->reflect() == rhs.reflect();
23919     }
23920 
operator !=VULKAN_HPP_NAMESPACE::ImageCreateInfo23921     bool operator!=( ImageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
23922     {
23923       return this->reflect() != rhs.reflect();
23924     }
23925 #endif
23926 
23927   public:
23928     VULKAN_HPP_NAMESPACE::StructureType       sType                 = StructureType::eImageCreateInfo;
23929     const void *                              pNext                 = {};
23930     VULKAN_HPP_NAMESPACE::ImageCreateFlags    flags                 = {};
23931     VULKAN_HPP_NAMESPACE::ImageType           imageType             = VULKAN_HPP_NAMESPACE::ImageType::e1D;
23932     VULKAN_HPP_NAMESPACE::Format              format                = VULKAN_HPP_NAMESPACE::Format::eUndefined;
23933     VULKAN_HPP_NAMESPACE::Extent3D            extent                = {};
23934     uint32_t                                  mipLevels             = {};
23935     uint32_t                                  arrayLayers           = {};
23936     VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples               = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
23937     VULKAN_HPP_NAMESPACE::ImageTiling         tiling                = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal;
23938     VULKAN_HPP_NAMESPACE::ImageUsageFlags     usage                 = {};
23939     VULKAN_HPP_NAMESPACE::SharingMode         sharingMode           = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive;
23940     uint32_t                                  queueFamilyIndexCount = {};
23941     const uint32_t *                          pQueueFamilyIndices   = {};
23942     VULKAN_HPP_NAMESPACE::ImageLayout         initialLayout         = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
23943   };
23944   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageCreateInfo ) == sizeof( VkImageCreateInfo ),
23945                             "struct and wrapper have different size!" );
23946   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImageCreateInfo>::value,
23947                             "struct wrapper is not a standard layout!" );
23948   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImageCreateInfo>::value,
23949                             "ImageCreateInfo is not nothrow_move_constructible!" );
23950 
23951   template <>
23952   struct CppType<StructureType, StructureType::eImageCreateInfo>
23953   {
23954     using Type = ImageCreateInfo;
23955   };
23956 
23957   struct DeviceImageMemoryRequirementsKHR
23958   {
23959     using NativeType = VkDeviceImageMemoryRequirementsKHR;
23960 
23961     static const bool                                  allowDuplicate = false;
23962     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceImageMemoryRequirementsKHR;
23963 
23964 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
23965     VULKAN_HPP_CONSTEXPR
DeviceImageMemoryRequirementsKHRVULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirementsKHR23966       DeviceImageMemoryRequirementsKHR( const VULKAN_HPP_NAMESPACE::ImageCreateInfo * pCreateInfo_ = {},
23967                                         VULKAN_HPP_NAMESPACE::ImageAspectFlagBits     planeAspect_ =
23968                                           VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor ) VULKAN_HPP_NOEXCEPT
23969       : pCreateInfo( pCreateInfo_ )
23970       , planeAspect( planeAspect_ )
23971     {}
23972 
23973     VULKAN_HPP_CONSTEXPR
23974       DeviceImageMemoryRequirementsKHR( DeviceImageMemoryRequirementsKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23975 
DeviceImageMemoryRequirementsKHRVULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirementsKHR23976     DeviceImageMemoryRequirementsKHR( VkDeviceImageMemoryRequirementsKHR const & rhs ) VULKAN_HPP_NOEXCEPT
23977       : DeviceImageMemoryRequirementsKHR( *reinterpret_cast<DeviceImageMemoryRequirementsKHR const *>( &rhs ) )
23978     {}
23979 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
23980 
23981     DeviceImageMemoryRequirementsKHR &
23982       operator=( DeviceImageMemoryRequirementsKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23983 
operator =VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirementsKHR23984     DeviceImageMemoryRequirementsKHR & operator=( VkDeviceImageMemoryRequirementsKHR const & rhs ) VULKAN_HPP_NOEXCEPT
23985     {
23986       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirementsKHR const *>( &rhs );
23987       return *this;
23988     }
23989 
23990 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirementsKHR23991     VULKAN_HPP_CONSTEXPR_14 DeviceImageMemoryRequirementsKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
23992     {
23993       pNext = pNext_;
23994       return *this;
23995     }
23996 
23997     VULKAN_HPP_CONSTEXPR_14 DeviceImageMemoryRequirementsKHR &
setPCreateInfoVULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirementsKHR23998       setPCreateInfo( const VULKAN_HPP_NAMESPACE::ImageCreateInfo * pCreateInfo_ ) VULKAN_HPP_NOEXCEPT
23999     {
24000       pCreateInfo = pCreateInfo_;
24001       return *this;
24002     }
24003 
24004     VULKAN_HPP_CONSTEXPR_14 DeviceImageMemoryRequirementsKHR &
setPlaneAspectVULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirementsKHR24005                             setPlaneAspect( VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect_ ) VULKAN_HPP_NOEXCEPT
24006     {
24007       planeAspect = planeAspect_;
24008       return *this;
24009     }
24010 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
24011 
operator VkDeviceImageMemoryRequirementsKHR const&VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirementsKHR24012     explicit operator VkDeviceImageMemoryRequirementsKHR const &() const VULKAN_HPP_NOEXCEPT
24013     {
24014       return *reinterpret_cast<const VkDeviceImageMemoryRequirementsKHR *>( this );
24015     }
24016 
operator VkDeviceImageMemoryRequirementsKHR&VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirementsKHR24017     explicit operator VkDeviceImageMemoryRequirementsKHR &() VULKAN_HPP_NOEXCEPT
24018     {
24019       return *reinterpret_cast<VkDeviceImageMemoryRequirementsKHR *>( this );
24020     }
24021 
24022 #if 14 <= VULKAN_HPP_CPP_VERSION
24023     auto
24024 #else
24025     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
24026                const void * const &,
24027                const VULKAN_HPP_NAMESPACE::ImageCreateInfo * const &,
24028                VULKAN_HPP_NAMESPACE::ImageAspectFlagBits const &>
24029 #endif
reflectVULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirementsKHR24030       reflect() const VULKAN_HPP_NOEXCEPT
24031     {
24032       return std::tie( sType, pNext, pCreateInfo, planeAspect );
24033     }
24034 
24035 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
24036     auto operator<=>( DeviceImageMemoryRequirementsKHR const & ) const = default;
24037 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirementsKHR24038     bool operator==( DeviceImageMemoryRequirementsKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
24039     {
24040       return this->reflect() == rhs.reflect();
24041     }
24042 
operator !=VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirementsKHR24043     bool operator!=( DeviceImageMemoryRequirementsKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
24044     {
24045       return this->reflect() != rhs.reflect();
24046     }
24047 #endif
24048 
24049   public:
24050     VULKAN_HPP_NAMESPACE::StructureType           sType       = StructureType::eDeviceImageMemoryRequirementsKHR;
24051     const void *                                  pNext       = {};
24052     const VULKAN_HPP_NAMESPACE::ImageCreateInfo * pCreateInfo = {};
24053     VULKAN_HPP_NAMESPACE::ImageAspectFlagBits     planeAspect = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor;
24054   };
24055   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirementsKHR ) ==
24056                               sizeof( VkDeviceImageMemoryRequirementsKHR ),
24057                             "struct and wrapper have different size!" );
24058   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirementsKHR>::value,
24059                             "struct wrapper is not a standard layout!" );
24060   VULKAN_HPP_STATIC_ASSERT(
24061     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirementsKHR>::value,
24062     "DeviceImageMemoryRequirementsKHR is not nothrow_move_constructible!" );
24063 
24064   template <>
24065   struct CppType<StructureType, StructureType::eDeviceImageMemoryRequirementsKHR>
24066   {
24067     using Type = DeviceImageMemoryRequirementsKHR;
24068   };
24069 
24070   struct DeviceMemoryOpaqueCaptureAddressInfo
24071   {
24072     using NativeType = VkDeviceMemoryOpaqueCaptureAddressInfo;
24073 
24074     static const bool                                  allowDuplicate = false;
24075     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
24076       StructureType::eDeviceMemoryOpaqueCaptureAddressInfo;
24077 
24078 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
24079     VULKAN_HPP_CONSTEXPR
DeviceMemoryOpaqueCaptureAddressInfoVULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo24080       DeviceMemoryOpaqueCaptureAddressInfo( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {} ) VULKAN_HPP_NOEXCEPT
24081       : memory( memory_ )
24082     {}
24083 
24084     VULKAN_HPP_CONSTEXPR DeviceMemoryOpaqueCaptureAddressInfo( DeviceMemoryOpaqueCaptureAddressInfo const & rhs )
24085       VULKAN_HPP_NOEXCEPT = default;
24086 
DeviceMemoryOpaqueCaptureAddressInfoVULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo24087     DeviceMemoryOpaqueCaptureAddressInfo( VkDeviceMemoryOpaqueCaptureAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT
24088       : DeviceMemoryOpaqueCaptureAddressInfo( *reinterpret_cast<DeviceMemoryOpaqueCaptureAddressInfo const *>( &rhs ) )
24089     {}
24090 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
24091 
24092     DeviceMemoryOpaqueCaptureAddressInfo &
24093       operator=( DeviceMemoryOpaqueCaptureAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24094 
24095     DeviceMemoryOpaqueCaptureAddressInfo &
operator =VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo24096       operator=( VkDeviceMemoryOpaqueCaptureAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT
24097     {
24098       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo const *>( &rhs );
24099       return *this;
24100     }
24101 
24102 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo24103     VULKAN_HPP_CONSTEXPR_14 DeviceMemoryOpaqueCaptureAddressInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
24104     {
24105       pNext = pNext_;
24106       return *this;
24107     }
24108 
24109     VULKAN_HPP_CONSTEXPR_14 DeviceMemoryOpaqueCaptureAddressInfo &
setMemoryVULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo24110                             setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
24111     {
24112       memory = memory_;
24113       return *this;
24114     }
24115 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
24116 
operator VkDeviceMemoryOpaqueCaptureAddressInfo const&VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo24117     explicit operator VkDeviceMemoryOpaqueCaptureAddressInfo const &() const VULKAN_HPP_NOEXCEPT
24118     {
24119       return *reinterpret_cast<const VkDeviceMemoryOpaqueCaptureAddressInfo *>( this );
24120     }
24121 
operator VkDeviceMemoryOpaqueCaptureAddressInfo&VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo24122     explicit operator VkDeviceMemoryOpaqueCaptureAddressInfo &() VULKAN_HPP_NOEXCEPT
24123     {
24124       return *reinterpret_cast<VkDeviceMemoryOpaqueCaptureAddressInfo *>( this );
24125     }
24126 
24127 #if 14 <= VULKAN_HPP_CPP_VERSION
24128     auto
24129 #else
24130     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
24131                const void * const &,
24132                VULKAN_HPP_NAMESPACE::DeviceMemory const &>
24133 #endif
reflectVULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo24134       reflect() const VULKAN_HPP_NOEXCEPT
24135     {
24136       return std::tie( sType, pNext, memory );
24137     }
24138 
24139 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
24140     auto operator<=>( DeviceMemoryOpaqueCaptureAddressInfo const & ) const = default;
24141 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo24142     bool operator==( DeviceMemoryOpaqueCaptureAddressInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
24143     {
24144       return this->reflect() == rhs.reflect();
24145     }
24146 
operator !=VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo24147     bool operator!=( DeviceMemoryOpaqueCaptureAddressInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
24148     {
24149       return this->reflect() != rhs.reflect();
24150     }
24151 #endif
24152 
24153   public:
24154     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eDeviceMemoryOpaqueCaptureAddressInfo;
24155     const void *                        pNext  = {};
24156     VULKAN_HPP_NAMESPACE::DeviceMemory  memory = {};
24157   };
24158   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo ) ==
24159                               sizeof( VkDeviceMemoryOpaqueCaptureAddressInfo ),
24160                             "struct and wrapper have different size!" );
24161   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo>::value,
24162                             "struct wrapper is not a standard layout!" );
24163   VULKAN_HPP_STATIC_ASSERT(
24164     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo>::value,
24165     "DeviceMemoryOpaqueCaptureAddressInfo is not nothrow_move_constructible!" );
24166 
24167   template <>
24168   struct CppType<StructureType, StructureType::eDeviceMemoryOpaqueCaptureAddressInfo>
24169   {
24170     using Type = DeviceMemoryOpaqueCaptureAddressInfo;
24171   };
24172   using DeviceMemoryOpaqueCaptureAddressInfoKHR = DeviceMemoryOpaqueCaptureAddressInfo;
24173 
24174   struct DeviceMemoryOverallocationCreateInfoAMD
24175   {
24176     using NativeType = VkDeviceMemoryOverallocationCreateInfoAMD;
24177 
24178     static const bool                                  allowDuplicate = false;
24179     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
24180       StructureType::eDeviceMemoryOverallocationCreateInfoAMD;
24181 
24182 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceMemoryOverallocationCreateInfoAMDVULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD24183     VULKAN_HPP_CONSTEXPR DeviceMemoryOverallocationCreateInfoAMD(
24184       VULKAN_HPP_NAMESPACE::MemoryOverallocationBehaviorAMD overallocationBehavior_ =
24185         VULKAN_HPP_NAMESPACE::MemoryOverallocationBehaviorAMD::eDefault ) VULKAN_HPP_NOEXCEPT
24186       : overallocationBehavior( overallocationBehavior_ )
24187     {}
24188 
24189     VULKAN_HPP_CONSTEXPR DeviceMemoryOverallocationCreateInfoAMD( DeviceMemoryOverallocationCreateInfoAMD const & rhs )
24190       VULKAN_HPP_NOEXCEPT = default;
24191 
DeviceMemoryOverallocationCreateInfoAMDVULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD24192     DeviceMemoryOverallocationCreateInfoAMD( VkDeviceMemoryOverallocationCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
24193       : DeviceMemoryOverallocationCreateInfoAMD(
24194           *reinterpret_cast<DeviceMemoryOverallocationCreateInfoAMD const *>( &rhs ) )
24195     {}
24196 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
24197 
24198     DeviceMemoryOverallocationCreateInfoAMD &
24199       operator=( DeviceMemoryOverallocationCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24200 
24201     DeviceMemoryOverallocationCreateInfoAMD &
operator =VULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD24202       operator=( VkDeviceMemoryOverallocationCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
24203     {
24204       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD const *>( &rhs );
24205       return *this;
24206     }
24207 
24208 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
24209     VULKAN_HPP_CONSTEXPR_14 DeviceMemoryOverallocationCreateInfoAMD &
setPNextVULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD24210                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
24211     {
24212       pNext = pNext_;
24213       return *this;
24214     }
24215 
setOverallocationBehaviorVULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD24216     VULKAN_HPP_CONSTEXPR_14 DeviceMemoryOverallocationCreateInfoAMD & setOverallocationBehavior(
24217       VULKAN_HPP_NAMESPACE::MemoryOverallocationBehaviorAMD overallocationBehavior_ ) VULKAN_HPP_NOEXCEPT
24218     {
24219       overallocationBehavior = overallocationBehavior_;
24220       return *this;
24221     }
24222 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
24223 
operator VkDeviceMemoryOverallocationCreateInfoAMD const&VULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD24224     explicit operator VkDeviceMemoryOverallocationCreateInfoAMD const &() const VULKAN_HPP_NOEXCEPT
24225     {
24226       return *reinterpret_cast<const VkDeviceMemoryOverallocationCreateInfoAMD *>( this );
24227     }
24228 
operator VkDeviceMemoryOverallocationCreateInfoAMD&VULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD24229     explicit operator VkDeviceMemoryOverallocationCreateInfoAMD &() VULKAN_HPP_NOEXCEPT
24230     {
24231       return *reinterpret_cast<VkDeviceMemoryOverallocationCreateInfoAMD *>( this );
24232     }
24233 
24234 #if 14 <= VULKAN_HPP_CPP_VERSION
24235     auto
24236 #else
24237     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
24238                const void * const &,
24239                VULKAN_HPP_NAMESPACE::MemoryOverallocationBehaviorAMD const &>
24240 #endif
reflectVULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD24241       reflect() const VULKAN_HPP_NOEXCEPT
24242     {
24243       return std::tie( sType, pNext, overallocationBehavior );
24244     }
24245 
24246 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
24247     auto operator<=>( DeviceMemoryOverallocationCreateInfoAMD const & ) const = default;
24248 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD24249     bool operator==( DeviceMemoryOverallocationCreateInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
24250     {
24251       return this->reflect() == rhs.reflect();
24252     }
24253 
operator !=VULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD24254     bool operator!=( DeviceMemoryOverallocationCreateInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
24255     {
24256       return this->reflect() != rhs.reflect();
24257     }
24258 #endif
24259 
24260   public:
24261     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceMemoryOverallocationCreateInfoAMD;
24262     const void *                        pNext = {};
24263     VULKAN_HPP_NAMESPACE::MemoryOverallocationBehaviorAMD overallocationBehavior =
24264       VULKAN_HPP_NAMESPACE::MemoryOverallocationBehaviorAMD::eDefault;
24265   };
24266   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD ) ==
24267                               sizeof( VkDeviceMemoryOverallocationCreateInfoAMD ),
24268                             "struct and wrapper have different size!" );
24269   VULKAN_HPP_STATIC_ASSERT(
24270     std::is_standard_layout<VULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD>::value,
24271     "struct wrapper is not a standard layout!" );
24272   VULKAN_HPP_STATIC_ASSERT(
24273     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD>::value,
24274     "DeviceMemoryOverallocationCreateInfoAMD is not nothrow_move_constructible!" );
24275 
24276   template <>
24277   struct CppType<StructureType, StructureType::eDeviceMemoryOverallocationCreateInfoAMD>
24278   {
24279     using Type = DeviceMemoryOverallocationCreateInfoAMD;
24280   };
24281 
24282   struct DeviceMemoryReportCallbackDataEXT
24283   {
24284     using NativeType = VkDeviceMemoryReportCallbackDataEXT;
24285 
24286     static const bool                                  allowDuplicate = false;
24287     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
24288       StructureType::eDeviceMemoryReportCallbackDataEXT;
24289 
24290 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceMemoryReportCallbackDataEXTVULKAN_HPP_NAMESPACE::DeviceMemoryReportCallbackDataEXT24291     VULKAN_HPP_CONSTEXPR DeviceMemoryReportCallbackDataEXT(
24292       VULKAN_HPP_NAMESPACE::DeviceMemoryReportFlagsEXT     flags_ = {},
24293       VULKAN_HPP_NAMESPACE::DeviceMemoryReportEventTypeEXT type_ =
24294         VULKAN_HPP_NAMESPACE::DeviceMemoryReportEventTypeEXT::eAllocate,
24295       uint64_t                         memoryObjectId_ = {},
24296       VULKAN_HPP_NAMESPACE::DeviceSize size_           = {},
24297       VULKAN_HPP_NAMESPACE::ObjectType objectType_     = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown,
24298       uint64_t                         objectHandle_   = {},
24299       uint32_t                         heapIndex_      = {} ) VULKAN_HPP_NOEXCEPT
24300       : flags( flags_ )
24301       , type( type_ )
24302       , memoryObjectId( memoryObjectId_ )
24303       , size( size_ )
24304       , objectType( objectType_ )
24305       , objectHandle( objectHandle_ )
24306       , heapIndex( heapIndex_ )
24307     {}
24308 
24309     VULKAN_HPP_CONSTEXPR
24310       DeviceMemoryReportCallbackDataEXT( DeviceMemoryReportCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24311 
DeviceMemoryReportCallbackDataEXTVULKAN_HPP_NAMESPACE::DeviceMemoryReportCallbackDataEXT24312     DeviceMemoryReportCallbackDataEXT( VkDeviceMemoryReportCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT
24313       : DeviceMemoryReportCallbackDataEXT( *reinterpret_cast<DeviceMemoryReportCallbackDataEXT const *>( &rhs ) )
24314     {}
24315 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
24316 
24317     DeviceMemoryReportCallbackDataEXT &
24318       operator=( DeviceMemoryReportCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24319 
operator =VULKAN_HPP_NAMESPACE::DeviceMemoryReportCallbackDataEXT24320     DeviceMemoryReportCallbackDataEXT & operator=( VkDeviceMemoryReportCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT
24321     {
24322       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceMemoryReportCallbackDataEXT const *>( &rhs );
24323       return *this;
24324     }
24325 
operator VkDeviceMemoryReportCallbackDataEXT const&VULKAN_HPP_NAMESPACE::DeviceMemoryReportCallbackDataEXT24326     explicit operator VkDeviceMemoryReportCallbackDataEXT const &() const VULKAN_HPP_NOEXCEPT
24327     {
24328       return *reinterpret_cast<const VkDeviceMemoryReportCallbackDataEXT *>( this );
24329     }
24330 
operator VkDeviceMemoryReportCallbackDataEXT&VULKAN_HPP_NAMESPACE::DeviceMemoryReportCallbackDataEXT24331     explicit operator VkDeviceMemoryReportCallbackDataEXT &() VULKAN_HPP_NOEXCEPT
24332     {
24333       return *reinterpret_cast<VkDeviceMemoryReportCallbackDataEXT *>( this );
24334     }
24335 
24336 #if 14 <= VULKAN_HPP_CPP_VERSION
24337     auto
24338 #else
24339     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
24340                void * const &,
24341                VULKAN_HPP_NAMESPACE::DeviceMemoryReportFlagsEXT const &,
24342                VULKAN_HPP_NAMESPACE::DeviceMemoryReportEventTypeEXT const &,
24343                uint64_t const &,
24344                VULKAN_HPP_NAMESPACE::DeviceSize const &,
24345                VULKAN_HPP_NAMESPACE::ObjectType const &,
24346                uint64_t const &,
24347                uint32_t const &>
24348 #endif
reflectVULKAN_HPP_NAMESPACE::DeviceMemoryReportCallbackDataEXT24349       reflect() const VULKAN_HPP_NOEXCEPT
24350     {
24351       return std::tie( sType, pNext, flags, type, memoryObjectId, size, objectType, objectHandle, heapIndex );
24352     }
24353 
24354 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
24355     auto operator<=>( DeviceMemoryReportCallbackDataEXT const & ) const = default;
24356 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceMemoryReportCallbackDataEXT24357     bool operator==( DeviceMemoryReportCallbackDataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
24358     {
24359       return this->reflect() == rhs.reflect();
24360     }
24361 
operator !=VULKAN_HPP_NAMESPACE::DeviceMemoryReportCallbackDataEXT24362     bool operator!=( DeviceMemoryReportCallbackDataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
24363     {
24364       return this->reflect() != rhs.reflect();
24365     }
24366 #endif
24367 
24368   public:
24369     VULKAN_HPP_NAMESPACE::StructureType                  sType = StructureType::eDeviceMemoryReportCallbackDataEXT;
24370     void *                                               pNext = {};
24371     VULKAN_HPP_NAMESPACE::DeviceMemoryReportFlagsEXT     flags = {};
24372     VULKAN_HPP_NAMESPACE::DeviceMemoryReportEventTypeEXT type =
24373       VULKAN_HPP_NAMESPACE::DeviceMemoryReportEventTypeEXT::eAllocate;
24374     uint64_t                         memoryObjectId = {};
24375     VULKAN_HPP_NAMESPACE::DeviceSize size           = {};
24376     VULKAN_HPP_NAMESPACE::ObjectType objectType     = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown;
24377     uint64_t                         objectHandle   = {};
24378     uint32_t                         heapIndex      = {};
24379   };
24380   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceMemoryReportCallbackDataEXT ) ==
24381                               sizeof( VkDeviceMemoryReportCallbackDataEXT ),
24382                             "struct and wrapper have different size!" );
24383   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DeviceMemoryReportCallbackDataEXT>::value,
24384                             "struct wrapper is not a standard layout!" );
24385   VULKAN_HPP_STATIC_ASSERT(
24386     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DeviceMemoryReportCallbackDataEXT>::value,
24387     "DeviceMemoryReportCallbackDataEXT is not nothrow_move_constructible!" );
24388 
24389   template <>
24390   struct CppType<StructureType, StructureType::eDeviceMemoryReportCallbackDataEXT>
24391   {
24392     using Type = DeviceMemoryReportCallbackDataEXT;
24393   };
24394 
24395   struct DevicePrivateDataCreateInfoEXT
24396   {
24397     using NativeType = VkDevicePrivateDataCreateInfoEXT;
24398 
24399     static const bool                                  allowDuplicate = true;
24400     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDevicePrivateDataCreateInfoEXT;
24401 
24402 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
24403     VULKAN_HPP_CONSTEXPR
DevicePrivateDataCreateInfoEXTVULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfoEXT24404       DevicePrivateDataCreateInfoEXT( uint32_t privateDataSlotRequestCount_ = {} ) VULKAN_HPP_NOEXCEPT
24405       : privateDataSlotRequestCount( privateDataSlotRequestCount_ )
24406     {}
24407 
24408     VULKAN_HPP_CONSTEXPR
24409       DevicePrivateDataCreateInfoEXT( DevicePrivateDataCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24410 
DevicePrivateDataCreateInfoEXTVULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfoEXT24411     DevicePrivateDataCreateInfoEXT( VkDevicePrivateDataCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
24412       : DevicePrivateDataCreateInfoEXT( *reinterpret_cast<DevicePrivateDataCreateInfoEXT const *>( &rhs ) )
24413     {}
24414 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
24415 
24416     DevicePrivateDataCreateInfoEXT &
24417       operator=( DevicePrivateDataCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24418 
operator =VULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfoEXT24419     DevicePrivateDataCreateInfoEXT & operator=( VkDevicePrivateDataCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
24420     {
24421       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfoEXT const *>( &rhs );
24422       return *this;
24423     }
24424 
24425 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfoEXT24426     VULKAN_HPP_CONSTEXPR_14 DevicePrivateDataCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
24427     {
24428       pNext = pNext_;
24429       return *this;
24430     }
24431 
24432     VULKAN_HPP_CONSTEXPR_14 DevicePrivateDataCreateInfoEXT &
setPrivateDataSlotRequestCountVULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfoEXT24433                             setPrivateDataSlotRequestCount( uint32_t privateDataSlotRequestCount_ ) VULKAN_HPP_NOEXCEPT
24434     {
24435       privateDataSlotRequestCount = privateDataSlotRequestCount_;
24436       return *this;
24437     }
24438 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
24439 
operator VkDevicePrivateDataCreateInfoEXT const&VULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfoEXT24440     explicit operator VkDevicePrivateDataCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
24441     {
24442       return *reinterpret_cast<const VkDevicePrivateDataCreateInfoEXT *>( this );
24443     }
24444 
operator VkDevicePrivateDataCreateInfoEXT&VULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfoEXT24445     explicit operator VkDevicePrivateDataCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
24446     {
24447       return *reinterpret_cast<VkDevicePrivateDataCreateInfoEXT *>( this );
24448     }
24449 
24450 #if 14 <= VULKAN_HPP_CPP_VERSION
24451     auto
24452 #else
24453     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &>
24454 #endif
reflectVULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfoEXT24455       reflect() const VULKAN_HPP_NOEXCEPT
24456     {
24457       return std::tie( sType, pNext, privateDataSlotRequestCount );
24458     }
24459 
24460 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
24461     auto operator<=>( DevicePrivateDataCreateInfoEXT const & ) const = default;
24462 #else
operator ==VULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfoEXT24463     bool operator==( DevicePrivateDataCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
24464     {
24465       return this->reflect() == rhs.reflect();
24466     }
24467 
operator !=VULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfoEXT24468     bool operator!=( DevicePrivateDataCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
24469     {
24470       return this->reflect() != rhs.reflect();
24471     }
24472 #endif
24473 
24474   public:
24475     VULKAN_HPP_NAMESPACE::StructureType sType                       = StructureType::eDevicePrivateDataCreateInfoEXT;
24476     const void *                        pNext                       = {};
24477     uint32_t                            privateDataSlotRequestCount = {};
24478   };
24479   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfoEXT ) ==
24480                               sizeof( VkDevicePrivateDataCreateInfoEXT ),
24481                             "struct and wrapper have different size!" );
24482   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfoEXT>::value,
24483                             "struct wrapper is not a standard layout!" );
24484   VULKAN_HPP_STATIC_ASSERT(
24485     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfoEXT>::value,
24486     "DevicePrivateDataCreateInfoEXT is not nothrow_move_constructible!" );
24487 
24488   template <>
24489   struct CppType<StructureType, StructureType::eDevicePrivateDataCreateInfoEXT>
24490   {
24491     using Type = DevicePrivateDataCreateInfoEXT;
24492   };
24493 
24494   struct DeviceQueueGlobalPriorityCreateInfoEXT
24495   {
24496     using NativeType = VkDeviceQueueGlobalPriorityCreateInfoEXT;
24497 
24498     static const bool                                  allowDuplicate = false;
24499     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
24500       StructureType::eDeviceQueueGlobalPriorityCreateInfoEXT;
24501 
24502 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
24503     VULKAN_HPP_CONSTEXPR
DeviceQueueGlobalPriorityCreateInfoEXTVULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfoEXT24504       DeviceQueueGlobalPriorityCreateInfoEXT( VULKAN_HPP_NAMESPACE::QueueGlobalPriorityEXT globalPriority_ =
24505                                                 VULKAN_HPP_NAMESPACE::QueueGlobalPriorityEXT::eLow ) VULKAN_HPP_NOEXCEPT
24506       : globalPriority( globalPriority_ )
24507     {}
24508 
24509     VULKAN_HPP_CONSTEXPR DeviceQueueGlobalPriorityCreateInfoEXT( DeviceQueueGlobalPriorityCreateInfoEXT const & rhs )
24510       VULKAN_HPP_NOEXCEPT = default;
24511 
DeviceQueueGlobalPriorityCreateInfoEXTVULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfoEXT24512     DeviceQueueGlobalPriorityCreateInfoEXT( VkDeviceQueueGlobalPriorityCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
24513       : DeviceQueueGlobalPriorityCreateInfoEXT(
24514           *reinterpret_cast<DeviceQueueGlobalPriorityCreateInfoEXT const *>( &rhs ) )
24515     {}
24516 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
24517 
24518     DeviceQueueGlobalPriorityCreateInfoEXT &
24519       operator=( DeviceQueueGlobalPriorityCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24520 
24521     DeviceQueueGlobalPriorityCreateInfoEXT &
operator =VULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfoEXT24522       operator=( VkDeviceQueueGlobalPriorityCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
24523     {
24524       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfoEXT const *>( &rhs );
24525       return *this;
24526     }
24527 
24528 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfoEXT24529     VULKAN_HPP_CONSTEXPR_14 DeviceQueueGlobalPriorityCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
24530     {
24531       pNext = pNext_;
24532       return *this;
24533     }
24534 
24535     VULKAN_HPP_CONSTEXPR_14 DeviceQueueGlobalPriorityCreateInfoEXT &
setGlobalPriorityVULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfoEXT24536       setGlobalPriority( VULKAN_HPP_NAMESPACE::QueueGlobalPriorityEXT globalPriority_ ) VULKAN_HPP_NOEXCEPT
24537     {
24538       globalPriority = globalPriority_;
24539       return *this;
24540     }
24541 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
24542 
operator VkDeviceQueueGlobalPriorityCreateInfoEXT const&VULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfoEXT24543     explicit operator VkDeviceQueueGlobalPriorityCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
24544     {
24545       return *reinterpret_cast<const VkDeviceQueueGlobalPriorityCreateInfoEXT *>( this );
24546     }
24547 
operator VkDeviceQueueGlobalPriorityCreateInfoEXT&VULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfoEXT24548     explicit operator VkDeviceQueueGlobalPriorityCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
24549     {
24550       return *reinterpret_cast<VkDeviceQueueGlobalPriorityCreateInfoEXT *>( this );
24551     }
24552 
24553 #if 14 <= VULKAN_HPP_CPP_VERSION
24554     auto
24555 #else
24556     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
24557                const void * const &,
24558                VULKAN_HPP_NAMESPACE::QueueGlobalPriorityEXT const &>
24559 #endif
reflectVULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfoEXT24560       reflect() const VULKAN_HPP_NOEXCEPT
24561     {
24562       return std::tie( sType, pNext, globalPriority );
24563     }
24564 
24565 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
24566     auto operator<=>( DeviceQueueGlobalPriorityCreateInfoEXT const & ) const = default;
24567 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfoEXT24568     bool operator==( DeviceQueueGlobalPriorityCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
24569     {
24570       return this->reflect() == rhs.reflect();
24571     }
24572 
operator !=VULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfoEXT24573     bool operator!=( DeviceQueueGlobalPriorityCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
24574     {
24575       return this->reflect() != rhs.reflect();
24576     }
24577 #endif
24578 
24579   public:
24580     VULKAN_HPP_NAMESPACE::StructureType          sType = StructureType::eDeviceQueueGlobalPriorityCreateInfoEXT;
24581     const void *                                 pNext = {};
24582     VULKAN_HPP_NAMESPACE::QueueGlobalPriorityEXT globalPriority = VULKAN_HPP_NAMESPACE::QueueGlobalPriorityEXT::eLow;
24583   };
24584   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfoEXT ) ==
24585                               sizeof( VkDeviceQueueGlobalPriorityCreateInfoEXT ),
24586                             "struct and wrapper have different size!" );
24587   VULKAN_HPP_STATIC_ASSERT(
24588     std::is_standard_layout<VULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfoEXT>::value,
24589     "struct wrapper is not a standard layout!" );
24590   VULKAN_HPP_STATIC_ASSERT(
24591     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfoEXT>::value,
24592     "DeviceQueueGlobalPriorityCreateInfoEXT is not nothrow_move_constructible!" );
24593 
24594   template <>
24595   struct CppType<StructureType, StructureType::eDeviceQueueGlobalPriorityCreateInfoEXT>
24596   {
24597     using Type = DeviceQueueGlobalPriorityCreateInfoEXT;
24598   };
24599 
24600   struct DeviceQueueInfo2
24601   {
24602     using NativeType = VkDeviceQueueInfo2;
24603 
24604     static const bool                                  allowDuplicate = false;
24605     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceQueueInfo2;
24606 
24607 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceQueueInfo2VULKAN_HPP_NAMESPACE::DeviceQueueInfo224608     VULKAN_HPP_CONSTEXPR DeviceQueueInfo2( VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags_            = {},
24609                                            uint32_t                                     queueFamilyIndex_ = {},
24610                                            uint32_t queueIndex_ = {} ) VULKAN_HPP_NOEXCEPT
24611       : flags( flags_ )
24612       , queueFamilyIndex( queueFamilyIndex_ )
24613       , queueIndex( queueIndex_ )
24614     {}
24615 
24616     VULKAN_HPP_CONSTEXPR DeviceQueueInfo2( DeviceQueueInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24617 
DeviceQueueInfo2VULKAN_HPP_NAMESPACE::DeviceQueueInfo224618     DeviceQueueInfo2( VkDeviceQueueInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
24619       : DeviceQueueInfo2( *reinterpret_cast<DeviceQueueInfo2 const *>( &rhs ) )
24620     {}
24621 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
24622 
24623     DeviceQueueInfo2 & operator=( DeviceQueueInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24624 
operator =VULKAN_HPP_NAMESPACE::DeviceQueueInfo224625     DeviceQueueInfo2 & operator=( VkDeviceQueueInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
24626     {
24627       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceQueueInfo2 const *>( &rhs );
24628       return *this;
24629     }
24630 
24631 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceQueueInfo224632     VULKAN_HPP_CONSTEXPR_14 DeviceQueueInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
24633     {
24634       pNext = pNext_;
24635       return *this;
24636     }
24637 
24638     VULKAN_HPP_CONSTEXPR_14 DeviceQueueInfo2 &
setFlagsVULKAN_HPP_NAMESPACE::DeviceQueueInfo224639                             setFlags( VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
24640     {
24641       flags = flags_;
24642       return *this;
24643     }
24644 
setQueueFamilyIndexVULKAN_HPP_NAMESPACE::DeviceQueueInfo224645     VULKAN_HPP_CONSTEXPR_14 DeviceQueueInfo2 & setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
24646     {
24647       queueFamilyIndex = queueFamilyIndex_;
24648       return *this;
24649     }
24650 
setQueueIndexVULKAN_HPP_NAMESPACE::DeviceQueueInfo224651     VULKAN_HPP_CONSTEXPR_14 DeviceQueueInfo2 & setQueueIndex( uint32_t queueIndex_ ) VULKAN_HPP_NOEXCEPT
24652     {
24653       queueIndex = queueIndex_;
24654       return *this;
24655     }
24656 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
24657 
operator VkDeviceQueueInfo2 const&VULKAN_HPP_NAMESPACE::DeviceQueueInfo224658     explicit operator VkDeviceQueueInfo2 const &() const VULKAN_HPP_NOEXCEPT
24659     {
24660       return *reinterpret_cast<const VkDeviceQueueInfo2 *>( this );
24661     }
24662 
operator VkDeviceQueueInfo2&VULKAN_HPP_NAMESPACE::DeviceQueueInfo224663     explicit operator VkDeviceQueueInfo2 &() VULKAN_HPP_NOEXCEPT
24664     {
24665       return *reinterpret_cast<VkDeviceQueueInfo2 *>( this );
24666     }
24667 
24668 #if 14 <= VULKAN_HPP_CPP_VERSION
24669     auto
24670 #else
24671     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
24672                const void * const &,
24673                VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags const &,
24674                uint32_t const &,
24675                uint32_t const &>
24676 #endif
reflectVULKAN_HPP_NAMESPACE::DeviceQueueInfo224677       reflect() const VULKAN_HPP_NOEXCEPT
24678     {
24679       return std::tie( sType, pNext, flags, queueFamilyIndex, queueIndex );
24680     }
24681 
24682 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
24683     auto operator<=>( DeviceQueueInfo2 const & ) const = default;
24684 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceQueueInfo224685     bool operator==( DeviceQueueInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
24686     {
24687       return this->reflect() == rhs.reflect();
24688     }
24689 
operator !=VULKAN_HPP_NAMESPACE::DeviceQueueInfo224690     bool operator!=( DeviceQueueInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
24691     {
24692       return this->reflect() != rhs.reflect();
24693     }
24694 #endif
24695 
24696   public:
24697     VULKAN_HPP_NAMESPACE::StructureType          sType            = StructureType::eDeviceQueueInfo2;
24698     const void *                                 pNext            = {};
24699     VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags            = {};
24700     uint32_t                                     queueFamilyIndex = {};
24701     uint32_t                                     queueIndex       = {};
24702   };
24703   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceQueueInfo2 ) == sizeof( VkDeviceQueueInfo2 ),
24704                             "struct and wrapper have different size!" );
24705   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DeviceQueueInfo2>::value,
24706                             "struct wrapper is not a standard layout!" );
24707   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DeviceQueueInfo2>::value,
24708                             "DeviceQueueInfo2 is not nothrow_move_constructible!" );
24709 
24710   template <>
24711   struct CppType<StructureType, StructureType::eDeviceQueueInfo2>
24712   {
24713     using Type = DeviceQueueInfo2;
24714   };
24715 
24716 #if defined( VK_USE_PLATFORM_DIRECTFB_EXT )
24717   struct DirectFBSurfaceCreateInfoEXT
24718   {
24719     using NativeType = VkDirectFBSurfaceCreateInfoEXT;
24720 
24721     static const bool                                  allowDuplicate = false;
24722     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDirectfbSurfaceCreateInfoEXT;
24723 
24724 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DirectFBSurfaceCreateInfoEXTVULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT24725     VULKAN_HPP_CONSTEXPR DirectFBSurfaceCreateInfoEXT( VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateFlagsEXT flags_ = {},
24726                                                        IDirectFB *                                         dfb_   = {},
24727                                                        IDirectFBSurface * surface_ = {} ) VULKAN_HPP_NOEXCEPT
24728       : flags( flags_ )
24729       , dfb( dfb_ )
24730       , surface( surface_ )
24731     {}
24732 
24733     VULKAN_HPP_CONSTEXPR
24734       DirectFBSurfaceCreateInfoEXT( DirectFBSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24735 
DirectFBSurfaceCreateInfoEXTVULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT24736     DirectFBSurfaceCreateInfoEXT( VkDirectFBSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
24737       : DirectFBSurfaceCreateInfoEXT( *reinterpret_cast<DirectFBSurfaceCreateInfoEXT const *>( &rhs ) )
24738     {}
24739 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
24740 
24741     DirectFBSurfaceCreateInfoEXT & operator=( DirectFBSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24742 
operator =VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT24743     DirectFBSurfaceCreateInfoEXT & operator=( VkDirectFBSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
24744     {
24745       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT const *>( &rhs );
24746       return *this;
24747     }
24748 
24749 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT24750     VULKAN_HPP_CONSTEXPR_14 DirectFBSurfaceCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
24751     {
24752       pNext = pNext_;
24753       return *this;
24754     }
24755 
24756     VULKAN_HPP_CONSTEXPR_14 DirectFBSurfaceCreateInfoEXT &
setFlagsVULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT24757                             setFlags( VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
24758     {
24759       flags = flags_;
24760       return *this;
24761     }
24762 
setDfbVULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT24763     VULKAN_HPP_CONSTEXPR_14 DirectFBSurfaceCreateInfoEXT & setDfb( IDirectFB * dfb_ ) VULKAN_HPP_NOEXCEPT
24764     {
24765       dfb = dfb_;
24766       return *this;
24767     }
24768 
setSurfaceVULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT24769     VULKAN_HPP_CONSTEXPR_14 DirectFBSurfaceCreateInfoEXT & setSurface( IDirectFBSurface * surface_ ) VULKAN_HPP_NOEXCEPT
24770     {
24771       surface = surface_;
24772       return *this;
24773     }
24774 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
24775 
operator VkDirectFBSurfaceCreateInfoEXT const&VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT24776     explicit operator VkDirectFBSurfaceCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
24777     {
24778       return *reinterpret_cast<const VkDirectFBSurfaceCreateInfoEXT *>( this );
24779     }
24780 
operator VkDirectFBSurfaceCreateInfoEXT&VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT24781     explicit operator VkDirectFBSurfaceCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
24782     {
24783       return *reinterpret_cast<VkDirectFBSurfaceCreateInfoEXT *>( this );
24784     }
24785 
24786 #  if 14 <= VULKAN_HPP_CPP_VERSION
24787     auto
24788 #  else
24789     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
24790                const void * const &,
24791                VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateFlagsEXT const &,
24792                IDirectFB * const &,
24793                IDirectFBSurface * const &>
24794 #  endif
reflectVULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT24795       reflect() const VULKAN_HPP_NOEXCEPT
24796     {
24797       return std::tie( sType, pNext, flags, dfb, surface );
24798     }
24799 
24800 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
24801     auto operator<=>( DirectFBSurfaceCreateInfoEXT const & ) const = default;
24802 #  else
operator ==VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT24803     bool operator==( DirectFBSurfaceCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
24804     {
24805       return this->reflect() == rhs.reflect();
24806     }
24807 
operator !=VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT24808     bool operator!=( DirectFBSurfaceCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
24809     {
24810       return this->reflect() != rhs.reflect();
24811     }
24812 #  endif
24813 
24814   public:
24815     VULKAN_HPP_NAMESPACE::StructureType                 sType   = StructureType::eDirectfbSurfaceCreateInfoEXT;
24816     const void *                                        pNext   = {};
24817     VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateFlagsEXT flags   = {};
24818     IDirectFB *                                         dfb     = {};
24819     IDirectFBSurface *                                  surface = {};
24820   };
24821   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT ) ==
24822                               sizeof( VkDirectFBSurfaceCreateInfoEXT ),
24823                             "struct and wrapper have different size!" );
24824   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT>::value,
24825                             "struct wrapper is not a standard layout!" );
24826   VULKAN_HPP_STATIC_ASSERT(
24827     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT>::value,
24828     "DirectFBSurfaceCreateInfoEXT is not nothrow_move_constructible!" );
24829 
24830   template <>
24831   struct CppType<StructureType, StructureType::eDirectfbSurfaceCreateInfoEXT>
24832   {
24833     using Type = DirectFBSurfaceCreateInfoEXT;
24834   };
24835 #endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/
24836 
24837   struct DispatchIndirectCommand
24838   {
24839     using NativeType = VkDispatchIndirectCommand;
24840 
24841 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
24842     VULKAN_HPP_CONSTEXPR
DispatchIndirectCommandVULKAN_HPP_NAMESPACE::DispatchIndirectCommand24843       DispatchIndirectCommand( uint32_t x_ = {}, uint32_t y_ = {}, uint32_t z_ = {} ) VULKAN_HPP_NOEXCEPT
24844       : x( x_ )
24845       , y( y_ )
24846       , z( z_ )
24847     {}
24848 
24849     VULKAN_HPP_CONSTEXPR DispatchIndirectCommand( DispatchIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24850 
DispatchIndirectCommandVULKAN_HPP_NAMESPACE::DispatchIndirectCommand24851     DispatchIndirectCommand( VkDispatchIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT
24852       : DispatchIndirectCommand( *reinterpret_cast<DispatchIndirectCommand const *>( &rhs ) )
24853     {}
24854 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
24855 
24856     DispatchIndirectCommand & operator=( DispatchIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24857 
operator =VULKAN_HPP_NAMESPACE::DispatchIndirectCommand24858     DispatchIndirectCommand & operator=( VkDispatchIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT
24859     {
24860       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DispatchIndirectCommand const *>( &rhs );
24861       return *this;
24862     }
24863 
24864 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setXVULKAN_HPP_NAMESPACE::DispatchIndirectCommand24865     VULKAN_HPP_CONSTEXPR_14 DispatchIndirectCommand & setX( uint32_t x_ ) VULKAN_HPP_NOEXCEPT
24866     {
24867       x = x_;
24868       return *this;
24869     }
24870 
setYVULKAN_HPP_NAMESPACE::DispatchIndirectCommand24871     VULKAN_HPP_CONSTEXPR_14 DispatchIndirectCommand & setY( uint32_t y_ ) VULKAN_HPP_NOEXCEPT
24872     {
24873       y = y_;
24874       return *this;
24875     }
24876 
setZVULKAN_HPP_NAMESPACE::DispatchIndirectCommand24877     VULKAN_HPP_CONSTEXPR_14 DispatchIndirectCommand & setZ( uint32_t z_ ) VULKAN_HPP_NOEXCEPT
24878     {
24879       z = z_;
24880       return *this;
24881     }
24882 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
24883 
operator VkDispatchIndirectCommand const&VULKAN_HPP_NAMESPACE::DispatchIndirectCommand24884     explicit operator VkDispatchIndirectCommand const &() const VULKAN_HPP_NOEXCEPT
24885     {
24886       return *reinterpret_cast<const VkDispatchIndirectCommand *>( this );
24887     }
24888 
operator VkDispatchIndirectCommand&VULKAN_HPP_NAMESPACE::DispatchIndirectCommand24889     explicit operator VkDispatchIndirectCommand &() VULKAN_HPP_NOEXCEPT
24890     {
24891       return *reinterpret_cast<VkDispatchIndirectCommand *>( this );
24892     }
24893 
24894 #if 14 <= VULKAN_HPP_CPP_VERSION
24895     auto
24896 #else
24897     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &>
24898 #endif
reflectVULKAN_HPP_NAMESPACE::DispatchIndirectCommand24899       reflect() const VULKAN_HPP_NOEXCEPT
24900     {
24901       return std::tie( x, y, z );
24902     }
24903 
24904 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
24905     auto operator<=>( DispatchIndirectCommand const & ) const = default;
24906 #else
operator ==VULKAN_HPP_NAMESPACE::DispatchIndirectCommand24907     bool operator==( DispatchIndirectCommand const & rhs ) const VULKAN_HPP_NOEXCEPT
24908     {
24909       return this->reflect() == rhs.reflect();
24910     }
24911 
operator !=VULKAN_HPP_NAMESPACE::DispatchIndirectCommand24912     bool operator!=( DispatchIndirectCommand const & rhs ) const VULKAN_HPP_NOEXCEPT
24913     {
24914       return this->reflect() != rhs.reflect();
24915     }
24916 #endif
24917 
24918   public:
24919     uint32_t x = {};
24920     uint32_t y = {};
24921     uint32_t z = {};
24922   };
24923   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DispatchIndirectCommand ) ==
24924                               sizeof( VkDispatchIndirectCommand ),
24925                             "struct and wrapper have different size!" );
24926   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DispatchIndirectCommand>::value,
24927                             "struct wrapper is not a standard layout!" );
24928   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DispatchIndirectCommand>::value,
24929                             "DispatchIndirectCommand is not nothrow_move_constructible!" );
24930 
24931   struct DisplayEventInfoEXT
24932   {
24933     using NativeType = VkDisplayEventInfoEXT;
24934 
24935     static const bool                                  allowDuplicate = false;
24936     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDisplayEventInfoEXT;
24937 
24938 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
24939     VULKAN_HPP_CONSTEXPR
DisplayEventInfoEXTVULKAN_HPP_NAMESPACE::DisplayEventInfoEXT24940       DisplayEventInfoEXT( VULKAN_HPP_NAMESPACE::DisplayEventTypeEXT displayEvent_ =
24941                              VULKAN_HPP_NAMESPACE::DisplayEventTypeEXT::eFirstPixelOut ) VULKAN_HPP_NOEXCEPT
24942       : displayEvent( displayEvent_ )
24943     {}
24944 
24945     VULKAN_HPP_CONSTEXPR DisplayEventInfoEXT( DisplayEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24946 
DisplayEventInfoEXTVULKAN_HPP_NAMESPACE::DisplayEventInfoEXT24947     DisplayEventInfoEXT( VkDisplayEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
24948       : DisplayEventInfoEXT( *reinterpret_cast<DisplayEventInfoEXT const *>( &rhs ) )
24949     {}
24950 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
24951 
24952     DisplayEventInfoEXT & operator=( DisplayEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24953 
operator =VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT24954     DisplayEventInfoEXT & operator=( VkDisplayEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
24955     {
24956       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT const *>( &rhs );
24957       return *this;
24958     }
24959 
24960 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DisplayEventInfoEXT24961     VULKAN_HPP_CONSTEXPR_14 DisplayEventInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
24962     {
24963       pNext = pNext_;
24964       return *this;
24965     }
24966 
24967     VULKAN_HPP_CONSTEXPR_14 DisplayEventInfoEXT &
setDisplayEventVULKAN_HPP_NAMESPACE::DisplayEventInfoEXT24968       setDisplayEvent( VULKAN_HPP_NAMESPACE::DisplayEventTypeEXT displayEvent_ ) VULKAN_HPP_NOEXCEPT
24969     {
24970       displayEvent = displayEvent_;
24971       return *this;
24972     }
24973 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
24974 
operator VkDisplayEventInfoEXT const&VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT24975     explicit operator VkDisplayEventInfoEXT const &() const VULKAN_HPP_NOEXCEPT
24976     {
24977       return *reinterpret_cast<const VkDisplayEventInfoEXT *>( this );
24978     }
24979 
operator VkDisplayEventInfoEXT&VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT24980     explicit operator VkDisplayEventInfoEXT &() VULKAN_HPP_NOEXCEPT
24981     {
24982       return *reinterpret_cast<VkDisplayEventInfoEXT *>( this );
24983     }
24984 
24985 #if 14 <= VULKAN_HPP_CPP_VERSION
24986     auto
24987 #else
24988     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
24989                const void * const &,
24990                VULKAN_HPP_NAMESPACE::DisplayEventTypeEXT const &>
24991 #endif
reflectVULKAN_HPP_NAMESPACE::DisplayEventInfoEXT24992       reflect() const VULKAN_HPP_NOEXCEPT
24993     {
24994       return std::tie( sType, pNext, displayEvent );
24995     }
24996 
24997 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
24998     auto operator<=>( DisplayEventInfoEXT const & ) const = default;
24999 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT25000     bool operator==( DisplayEventInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
25001     {
25002       return this->reflect() == rhs.reflect();
25003     }
25004 
operator !=VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT25005     bool operator!=( DisplayEventInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
25006     {
25007       return this->reflect() != rhs.reflect();
25008     }
25009 #endif
25010 
25011   public:
25012     VULKAN_HPP_NAMESPACE::StructureType       sType        = StructureType::eDisplayEventInfoEXT;
25013     const void *                              pNext        = {};
25014     VULKAN_HPP_NAMESPACE::DisplayEventTypeEXT displayEvent = VULKAN_HPP_NAMESPACE::DisplayEventTypeEXT::eFirstPixelOut;
25015   };
25016   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT ) == sizeof( VkDisplayEventInfoEXT ),
25017                             "struct and wrapper have different size!" );
25018   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT>::value,
25019                             "struct wrapper is not a standard layout!" );
25020   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT>::value,
25021                             "DisplayEventInfoEXT is not nothrow_move_constructible!" );
25022 
25023   template <>
25024   struct CppType<StructureType, StructureType::eDisplayEventInfoEXT>
25025   {
25026     using Type = DisplayEventInfoEXT;
25027   };
25028 
25029   struct DisplayModeParametersKHR
25030   {
25031     using NativeType = VkDisplayModeParametersKHR;
25032 
25033 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayModeParametersKHRVULKAN_HPP_NAMESPACE::DisplayModeParametersKHR25034     VULKAN_HPP_CONSTEXPR DisplayModeParametersKHR( VULKAN_HPP_NAMESPACE::Extent2D visibleRegion_ = {},
25035                                                    uint32_t refreshRate_ = {} ) VULKAN_HPP_NOEXCEPT
25036       : visibleRegion( visibleRegion_ )
25037       , refreshRate( refreshRate_ )
25038     {}
25039 
25040     VULKAN_HPP_CONSTEXPR DisplayModeParametersKHR( DisplayModeParametersKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25041 
DisplayModeParametersKHRVULKAN_HPP_NAMESPACE::DisplayModeParametersKHR25042     DisplayModeParametersKHR( VkDisplayModeParametersKHR const & rhs ) VULKAN_HPP_NOEXCEPT
25043       : DisplayModeParametersKHR( *reinterpret_cast<DisplayModeParametersKHR const *>( &rhs ) )
25044     {}
25045 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
25046 
25047     DisplayModeParametersKHR & operator=( DisplayModeParametersKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25048 
operator =VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR25049     DisplayModeParametersKHR & operator=( VkDisplayModeParametersKHR const & rhs ) VULKAN_HPP_NOEXCEPT
25050     {
25051       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR const *>( &rhs );
25052       return *this;
25053     }
25054 
25055 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
25056     VULKAN_HPP_CONSTEXPR_14 DisplayModeParametersKHR &
setVisibleRegionVULKAN_HPP_NAMESPACE::DisplayModeParametersKHR25057       setVisibleRegion( VULKAN_HPP_NAMESPACE::Extent2D const & visibleRegion_ ) VULKAN_HPP_NOEXCEPT
25058     {
25059       visibleRegion = visibleRegion_;
25060       return *this;
25061     }
25062 
setRefreshRateVULKAN_HPP_NAMESPACE::DisplayModeParametersKHR25063     VULKAN_HPP_CONSTEXPR_14 DisplayModeParametersKHR & setRefreshRate( uint32_t refreshRate_ ) VULKAN_HPP_NOEXCEPT
25064     {
25065       refreshRate = refreshRate_;
25066       return *this;
25067     }
25068 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
25069 
operator VkDisplayModeParametersKHR const&VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR25070     explicit operator VkDisplayModeParametersKHR const &() const VULKAN_HPP_NOEXCEPT
25071     {
25072       return *reinterpret_cast<const VkDisplayModeParametersKHR *>( this );
25073     }
25074 
operator VkDisplayModeParametersKHR&VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR25075     explicit operator VkDisplayModeParametersKHR &() VULKAN_HPP_NOEXCEPT
25076     {
25077       return *reinterpret_cast<VkDisplayModeParametersKHR *>( this );
25078     }
25079 
25080 #if 14 <= VULKAN_HPP_CPP_VERSION
25081     auto
25082 #else
25083     std::tuple<VULKAN_HPP_NAMESPACE::Extent2D const &, uint32_t const &>
25084 #endif
reflectVULKAN_HPP_NAMESPACE::DisplayModeParametersKHR25085       reflect() const VULKAN_HPP_NOEXCEPT
25086     {
25087       return std::tie( visibleRegion, refreshRate );
25088     }
25089 
25090 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
25091     auto operator<=>( DisplayModeParametersKHR const & ) const = default;
25092 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR25093     bool operator==( DisplayModeParametersKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
25094     {
25095       return this->reflect() == rhs.reflect();
25096     }
25097 
operator !=VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR25098     bool operator!=( DisplayModeParametersKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
25099     {
25100       return this->reflect() != rhs.reflect();
25101     }
25102 #endif
25103 
25104   public:
25105     VULKAN_HPP_NAMESPACE::Extent2D visibleRegion = {};
25106     uint32_t                       refreshRate   = {};
25107   };
25108   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR ) ==
25109                               sizeof( VkDisplayModeParametersKHR ),
25110                             "struct and wrapper have different size!" );
25111   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR>::value,
25112                             "struct wrapper is not a standard layout!" );
25113   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR>::value,
25114                             "DisplayModeParametersKHR is not nothrow_move_constructible!" );
25115 
25116   struct DisplayModeCreateInfoKHR
25117   {
25118     using NativeType = VkDisplayModeCreateInfoKHR;
25119 
25120     static const bool                                  allowDuplicate = false;
25121     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDisplayModeCreateInfoKHR;
25122 
25123 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
25124     VULKAN_HPP_CONSTEXPR
DisplayModeCreateInfoKHRVULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR25125       DisplayModeCreateInfoKHR( VULKAN_HPP_NAMESPACE::DisplayModeCreateFlagsKHR flags_      = {},
25126                                 VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR  parameters_ = {} ) VULKAN_HPP_NOEXCEPT
25127       : flags( flags_ )
25128       , parameters( parameters_ )
25129     {}
25130 
25131     VULKAN_HPP_CONSTEXPR DisplayModeCreateInfoKHR( DisplayModeCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25132 
DisplayModeCreateInfoKHRVULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR25133     DisplayModeCreateInfoKHR( VkDisplayModeCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
25134       : DisplayModeCreateInfoKHR( *reinterpret_cast<DisplayModeCreateInfoKHR const *>( &rhs ) )
25135     {}
25136 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
25137 
25138     DisplayModeCreateInfoKHR & operator=( DisplayModeCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25139 
operator =VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR25140     DisplayModeCreateInfoKHR & operator=( VkDisplayModeCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
25141     {
25142       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR const *>( &rhs );
25143       return *this;
25144     }
25145 
25146 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR25147     VULKAN_HPP_CONSTEXPR_14 DisplayModeCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
25148     {
25149       pNext = pNext_;
25150       return *this;
25151     }
25152 
25153     VULKAN_HPP_CONSTEXPR_14 DisplayModeCreateInfoKHR &
setFlagsVULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR25154                             setFlags( VULKAN_HPP_NAMESPACE::DisplayModeCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
25155     {
25156       flags = flags_;
25157       return *this;
25158     }
25159 
25160     VULKAN_HPP_CONSTEXPR_14 DisplayModeCreateInfoKHR &
setParametersVULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR25161       setParameters( VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR const & parameters_ ) VULKAN_HPP_NOEXCEPT
25162     {
25163       parameters = parameters_;
25164       return *this;
25165     }
25166 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
25167 
operator VkDisplayModeCreateInfoKHR const&VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR25168     explicit operator VkDisplayModeCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
25169     {
25170       return *reinterpret_cast<const VkDisplayModeCreateInfoKHR *>( this );
25171     }
25172 
operator VkDisplayModeCreateInfoKHR&VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR25173     explicit operator VkDisplayModeCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
25174     {
25175       return *reinterpret_cast<VkDisplayModeCreateInfoKHR *>( this );
25176     }
25177 
25178 #if 14 <= VULKAN_HPP_CPP_VERSION
25179     auto
25180 #else
25181     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
25182                const void * const &,
25183                VULKAN_HPP_NAMESPACE::DisplayModeCreateFlagsKHR const &,
25184                VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR const &>
25185 #endif
reflectVULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR25186       reflect() const VULKAN_HPP_NOEXCEPT
25187     {
25188       return std::tie( sType, pNext, flags, parameters );
25189     }
25190 
25191 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
25192     auto operator<=>( DisplayModeCreateInfoKHR const & ) const = default;
25193 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR25194     bool operator==( DisplayModeCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
25195     {
25196       return this->reflect() == rhs.reflect();
25197     }
25198 
operator !=VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR25199     bool operator!=( DisplayModeCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
25200     {
25201       return this->reflect() != rhs.reflect();
25202     }
25203 #endif
25204 
25205   public:
25206     VULKAN_HPP_NAMESPACE::StructureType             sType      = StructureType::eDisplayModeCreateInfoKHR;
25207     const void *                                    pNext      = {};
25208     VULKAN_HPP_NAMESPACE::DisplayModeCreateFlagsKHR flags      = {};
25209     VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR  parameters = {};
25210   };
25211   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR ) ==
25212                               sizeof( VkDisplayModeCreateInfoKHR ),
25213                             "struct and wrapper have different size!" );
25214   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR>::value,
25215                             "struct wrapper is not a standard layout!" );
25216   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR>::value,
25217                             "DisplayModeCreateInfoKHR is not nothrow_move_constructible!" );
25218 
25219   template <>
25220   struct CppType<StructureType, StructureType::eDisplayModeCreateInfoKHR>
25221   {
25222     using Type = DisplayModeCreateInfoKHR;
25223   };
25224 
25225   struct DisplayModePropertiesKHR
25226   {
25227     using NativeType = VkDisplayModePropertiesKHR;
25228 
25229 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
25230     VULKAN_HPP_CONSTEXPR
DisplayModePropertiesKHRVULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR25231       DisplayModePropertiesKHR( VULKAN_HPP_NAMESPACE::DisplayModeKHR           displayMode_ = {},
25232                                 VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR parameters_  = {} ) VULKAN_HPP_NOEXCEPT
25233       : displayMode( displayMode_ )
25234       , parameters( parameters_ )
25235     {}
25236 
25237     VULKAN_HPP_CONSTEXPR DisplayModePropertiesKHR( DisplayModePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25238 
DisplayModePropertiesKHRVULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR25239     DisplayModePropertiesKHR( VkDisplayModePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
25240       : DisplayModePropertiesKHR( *reinterpret_cast<DisplayModePropertiesKHR const *>( &rhs ) )
25241     {}
25242 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
25243 
25244     DisplayModePropertiesKHR & operator=( DisplayModePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25245 
operator =VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR25246     DisplayModePropertiesKHR & operator=( VkDisplayModePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
25247     {
25248       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR const *>( &rhs );
25249       return *this;
25250     }
25251 
operator VkDisplayModePropertiesKHR const&VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR25252     explicit operator VkDisplayModePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
25253     {
25254       return *reinterpret_cast<const VkDisplayModePropertiesKHR *>( this );
25255     }
25256 
operator VkDisplayModePropertiesKHR&VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR25257     explicit operator VkDisplayModePropertiesKHR &() VULKAN_HPP_NOEXCEPT
25258     {
25259       return *reinterpret_cast<VkDisplayModePropertiesKHR *>( this );
25260     }
25261 
25262 #if 14 <= VULKAN_HPP_CPP_VERSION
25263     auto
25264 #else
25265     std::tuple<VULKAN_HPP_NAMESPACE::DisplayModeKHR const &, VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR const &>
25266 #endif
reflectVULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR25267       reflect() const VULKAN_HPP_NOEXCEPT
25268     {
25269       return std::tie( displayMode, parameters );
25270     }
25271 
25272 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
25273     auto operator<=>( DisplayModePropertiesKHR const & ) const = default;
25274 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR25275     bool operator==( DisplayModePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
25276     {
25277       return this->reflect() == rhs.reflect();
25278     }
25279 
operator !=VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR25280     bool operator!=( DisplayModePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
25281     {
25282       return this->reflect() != rhs.reflect();
25283     }
25284 #endif
25285 
25286   public:
25287     VULKAN_HPP_NAMESPACE::DisplayModeKHR           displayMode = {};
25288     VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR parameters  = {};
25289   };
25290   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR ) ==
25291                               sizeof( VkDisplayModePropertiesKHR ),
25292                             "struct and wrapper have different size!" );
25293   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR>::value,
25294                             "struct wrapper is not a standard layout!" );
25295   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR>::value,
25296                             "DisplayModePropertiesKHR is not nothrow_move_constructible!" );
25297 
25298   struct DisplayModeProperties2KHR
25299   {
25300     using NativeType = VkDisplayModeProperties2KHR;
25301 
25302     static const bool                                  allowDuplicate = false;
25303     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDisplayModeProperties2KHR;
25304 
25305 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayModeProperties2KHRVULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR25306     VULKAN_HPP_CONSTEXPR DisplayModeProperties2KHR(
25307       VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR displayModeProperties_ = {} ) VULKAN_HPP_NOEXCEPT
25308       : displayModeProperties( displayModeProperties_ )
25309     {}
25310 
25311     VULKAN_HPP_CONSTEXPR
25312       DisplayModeProperties2KHR( DisplayModeProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25313 
DisplayModeProperties2KHRVULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR25314     DisplayModeProperties2KHR( VkDisplayModeProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
25315       : DisplayModeProperties2KHR( *reinterpret_cast<DisplayModeProperties2KHR const *>( &rhs ) )
25316     {}
25317 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
25318 
25319     DisplayModeProperties2KHR & operator=( DisplayModeProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25320 
operator =VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR25321     DisplayModeProperties2KHR & operator=( VkDisplayModeProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
25322     {
25323       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR const *>( &rhs );
25324       return *this;
25325     }
25326 
operator VkDisplayModeProperties2KHR const&VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR25327     explicit operator VkDisplayModeProperties2KHR const &() const VULKAN_HPP_NOEXCEPT
25328     {
25329       return *reinterpret_cast<const VkDisplayModeProperties2KHR *>( this );
25330     }
25331 
operator VkDisplayModeProperties2KHR&VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR25332     explicit operator VkDisplayModeProperties2KHR &() VULKAN_HPP_NOEXCEPT
25333     {
25334       return *reinterpret_cast<VkDisplayModeProperties2KHR *>( this );
25335     }
25336 
25337 #if 14 <= VULKAN_HPP_CPP_VERSION
25338     auto
25339 #else
25340     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
25341                void * const &,
25342                VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR const &>
25343 #endif
reflectVULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR25344       reflect() const VULKAN_HPP_NOEXCEPT
25345     {
25346       return std::tie( sType, pNext, displayModeProperties );
25347     }
25348 
25349 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
25350     auto operator<=>( DisplayModeProperties2KHR const & ) const = default;
25351 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR25352     bool operator==( DisplayModeProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
25353     {
25354       return this->reflect() == rhs.reflect();
25355     }
25356 
operator !=VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR25357     bool operator!=( DisplayModeProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
25358     {
25359       return this->reflect() != rhs.reflect();
25360     }
25361 #endif
25362 
25363   public:
25364     VULKAN_HPP_NAMESPACE::StructureType            sType                 = StructureType::eDisplayModeProperties2KHR;
25365     void *                                         pNext                 = {};
25366     VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR displayModeProperties = {};
25367   };
25368   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR ) ==
25369                               sizeof( VkDisplayModeProperties2KHR ),
25370                             "struct and wrapper have different size!" );
25371   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR>::value,
25372                             "struct wrapper is not a standard layout!" );
25373   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR>::value,
25374                             "DisplayModeProperties2KHR is not nothrow_move_constructible!" );
25375 
25376   template <>
25377   struct CppType<StructureType, StructureType::eDisplayModeProperties2KHR>
25378   {
25379     using Type = DisplayModeProperties2KHR;
25380   };
25381 
25382   struct DisplayNativeHdrSurfaceCapabilitiesAMD
25383   {
25384     using NativeType = VkDisplayNativeHdrSurfaceCapabilitiesAMD;
25385 
25386     static const bool                                  allowDuplicate = false;
25387     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
25388       StructureType::eDisplayNativeHdrSurfaceCapabilitiesAMD;
25389 
25390 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayNativeHdrSurfaceCapabilitiesAMDVULKAN_HPP_NAMESPACE::DisplayNativeHdrSurfaceCapabilitiesAMD25391     VULKAN_HPP_CONSTEXPR DisplayNativeHdrSurfaceCapabilitiesAMD(
25392       VULKAN_HPP_NAMESPACE::Bool32 localDimmingSupport_ = {} ) VULKAN_HPP_NOEXCEPT
25393       : localDimmingSupport( localDimmingSupport_ )
25394     {}
25395 
25396     VULKAN_HPP_CONSTEXPR DisplayNativeHdrSurfaceCapabilitiesAMD( DisplayNativeHdrSurfaceCapabilitiesAMD const & rhs )
25397       VULKAN_HPP_NOEXCEPT = default;
25398 
DisplayNativeHdrSurfaceCapabilitiesAMDVULKAN_HPP_NAMESPACE::DisplayNativeHdrSurfaceCapabilitiesAMD25399     DisplayNativeHdrSurfaceCapabilitiesAMD( VkDisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
25400       : DisplayNativeHdrSurfaceCapabilitiesAMD(
25401           *reinterpret_cast<DisplayNativeHdrSurfaceCapabilitiesAMD const *>( &rhs ) )
25402     {}
25403 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
25404 
25405     DisplayNativeHdrSurfaceCapabilitiesAMD &
25406       operator=( DisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25407 
25408     DisplayNativeHdrSurfaceCapabilitiesAMD &
operator =VULKAN_HPP_NAMESPACE::DisplayNativeHdrSurfaceCapabilitiesAMD25409       operator=( VkDisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
25410     {
25411       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayNativeHdrSurfaceCapabilitiesAMD const *>( &rhs );
25412       return *this;
25413     }
25414 
operator VkDisplayNativeHdrSurfaceCapabilitiesAMD const&VULKAN_HPP_NAMESPACE::DisplayNativeHdrSurfaceCapabilitiesAMD25415     explicit operator VkDisplayNativeHdrSurfaceCapabilitiesAMD const &() const VULKAN_HPP_NOEXCEPT
25416     {
25417       return *reinterpret_cast<const VkDisplayNativeHdrSurfaceCapabilitiesAMD *>( this );
25418     }
25419 
operator VkDisplayNativeHdrSurfaceCapabilitiesAMD&VULKAN_HPP_NAMESPACE::DisplayNativeHdrSurfaceCapabilitiesAMD25420     explicit operator VkDisplayNativeHdrSurfaceCapabilitiesAMD &() VULKAN_HPP_NOEXCEPT
25421     {
25422       return *reinterpret_cast<VkDisplayNativeHdrSurfaceCapabilitiesAMD *>( this );
25423     }
25424 
25425 #if 14 <= VULKAN_HPP_CPP_VERSION
25426     auto
25427 #else
25428     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
25429 #endif
reflectVULKAN_HPP_NAMESPACE::DisplayNativeHdrSurfaceCapabilitiesAMD25430       reflect() const VULKAN_HPP_NOEXCEPT
25431     {
25432       return std::tie( sType, pNext, localDimmingSupport );
25433     }
25434 
25435 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
25436     auto operator<=>( DisplayNativeHdrSurfaceCapabilitiesAMD const & ) const = default;
25437 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayNativeHdrSurfaceCapabilitiesAMD25438     bool operator==( DisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
25439     {
25440       return this->reflect() == rhs.reflect();
25441     }
25442 
operator !=VULKAN_HPP_NAMESPACE::DisplayNativeHdrSurfaceCapabilitiesAMD25443     bool operator!=( DisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
25444     {
25445       return this->reflect() != rhs.reflect();
25446     }
25447 #endif
25448 
25449   public:
25450     VULKAN_HPP_NAMESPACE::StructureType sType               = StructureType::eDisplayNativeHdrSurfaceCapabilitiesAMD;
25451     void *                              pNext               = {};
25452     VULKAN_HPP_NAMESPACE::Bool32        localDimmingSupport = {};
25453   };
25454   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayNativeHdrSurfaceCapabilitiesAMD ) ==
25455                               sizeof( VkDisplayNativeHdrSurfaceCapabilitiesAMD ),
25456                             "struct and wrapper have different size!" );
25457   VULKAN_HPP_STATIC_ASSERT(
25458     std::is_standard_layout<VULKAN_HPP_NAMESPACE::DisplayNativeHdrSurfaceCapabilitiesAMD>::value,
25459     "struct wrapper is not a standard layout!" );
25460   VULKAN_HPP_STATIC_ASSERT(
25461     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DisplayNativeHdrSurfaceCapabilitiesAMD>::value,
25462     "DisplayNativeHdrSurfaceCapabilitiesAMD is not nothrow_move_constructible!" );
25463 
25464   template <>
25465   struct CppType<StructureType, StructureType::eDisplayNativeHdrSurfaceCapabilitiesAMD>
25466   {
25467     using Type = DisplayNativeHdrSurfaceCapabilitiesAMD;
25468   };
25469 
25470   struct DisplayPlaneCapabilitiesKHR
25471   {
25472     using NativeType = VkDisplayPlaneCapabilitiesKHR;
25473 
25474 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
25475     VULKAN_HPP_CONSTEXPR
DisplayPlaneCapabilitiesKHRVULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR25476       DisplayPlaneCapabilitiesKHR( VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagsKHR supportedAlpha_ = {},
25477                                    VULKAN_HPP_NAMESPACE::Offset2D                  minSrcPosition_ = {},
25478                                    VULKAN_HPP_NAMESPACE::Offset2D                  maxSrcPosition_ = {},
25479                                    VULKAN_HPP_NAMESPACE::Extent2D                  minSrcExtent_   = {},
25480                                    VULKAN_HPP_NAMESPACE::Extent2D                  maxSrcExtent_   = {},
25481                                    VULKAN_HPP_NAMESPACE::Offset2D                  minDstPosition_ = {},
25482                                    VULKAN_HPP_NAMESPACE::Offset2D                  maxDstPosition_ = {},
25483                                    VULKAN_HPP_NAMESPACE::Extent2D                  minDstExtent_   = {},
25484                                    VULKAN_HPP_NAMESPACE::Extent2D maxDstExtent_ = {} ) VULKAN_HPP_NOEXCEPT
25485       : supportedAlpha( supportedAlpha_ )
25486       , minSrcPosition( minSrcPosition_ )
25487       , maxSrcPosition( maxSrcPosition_ )
25488       , minSrcExtent( minSrcExtent_ )
25489       , maxSrcExtent( maxSrcExtent_ )
25490       , minDstPosition( minDstPosition_ )
25491       , maxDstPosition( maxDstPosition_ )
25492       , minDstExtent( minDstExtent_ )
25493       , maxDstExtent( maxDstExtent_ )
25494     {}
25495 
25496     VULKAN_HPP_CONSTEXPR
25497       DisplayPlaneCapabilitiesKHR( DisplayPlaneCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25498 
DisplayPlaneCapabilitiesKHRVULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR25499     DisplayPlaneCapabilitiesKHR( VkDisplayPlaneCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
25500       : DisplayPlaneCapabilitiesKHR( *reinterpret_cast<DisplayPlaneCapabilitiesKHR const *>( &rhs ) )
25501     {}
25502 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
25503 
25504     DisplayPlaneCapabilitiesKHR & operator=( DisplayPlaneCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25505 
operator =VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR25506     DisplayPlaneCapabilitiesKHR & operator=( VkDisplayPlaneCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
25507     {
25508       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR const *>( &rhs );
25509       return *this;
25510     }
25511 
operator VkDisplayPlaneCapabilitiesKHR const&VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR25512     explicit operator VkDisplayPlaneCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT
25513     {
25514       return *reinterpret_cast<const VkDisplayPlaneCapabilitiesKHR *>( this );
25515     }
25516 
operator VkDisplayPlaneCapabilitiesKHR&VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR25517     explicit operator VkDisplayPlaneCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT
25518     {
25519       return *reinterpret_cast<VkDisplayPlaneCapabilitiesKHR *>( this );
25520     }
25521 
25522 #if 14 <= VULKAN_HPP_CPP_VERSION
25523     auto
25524 #else
25525     std::tuple<VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagsKHR const &,
25526                VULKAN_HPP_NAMESPACE::Offset2D const &,
25527                VULKAN_HPP_NAMESPACE::Offset2D const &,
25528                VULKAN_HPP_NAMESPACE::Extent2D const &,
25529                VULKAN_HPP_NAMESPACE::Extent2D const &,
25530                VULKAN_HPP_NAMESPACE::Offset2D const &,
25531                VULKAN_HPP_NAMESPACE::Offset2D const &,
25532                VULKAN_HPP_NAMESPACE::Extent2D const &,
25533                VULKAN_HPP_NAMESPACE::Extent2D const &>
25534 #endif
reflectVULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR25535       reflect() const VULKAN_HPP_NOEXCEPT
25536     {
25537       return std::tie( supportedAlpha,
25538                        minSrcPosition,
25539                        maxSrcPosition,
25540                        minSrcExtent,
25541                        maxSrcExtent,
25542                        minDstPosition,
25543                        maxDstPosition,
25544                        minDstExtent,
25545                        maxDstExtent );
25546     }
25547 
25548 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
25549     auto operator<=>( DisplayPlaneCapabilitiesKHR const & ) const = default;
25550 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR25551     bool operator==( DisplayPlaneCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
25552     {
25553       return this->reflect() == rhs.reflect();
25554     }
25555 
operator !=VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR25556     bool operator!=( DisplayPlaneCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
25557     {
25558       return this->reflect() != rhs.reflect();
25559     }
25560 #endif
25561 
25562   public:
25563     VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagsKHR supportedAlpha = {};
25564     VULKAN_HPP_NAMESPACE::Offset2D                  minSrcPosition = {};
25565     VULKAN_HPP_NAMESPACE::Offset2D                  maxSrcPosition = {};
25566     VULKAN_HPP_NAMESPACE::Extent2D                  minSrcExtent   = {};
25567     VULKAN_HPP_NAMESPACE::Extent2D                  maxSrcExtent   = {};
25568     VULKAN_HPP_NAMESPACE::Offset2D                  minDstPosition = {};
25569     VULKAN_HPP_NAMESPACE::Offset2D                  maxDstPosition = {};
25570     VULKAN_HPP_NAMESPACE::Extent2D                  minDstExtent   = {};
25571     VULKAN_HPP_NAMESPACE::Extent2D                  maxDstExtent   = {};
25572   };
25573   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR ) ==
25574                               sizeof( VkDisplayPlaneCapabilitiesKHR ),
25575                             "struct and wrapper have different size!" );
25576   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR>::value,
25577                             "struct wrapper is not a standard layout!" );
25578   VULKAN_HPP_STATIC_ASSERT(
25579     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR>::value,
25580     "DisplayPlaneCapabilitiesKHR is not nothrow_move_constructible!" );
25581 
25582   struct DisplayPlaneCapabilities2KHR
25583   {
25584     using NativeType = VkDisplayPlaneCapabilities2KHR;
25585 
25586     static const bool                                  allowDuplicate = false;
25587     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDisplayPlaneCapabilities2KHR;
25588 
25589 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayPlaneCapabilities2KHRVULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR25590     VULKAN_HPP_CONSTEXPR DisplayPlaneCapabilities2KHR(
25591       VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR capabilities_ = {} ) VULKAN_HPP_NOEXCEPT
25592       : capabilities( capabilities_ )
25593     {}
25594 
25595     VULKAN_HPP_CONSTEXPR
25596       DisplayPlaneCapabilities2KHR( DisplayPlaneCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25597 
DisplayPlaneCapabilities2KHRVULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR25598     DisplayPlaneCapabilities2KHR( VkDisplayPlaneCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
25599       : DisplayPlaneCapabilities2KHR( *reinterpret_cast<DisplayPlaneCapabilities2KHR const *>( &rhs ) )
25600     {}
25601 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
25602 
25603     DisplayPlaneCapabilities2KHR & operator=( DisplayPlaneCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25604 
operator =VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR25605     DisplayPlaneCapabilities2KHR & operator=( VkDisplayPlaneCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
25606     {
25607       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR const *>( &rhs );
25608       return *this;
25609     }
25610 
operator VkDisplayPlaneCapabilities2KHR const&VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR25611     explicit operator VkDisplayPlaneCapabilities2KHR const &() const VULKAN_HPP_NOEXCEPT
25612     {
25613       return *reinterpret_cast<const VkDisplayPlaneCapabilities2KHR *>( this );
25614     }
25615 
operator VkDisplayPlaneCapabilities2KHR&VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR25616     explicit operator VkDisplayPlaneCapabilities2KHR &() VULKAN_HPP_NOEXCEPT
25617     {
25618       return *reinterpret_cast<VkDisplayPlaneCapabilities2KHR *>( this );
25619     }
25620 
25621 #if 14 <= VULKAN_HPP_CPP_VERSION
25622     auto
25623 #else
25624     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
25625                void * const &,
25626                VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR const &>
25627 #endif
reflectVULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR25628       reflect() const VULKAN_HPP_NOEXCEPT
25629     {
25630       return std::tie( sType, pNext, capabilities );
25631     }
25632 
25633 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
25634     auto operator<=>( DisplayPlaneCapabilities2KHR const & ) const = default;
25635 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR25636     bool operator==( DisplayPlaneCapabilities2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
25637     {
25638       return this->reflect() == rhs.reflect();
25639     }
25640 
operator !=VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR25641     bool operator!=( DisplayPlaneCapabilities2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
25642     {
25643       return this->reflect() != rhs.reflect();
25644     }
25645 #endif
25646 
25647   public:
25648     VULKAN_HPP_NAMESPACE::StructureType               sType        = StructureType::eDisplayPlaneCapabilities2KHR;
25649     void *                                            pNext        = {};
25650     VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR capabilities = {};
25651   };
25652   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR ) ==
25653                               sizeof( VkDisplayPlaneCapabilities2KHR ),
25654                             "struct and wrapper have different size!" );
25655   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR>::value,
25656                             "struct wrapper is not a standard layout!" );
25657   VULKAN_HPP_STATIC_ASSERT(
25658     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR>::value,
25659     "DisplayPlaneCapabilities2KHR is not nothrow_move_constructible!" );
25660 
25661   template <>
25662   struct CppType<StructureType, StructureType::eDisplayPlaneCapabilities2KHR>
25663   {
25664     using Type = DisplayPlaneCapabilities2KHR;
25665   };
25666 
25667   struct DisplayPlaneInfo2KHR
25668   {
25669     using NativeType = VkDisplayPlaneInfo2KHR;
25670 
25671     static const bool                                  allowDuplicate = false;
25672     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDisplayPlaneInfo2KHR;
25673 
25674 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayPlaneInfo2KHRVULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR25675     VULKAN_HPP_CONSTEXPR DisplayPlaneInfo2KHR( VULKAN_HPP_NAMESPACE::DisplayModeKHR mode_ = {},
25676                                                uint32_t planeIndex_                       = {} ) VULKAN_HPP_NOEXCEPT
25677       : mode( mode_ )
25678       , planeIndex( planeIndex_ )
25679     {}
25680 
25681     VULKAN_HPP_CONSTEXPR DisplayPlaneInfo2KHR( DisplayPlaneInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25682 
DisplayPlaneInfo2KHRVULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR25683     DisplayPlaneInfo2KHR( VkDisplayPlaneInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
25684       : DisplayPlaneInfo2KHR( *reinterpret_cast<DisplayPlaneInfo2KHR const *>( &rhs ) )
25685     {}
25686 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
25687 
25688     DisplayPlaneInfo2KHR & operator=( DisplayPlaneInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25689 
operator =VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR25690     DisplayPlaneInfo2KHR & operator=( VkDisplayPlaneInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
25691     {
25692       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR const *>( &rhs );
25693       return *this;
25694     }
25695 
25696 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR25697     VULKAN_HPP_CONSTEXPR_14 DisplayPlaneInfo2KHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
25698     {
25699       pNext = pNext_;
25700       return *this;
25701     }
25702 
25703     VULKAN_HPP_CONSTEXPR_14 DisplayPlaneInfo2KHR &
setModeVULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR25704                             setMode( VULKAN_HPP_NAMESPACE::DisplayModeKHR mode_ ) VULKAN_HPP_NOEXCEPT
25705     {
25706       mode = mode_;
25707       return *this;
25708     }
25709 
setPlaneIndexVULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR25710     VULKAN_HPP_CONSTEXPR_14 DisplayPlaneInfo2KHR & setPlaneIndex( uint32_t planeIndex_ ) VULKAN_HPP_NOEXCEPT
25711     {
25712       planeIndex = planeIndex_;
25713       return *this;
25714     }
25715 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
25716 
operator VkDisplayPlaneInfo2KHR const&VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR25717     explicit operator VkDisplayPlaneInfo2KHR const &() const VULKAN_HPP_NOEXCEPT
25718     {
25719       return *reinterpret_cast<const VkDisplayPlaneInfo2KHR *>( this );
25720     }
25721 
operator VkDisplayPlaneInfo2KHR&VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR25722     explicit operator VkDisplayPlaneInfo2KHR &() VULKAN_HPP_NOEXCEPT
25723     {
25724       return *reinterpret_cast<VkDisplayPlaneInfo2KHR *>( this );
25725     }
25726 
25727 #if 14 <= VULKAN_HPP_CPP_VERSION
25728     auto
25729 #else
25730     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
25731                const void * const &,
25732                VULKAN_HPP_NAMESPACE::DisplayModeKHR const &,
25733                uint32_t const &>
25734 #endif
reflectVULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR25735       reflect() const VULKAN_HPP_NOEXCEPT
25736     {
25737       return std::tie( sType, pNext, mode, planeIndex );
25738     }
25739 
25740 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
25741     auto operator<=>( DisplayPlaneInfo2KHR const & ) const = default;
25742 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR25743     bool operator==( DisplayPlaneInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
25744     {
25745       return this->reflect() == rhs.reflect();
25746     }
25747 
operator !=VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR25748     bool operator!=( DisplayPlaneInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
25749     {
25750       return this->reflect() != rhs.reflect();
25751     }
25752 #endif
25753 
25754   public:
25755     VULKAN_HPP_NAMESPACE::StructureType  sType      = StructureType::eDisplayPlaneInfo2KHR;
25756     const void *                         pNext      = {};
25757     VULKAN_HPP_NAMESPACE::DisplayModeKHR mode       = {};
25758     uint32_t                             planeIndex = {};
25759   };
25760   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR ) == sizeof( VkDisplayPlaneInfo2KHR ),
25761                             "struct and wrapper have different size!" );
25762   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR>::value,
25763                             "struct wrapper is not a standard layout!" );
25764   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR>::value,
25765                             "DisplayPlaneInfo2KHR is not nothrow_move_constructible!" );
25766 
25767   template <>
25768   struct CppType<StructureType, StructureType::eDisplayPlaneInfo2KHR>
25769   {
25770     using Type = DisplayPlaneInfo2KHR;
25771   };
25772 
25773   struct DisplayPlanePropertiesKHR
25774   {
25775     using NativeType = VkDisplayPlanePropertiesKHR;
25776 
25777 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayPlanePropertiesKHRVULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR25778     VULKAN_HPP_CONSTEXPR DisplayPlanePropertiesKHR( VULKAN_HPP_NAMESPACE::DisplayKHR currentDisplay_ = {},
25779                                                     uint32_t currentStackIndex_ = {} ) VULKAN_HPP_NOEXCEPT
25780       : currentDisplay( currentDisplay_ )
25781       , currentStackIndex( currentStackIndex_ )
25782     {}
25783 
25784     VULKAN_HPP_CONSTEXPR
25785       DisplayPlanePropertiesKHR( DisplayPlanePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25786 
DisplayPlanePropertiesKHRVULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR25787     DisplayPlanePropertiesKHR( VkDisplayPlanePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
25788       : DisplayPlanePropertiesKHR( *reinterpret_cast<DisplayPlanePropertiesKHR const *>( &rhs ) )
25789     {}
25790 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
25791 
25792     DisplayPlanePropertiesKHR & operator=( DisplayPlanePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25793 
operator =VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR25794     DisplayPlanePropertiesKHR & operator=( VkDisplayPlanePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
25795     {
25796       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR const *>( &rhs );
25797       return *this;
25798     }
25799 
operator VkDisplayPlanePropertiesKHR const&VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR25800     explicit operator VkDisplayPlanePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
25801     {
25802       return *reinterpret_cast<const VkDisplayPlanePropertiesKHR *>( this );
25803     }
25804 
operator VkDisplayPlanePropertiesKHR&VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR25805     explicit operator VkDisplayPlanePropertiesKHR &() VULKAN_HPP_NOEXCEPT
25806     {
25807       return *reinterpret_cast<VkDisplayPlanePropertiesKHR *>( this );
25808     }
25809 
25810 #if 14 <= VULKAN_HPP_CPP_VERSION
25811     auto
25812 #else
25813     std::tuple<VULKAN_HPP_NAMESPACE::DisplayKHR const &, uint32_t const &>
25814 #endif
reflectVULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR25815       reflect() const VULKAN_HPP_NOEXCEPT
25816     {
25817       return std::tie( currentDisplay, currentStackIndex );
25818     }
25819 
25820 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
25821     auto operator<=>( DisplayPlanePropertiesKHR const & ) const = default;
25822 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR25823     bool operator==( DisplayPlanePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
25824     {
25825       return this->reflect() == rhs.reflect();
25826     }
25827 
operator !=VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR25828     bool operator!=( DisplayPlanePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
25829     {
25830       return this->reflect() != rhs.reflect();
25831     }
25832 #endif
25833 
25834   public:
25835     VULKAN_HPP_NAMESPACE::DisplayKHR currentDisplay    = {};
25836     uint32_t                         currentStackIndex = {};
25837   };
25838   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR ) ==
25839                               sizeof( VkDisplayPlanePropertiesKHR ),
25840                             "struct and wrapper have different size!" );
25841   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR>::value,
25842                             "struct wrapper is not a standard layout!" );
25843   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR>::value,
25844                             "DisplayPlanePropertiesKHR is not nothrow_move_constructible!" );
25845 
25846   struct DisplayPlaneProperties2KHR
25847   {
25848     using NativeType = VkDisplayPlaneProperties2KHR;
25849 
25850     static const bool                                  allowDuplicate = false;
25851     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDisplayPlaneProperties2KHR;
25852 
25853 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayPlaneProperties2KHRVULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR25854     VULKAN_HPP_CONSTEXPR DisplayPlaneProperties2KHR(
25855       VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR displayPlaneProperties_ = {} ) VULKAN_HPP_NOEXCEPT
25856       : displayPlaneProperties( displayPlaneProperties_ )
25857     {}
25858 
25859     VULKAN_HPP_CONSTEXPR
25860       DisplayPlaneProperties2KHR( DisplayPlaneProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25861 
DisplayPlaneProperties2KHRVULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR25862     DisplayPlaneProperties2KHR( VkDisplayPlaneProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
25863       : DisplayPlaneProperties2KHR( *reinterpret_cast<DisplayPlaneProperties2KHR const *>( &rhs ) )
25864     {}
25865 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
25866 
25867     DisplayPlaneProperties2KHR & operator=( DisplayPlaneProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25868 
operator =VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR25869     DisplayPlaneProperties2KHR & operator=( VkDisplayPlaneProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
25870     {
25871       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR const *>( &rhs );
25872       return *this;
25873     }
25874 
operator VkDisplayPlaneProperties2KHR const&VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR25875     explicit operator VkDisplayPlaneProperties2KHR const &() const VULKAN_HPP_NOEXCEPT
25876     {
25877       return *reinterpret_cast<const VkDisplayPlaneProperties2KHR *>( this );
25878     }
25879 
operator VkDisplayPlaneProperties2KHR&VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR25880     explicit operator VkDisplayPlaneProperties2KHR &() VULKAN_HPP_NOEXCEPT
25881     {
25882       return *reinterpret_cast<VkDisplayPlaneProperties2KHR *>( this );
25883     }
25884 
25885 #if 14 <= VULKAN_HPP_CPP_VERSION
25886     auto
25887 #else
25888     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
25889                void * const &,
25890                VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR const &>
25891 #endif
reflectVULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR25892       reflect() const VULKAN_HPP_NOEXCEPT
25893     {
25894       return std::tie( sType, pNext, displayPlaneProperties );
25895     }
25896 
25897 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
25898     auto operator<=>( DisplayPlaneProperties2KHR const & ) const = default;
25899 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR25900     bool operator==( DisplayPlaneProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
25901     {
25902       return this->reflect() == rhs.reflect();
25903     }
25904 
operator !=VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR25905     bool operator!=( DisplayPlaneProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
25906     {
25907       return this->reflect() != rhs.reflect();
25908     }
25909 #endif
25910 
25911   public:
25912     VULKAN_HPP_NAMESPACE::StructureType             sType                  = StructureType::eDisplayPlaneProperties2KHR;
25913     void *                                          pNext                  = {};
25914     VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR displayPlaneProperties = {};
25915   };
25916   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR ) ==
25917                               sizeof( VkDisplayPlaneProperties2KHR ),
25918                             "struct and wrapper have different size!" );
25919   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR>::value,
25920                             "struct wrapper is not a standard layout!" );
25921   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR>::value,
25922                             "DisplayPlaneProperties2KHR is not nothrow_move_constructible!" );
25923 
25924   template <>
25925   struct CppType<StructureType, StructureType::eDisplayPlaneProperties2KHR>
25926   {
25927     using Type = DisplayPlaneProperties2KHR;
25928   };
25929 
25930   struct DisplayPowerInfoEXT
25931   {
25932     using NativeType = VkDisplayPowerInfoEXT;
25933 
25934     static const bool                                  allowDuplicate = false;
25935     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDisplayPowerInfoEXT;
25936 
25937 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayPowerInfoEXTVULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT25938     VULKAN_HPP_CONSTEXPR DisplayPowerInfoEXT( VULKAN_HPP_NAMESPACE::DisplayPowerStateEXT powerState_ =
25939                                                 VULKAN_HPP_NAMESPACE::DisplayPowerStateEXT::eOff ) VULKAN_HPP_NOEXCEPT
25940       : powerState( powerState_ )
25941     {}
25942 
25943     VULKAN_HPP_CONSTEXPR DisplayPowerInfoEXT( DisplayPowerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25944 
DisplayPowerInfoEXTVULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT25945     DisplayPowerInfoEXT( VkDisplayPowerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
25946       : DisplayPowerInfoEXT( *reinterpret_cast<DisplayPowerInfoEXT const *>( &rhs ) )
25947     {}
25948 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
25949 
25950     DisplayPowerInfoEXT & operator=( DisplayPowerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25951 
operator =VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT25952     DisplayPowerInfoEXT & operator=( VkDisplayPowerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
25953     {
25954       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT const *>( &rhs );
25955       return *this;
25956     }
25957 
25958 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT25959     VULKAN_HPP_CONSTEXPR_14 DisplayPowerInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
25960     {
25961       pNext = pNext_;
25962       return *this;
25963     }
25964 
25965     VULKAN_HPP_CONSTEXPR_14 DisplayPowerInfoEXT &
setPowerStateVULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT25966                             setPowerState( VULKAN_HPP_NAMESPACE::DisplayPowerStateEXT powerState_ ) VULKAN_HPP_NOEXCEPT
25967     {
25968       powerState = powerState_;
25969       return *this;
25970     }
25971 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
25972 
operator VkDisplayPowerInfoEXT const&VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT25973     explicit operator VkDisplayPowerInfoEXT const &() const VULKAN_HPP_NOEXCEPT
25974     {
25975       return *reinterpret_cast<const VkDisplayPowerInfoEXT *>( this );
25976     }
25977 
operator VkDisplayPowerInfoEXT&VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT25978     explicit operator VkDisplayPowerInfoEXT &() VULKAN_HPP_NOEXCEPT
25979     {
25980       return *reinterpret_cast<VkDisplayPowerInfoEXT *>( this );
25981     }
25982 
25983 #if 14 <= VULKAN_HPP_CPP_VERSION
25984     auto
25985 #else
25986     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
25987                const void * const &,
25988                VULKAN_HPP_NAMESPACE::DisplayPowerStateEXT const &>
25989 #endif
reflectVULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT25990       reflect() const VULKAN_HPP_NOEXCEPT
25991     {
25992       return std::tie( sType, pNext, powerState );
25993     }
25994 
25995 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
25996     auto operator<=>( DisplayPowerInfoEXT const & ) const = default;
25997 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT25998     bool operator==( DisplayPowerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
25999     {
26000       return this->reflect() == rhs.reflect();
26001     }
26002 
operator !=VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT26003     bool operator!=( DisplayPowerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
26004     {
26005       return this->reflect() != rhs.reflect();
26006     }
26007 #endif
26008 
26009   public:
26010     VULKAN_HPP_NAMESPACE::StructureType        sType      = StructureType::eDisplayPowerInfoEXT;
26011     const void *                               pNext      = {};
26012     VULKAN_HPP_NAMESPACE::DisplayPowerStateEXT powerState = VULKAN_HPP_NAMESPACE::DisplayPowerStateEXT::eOff;
26013   };
26014   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT ) == sizeof( VkDisplayPowerInfoEXT ),
26015                             "struct and wrapper have different size!" );
26016   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT>::value,
26017                             "struct wrapper is not a standard layout!" );
26018   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT>::value,
26019                             "DisplayPowerInfoEXT is not nothrow_move_constructible!" );
26020 
26021   template <>
26022   struct CppType<StructureType, StructureType::eDisplayPowerInfoEXT>
26023   {
26024     using Type = DisplayPowerInfoEXT;
26025   };
26026 
26027   struct DisplayPresentInfoKHR
26028   {
26029     using NativeType = VkDisplayPresentInfoKHR;
26030 
26031     static const bool                                  allowDuplicate = false;
26032     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDisplayPresentInfoKHR;
26033 
26034 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayPresentInfoKHRVULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR26035     VULKAN_HPP_CONSTEXPR DisplayPresentInfoKHR( VULKAN_HPP_NAMESPACE::Rect2D srcRect_    = {},
26036                                                 VULKAN_HPP_NAMESPACE::Rect2D dstRect_    = {},
26037                                                 VULKAN_HPP_NAMESPACE::Bool32 persistent_ = {} ) VULKAN_HPP_NOEXCEPT
26038       : srcRect( srcRect_ )
26039       , dstRect( dstRect_ )
26040       , persistent( persistent_ )
26041     {}
26042 
26043     VULKAN_HPP_CONSTEXPR DisplayPresentInfoKHR( DisplayPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26044 
DisplayPresentInfoKHRVULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR26045     DisplayPresentInfoKHR( VkDisplayPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
26046       : DisplayPresentInfoKHR( *reinterpret_cast<DisplayPresentInfoKHR const *>( &rhs ) )
26047     {}
26048 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
26049 
26050     DisplayPresentInfoKHR & operator=( DisplayPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26051 
operator =VULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR26052     DisplayPresentInfoKHR & operator=( VkDisplayPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
26053     {
26054       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR const *>( &rhs );
26055       return *this;
26056     }
26057 
26058 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR26059     VULKAN_HPP_CONSTEXPR_14 DisplayPresentInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
26060     {
26061       pNext = pNext_;
26062       return *this;
26063     }
26064 
26065     VULKAN_HPP_CONSTEXPR_14 DisplayPresentInfoKHR &
setSrcRectVULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR26066                             setSrcRect( VULKAN_HPP_NAMESPACE::Rect2D const & srcRect_ ) VULKAN_HPP_NOEXCEPT
26067     {
26068       srcRect = srcRect_;
26069       return *this;
26070     }
26071 
26072     VULKAN_HPP_CONSTEXPR_14 DisplayPresentInfoKHR &
setDstRectVULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR26073                             setDstRect( VULKAN_HPP_NAMESPACE::Rect2D const & dstRect_ ) VULKAN_HPP_NOEXCEPT
26074     {
26075       dstRect = dstRect_;
26076       return *this;
26077     }
26078 
26079     VULKAN_HPP_CONSTEXPR_14 DisplayPresentInfoKHR &
setPersistentVULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR26080                             setPersistent( VULKAN_HPP_NAMESPACE::Bool32 persistent_ ) VULKAN_HPP_NOEXCEPT
26081     {
26082       persistent = persistent_;
26083       return *this;
26084     }
26085 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
26086 
operator VkDisplayPresentInfoKHR const&VULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR26087     explicit operator VkDisplayPresentInfoKHR const &() const VULKAN_HPP_NOEXCEPT
26088     {
26089       return *reinterpret_cast<const VkDisplayPresentInfoKHR *>( this );
26090     }
26091 
operator VkDisplayPresentInfoKHR&VULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR26092     explicit operator VkDisplayPresentInfoKHR &() VULKAN_HPP_NOEXCEPT
26093     {
26094       return *reinterpret_cast<VkDisplayPresentInfoKHR *>( this );
26095     }
26096 
26097 #if 14 <= VULKAN_HPP_CPP_VERSION
26098     auto
26099 #else
26100     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
26101                const void * const &,
26102                VULKAN_HPP_NAMESPACE::Rect2D const &,
26103                VULKAN_HPP_NAMESPACE::Rect2D const &,
26104                VULKAN_HPP_NAMESPACE::Bool32 const &>
26105 #endif
reflectVULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR26106       reflect() const VULKAN_HPP_NOEXCEPT
26107     {
26108       return std::tie( sType, pNext, srcRect, dstRect, persistent );
26109     }
26110 
26111 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
26112     auto operator<=>( DisplayPresentInfoKHR const & ) const = default;
26113 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR26114     bool operator==( DisplayPresentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
26115     {
26116       return this->reflect() == rhs.reflect();
26117     }
26118 
operator !=VULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR26119     bool operator!=( DisplayPresentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
26120     {
26121       return this->reflect() != rhs.reflect();
26122     }
26123 #endif
26124 
26125   public:
26126     VULKAN_HPP_NAMESPACE::StructureType sType      = StructureType::eDisplayPresentInfoKHR;
26127     const void *                        pNext      = {};
26128     VULKAN_HPP_NAMESPACE::Rect2D        srcRect    = {};
26129     VULKAN_HPP_NAMESPACE::Rect2D        dstRect    = {};
26130     VULKAN_HPP_NAMESPACE::Bool32        persistent = {};
26131   };
26132   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR ) == sizeof( VkDisplayPresentInfoKHR ),
26133                             "struct and wrapper have different size!" );
26134   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR>::value,
26135                             "struct wrapper is not a standard layout!" );
26136   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR>::value,
26137                             "DisplayPresentInfoKHR is not nothrow_move_constructible!" );
26138 
26139   template <>
26140   struct CppType<StructureType, StructureType::eDisplayPresentInfoKHR>
26141   {
26142     using Type = DisplayPresentInfoKHR;
26143   };
26144 
26145   struct DisplayPropertiesKHR
26146   {
26147     using NativeType = VkDisplayPropertiesKHR;
26148 
26149 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
26150     VULKAN_HPP_CONSTEXPR
DisplayPropertiesKHRVULKAN_HPP_NAMESPACE::DisplayPropertiesKHR26151       DisplayPropertiesKHR( VULKAN_HPP_NAMESPACE::DisplayKHR               display_              = {},
26152                             const char *                                   displayName_          = {},
26153                             VULKAN_HPP_NAMESPACE::Extent2D                 physicalDimensions_   = {},
26154                             VULKAN_HPP_NAMESPACE::Extent2D                 physicalResolution_   = {},
26155                             VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR supportedTransforms_  = {},
26156                             VULKAN_HPP_NAMESPACE::Bool32                   planeReorderPossible_ = {},
26157                             VULKAN_HPP_NAMESPACE::Bool32                   persistentContent_ = {} ) VULKAN_HPP_NOEXCEPT
26158       : display( display_ )
26159       , displayName( displayName_ )
26160       , physicalDimensions( physicalDimensions_ )
26161       , physicalResolution( physicalResolution_ )
26162       , supportedTransforms( supportedTransforms_ )
26163       , planeReorderPossible( planeReorderPossible_ )
26164       , persistentContent( persistentContent_ )
26165     {}
26166 
26167     VULKAN_HPP_CONSTEXPR DisplayPropertiesKHR( DisplayPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26168 
DisplayPropertiesKHRVULKAN_HPP_NAMESPACE::DisplayPropertiesKHR26169     DisplayPropertiesKHR( VkDisplayPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
26170       : DisplayPropertiesKHR( *reinterpret_cast<DisplayPropertiesKHR const *>( &rhs ) )
26171     {}
26172 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
26173 
26174     DisplayPropertiesKHR & operator=( DisplayPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26175 
operator =VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR26176     DisplayPropertiesKHR & operator=( VkDisplayPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
26177     {
26178       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR const *>( &rhs );
26179       return *this;
26180     }
26181 
operator VkDisplayPropertiesKHR const&VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR26182     explicit operator VkDisplayPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
26183     {
26184       return *reinterpret_cast<const VkDisplayPropertiesKHR *>( this );
26185     }
26186 
operator VkDisplayPropertiesKHR&VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR26187     explicit operator VkDisplayPropertiesKHR &() VULKAN_HPP_NOEXCEPT
26188     {
26189       return *reinterpret_cast<VkDisplayPropertiesKHR *>( this );
26190     }
26191 
26192 #if 14 <= VULKAN_HPP_CPP_VERSION
26193     auto
26194 #else
26195     std::tuple<VULKAN_HPP_NAMESPACE::DisplayKHR const &,
26196                const char * const &,
26197                VULKAN_HPP_NAMESPACE::Extent2D const &,
26198                VULKAN_HPP_NAMESPACE::Extent2D const &,
26199                VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR const &,
26200                VULKAN_HPP_NAMESPACE::Bool32 const &,
26201                VULKAN_HPP_NAMESPACE::Bool32 const &>
26202 #endif
reflectVULKAN_HPP_NAMESPACE::DisplayPropertiesKHR26203       reflect() const VULKAN_HPP_NOEXCEPT
26204     {
26205       return std::tie( display,
26206                        displayName,
26207                        physicalDimensions,
26208                        physicalResolution,
26209                        supportedTransforms,
26210                        planeReorderPossible,
26211                        persistentContent );
26212     }
26213 
26214 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
26215     auto operator<=>( DisplayPropertiesKHR const & ) const = default;
26216 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR26217     bool operator==( DisplayPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
26218     {
26219       return this->reflect() == rhs.reflect();
26220     }
26221 
operator !=VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR26222     bool operator!=( DisplayPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
26223     {
26224       return this->reflect() != rhs.reflect();
26225     }
26226 #endif
26227 
26228   public:
26229     VULKAN_HPP_NAMESPACE::DisplayKHR               display              = {};
26230     const char *                                   displayName          = {};
26231     VULKAN_HPP_NAMESPACE::Extent2D                 physicalDimensions   = {};
26232     VULKAN_HPP_NAMESPACE::Extent2D                 physicalResolution   = {};
26233     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR supportedTransforms  = {};
26234     VULKAN_HPP_NAMESPACE::Bool32                   planeReorderPossible = {};
26235     VULKAN_HPP_NAMESPACE::Bool32                   persistentContent    = {};
26236   };
26237   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR ) == sizeof( VkDisplayPropertiesKHR ),
26238                             "struct and wrapper have different size!" );
26239   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR>::value,
26240                             "struct wrapper is not a standard layout!" );
26241   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR>::value,
26242                             "DisplayPropertiesKHR is not nothrow_move_constructible!" );
26243 
26244   struct DisplayProperties2KHR
26245   {
26246     using NativeType = VkDisplayProperties2KHR;
26247 
26248     static const bool                                  allowDuplicate = false;
26249     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDisplayProperties2KHR;
26250 
26251 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
26252     VULKAN_HPP_CONSTEXPR
DisplayProperties2KHRVULKAN_HPP_NAMESPACE::DisplayProperties2KHR26253       DisplayProperties2KHR( VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR displayProperties_ = {} ) VULKAN_HPP_NOEXCEPT
26254       : displayProperties( displayProperties_ )
26255     {}
26256 
26257     VULKAN_HPP_CONSTEXPR DisplayProperties2KHR( DisplayProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26258 
DisplayProperties2KHRVULKAN_HPP_NAMESPACE::DisplayProperties2KHR26259     DisplayProperties2KHR( VkDisplayProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
26260       : DisplayProperties2KHR( *reinterpret_cast<DisplayProperties2KHR const *>( &rhs ) )
26261     {}
26262 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
26263 
26264     DisplayProperties2KHR & operator=( DisplayProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26265 
operator =VULKAN_HPP_NAMESPACE::DisplayProperties2KHR26266     DisplayProperties2KHR & operator=( VkDisplayProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
26267     {
26268       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayProperties2KHR const *>( &rhs );
26269       return *this;
26270     }
26271 
operator VkDisplayProperties2KHR const&VULKAN_HPP_NAMESPACE::DisplayProperties2KHR26272     explicit operator VkDisplayProperties2KHR const &() const VULKAN_HPP_NOEXCEPT
26273     {
26274       return *reinterpret_cast<const VkDisplayProperties2KHR *>( this );
26275     }
26276 
operator VkDisplayProperties2KHR&VULKAN_HPP_NAMESPACE::DisplayProperties2KHR26277     explicit operator VkDisplayProperties2KHR &() VULKAN_HPP_NOEXCEPT
26278     {
26279       return *reinterpret_cast<VkDisplayProperties2KHR *>( this );
26280     }
26281 
26282 #if 14 <= VULKAN_HPP_CPP_VERSION
26283     auto
26284 #else
26285     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
26286                void * const &,
26287                VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR const &>
26288 #endif
reflectVULKAN_HPP_NAMESPACE::DisplayProperties2KHR26289       reflect() const VULKAN_HPP_NOEXCEPT
26290     {
26291       return std::tie( sType, pNext, displayProperties );
26292     }
26293 
26294 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
26295     auto operator<=>( DisplayProperties2KHR const & ) const = default;
26296 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayProperties2KHR26297     bool operator==( DisplayProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
26298     {
26299       return this->reflect() == rhs.reflect();
26300     }
26301 
operator !=VULKAN_HPP_NAMESPACE::DisplayProperties2KHR26302     bool operator!=( DisplayProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
26303     {
26304       return this->reflect() != rhs.reflect();
26305     }
26306 #endif
26307 
26308   public:
26309     VULKAN_HPP_NAMESPACE::StructureType        sType             = StructureType::eDisplayProperties2KHR;
26310     void *                                     pNext             = {};
26311     VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR displayProperties = {};
26312   };
26313   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayProperties2KHR ) == sizeof( VkDisplayProperties2KHR ),
26314                             "struct and wrapper have different size!" );
26315   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DisplayProperties2KHR>::value,
26316                             "struct wrapper is not a standard layout!" );
26317   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DisplayProperties2KHR>::value,
26318                             "DisplayProperties2KHR is not nothrow_move_constructible!" );
26319 
26320   template <>
26321   struct CppType<StructureType, StructureType::eDisplayProperties2KHR>
26322   {
26323     using Type = DisplayProperties2KHR;
26324   };
26325 
26326   struct DisplaySurfaceCreateInfoKHR
26327   {
26328     using NativeType = VkDisplaySurfaceCreateInfoKHR;
26329 
26330     static const bool                                  allowDuplicate = false;
26331     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDisplaySurfaceCreateInfoKHR;
26332 
26333 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
26334     VULKAN_HPP_CONSTEXPR
DisplaySurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR26335       DisplaySurfaceCreateInfoKHR( VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateFlagsKHR flags_           = {},
26336                                    VULKAN_HPP_NAMESPACE::DisplayModeKHR               displayMode_     = {},
26337                                    uint32_t                                           planeIndex_      = {},
26338                                    uint32_t                                           planeStackIndex_ = {},
26339                                    VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR  transform_ =
26340                                      VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity,
26341                                    float                                              globalAlpha_ = {},
26342                                    VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagBitsKHR alphaMode_ =
26343                                      VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagBitsKHR::eOpaque,
26344                                    VULKAN_HPP_NAMESPACE::Extent2D imageExtent_ = {} ) VULKAN_HPP_NOEXCEPT
26345       : flags( flags_ )
26346       , displayMode( displayMode_ )
26347       , planeIndex( planeIndex_ )
26348       , planeStackIndex( planeStackIndex_ )
26349       , transform( transform_ )
26350       , globalAlpha( globalAlpha_ )
26351       , alphaMode( alphaMode_ )
26352       , imageExtent( imageExtent_ )
26353     {}
26354 
26355     VULKAN_HPP_CONSTEXPR
26356       DisplaySurfaceCreateInfoKHR( DisplaySurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26357 
DisplaySurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR26358     DisplaySurfaceCreateInfoKHR( VkDisplaySurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
26359       : DisplaySurfaceCreateInfoKHR( *reinterpret_cast<DisplaySurfaceCreateInfoKHR const *>( &rhs ) )
26360     {}
26361 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
26362 
26363     DisplaySurfaceCreateInfoKHR & operator=( DisplaySurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26364 
operator =VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR26365     DisplaySurfaceCreateInfoKHR & operator=( VkDisplaySurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
26366     {
26367       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR const *>( &rhs );
26368       return *this;
26369     }
26370 
26371 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR26372     VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
26373     {
26374       pNext = pNext_;
26375       return *this;
26376     }
26377 
26378     VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR &
setFlagsVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR26379                             setFlags( VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
26380     {
26381       flags = flags_;
26382       return *this;
26383     }
26384 
26385     VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR &
setDisplayModeVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR26386                             setDisplayMode( VULKAN_HPP_NAMESPACE::DisplayModeKHR displayMode_ ) VULKAN_HPP_NOEXCEPT
26387     {
26388       displayMode = displayMode_;
26389       return *this;
26390     }
26391 
setPlaneIndexVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR26392     VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setPlaneIndex( uint32_t planeIndex_ ) VULKAN_HPP_NOEXCEPT
26393     {
26394       planeIndex = planeIndex_;
26395       return *this;
26396     }
26397 
26398     VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR &
setPlaneStackIndexVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR26399                             setPlaneStackIndex( uint32_t planeStackIndex_ ) VULKAN_HPP_NOEXCEPT
26400     {
26401       planeStackIndex = planeStackIndex_;
26402       return *this;
26403     }
26404 
26405     VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR &
setTransformVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR26406       setTransform( VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_ ) VULKAN_HPP_NOEXCEPT
26407     {
26408       transform = transform_;
26409       return *this;
26410     }
26411 
setGlobalAlphaVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR26412     VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setGlobalAlpha( float globalAlpha_ ) VULKAN_HPP_NOEXCEPT
26413     {
26414       globalAlpha = globalAlpha_;
26415       return *this;
26416     }
26417 
26418     VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR &
setAlphaModeVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR26419       setAlphaMode( VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagBitsKHR alphaMode_ ) VULKAN_HPP_NOEXCEPT
26420     {
26421       alphaMode = alphaMode_;
26422       return *this;
26423     }
26424 
26425     VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR &
setImageExtentVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR26426                             setImageExtent( VULKAN_HPP_NAMESPACE::Extent2D const & imageExtent_ ) VULKAN_HPP_NOEXCEPT
26427     {
26428       imageExtent = imageExtent_;
26429       return *this;
26430     }
26431 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
26432 
operator VkDisplaySurfaceCreateInfoKHR const&VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR26433     explicit operator VkDisplaySurfaceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
26434     {
26435       return *reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR *>( this );
26436     }
26437 
operator VkDisplaySurfaceCreateInfoKHR&VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR26438     explicit operator VkDisplaySurfaceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
26439     {
26440       return *reinterpret_cast<VkDisplaySurfaceCreateInfoKHR *>( this );
26441     }
26442 
26443 #if 14 <= VULKAN_HPP_CPP_VERSION
26444     auto
26445 #else
26446     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
26447                const void * const &,
26448                VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateFlagsKHR const &,
26449                VULKAN_HPP_NAMESPACE::DisplayModeKHR const &,
26450                uint32_t const &,
26451                uint32_t const &,
26452                VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR const &,
26453                float const &,
26454                VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagBitsKHR const &,
26455                VULKAN_HPP_NAMESPACE::Extent2D const &>
26456 #endif
reflectVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR26457       reflect() const VULKAN_HPP_NOEXCEPT
26458     {
26459       return std::tie(
26460         sType, pNext, flags, displayMode, planeIndex, planeStackIndex, transform, globalAlpha, alphaMode, imageExtent );
26461     }
26462 
26463 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
26464     auto operator<=>( DisplaySurfaceCreateInfoKHR const & ) const = default;
26465 #else
operator ==VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR26466     bool operator==( DisplaySurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
26467     {
26468       return this->reflect() == rhs.reflect();
26469     }
26470 
operator !=VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR26471     bool operator!=( DisplaySurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
26472     {
26473       return this->reflect() != rhs.reflect();
26474     }
26475 #endif
26476 
26477   public:
26478     VULKAN_HPP_NAMESPACE::StructureType                sType           = StructureType::eDisplaySurfaceCreateInfoKHR;
26479     const void *                                       pNext           = {};
26480     VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateFlagsKHR flags           = {};
26481     VULKAN_HPP_NAMESPACE::DisplayModeKHR               displayMode     = {};
26482     uint32_t                                           planeIndex      = {};
26483     uint32_t                                           planeStackIndex = {};
26484     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR  transform =
26485       VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity;
26486     float                                              globalAlpha = {};
26487     VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagBitsKHR alphaMode =
26488       VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagBitsKHR::eOpaque;
26489     VULKAN_HPP_NAMESPACE::Extent2D imageExtent = {};
26490   };
26491   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR ) ==
26492                               sizeof( VkDisplaySurfaceCreateInfoKHR ),
26493                             "struct and wrapper have different size!" );
26494   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR>::value,
26495                             "struct wrapper is not a standard layout!" );
26496   VULKAN_HPP_STATIC_ASSERT(
26497     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR>::value,
26498     "DisplaySurfaceCreateInfoKHR is not nothrow_move_constructible!" );
26499 
26500   template <>
26501   struct CppType<StructureType, StructureType::eDisplaySurfaceCreateInfoKHR>
26502   {
26503     using Type = DisplaySurfaceCreateInfoKHR;
26504   };
26505 
26506   struct DrawIndexedIndirectCommand
26507   {
26508     using NativeType = VkDrawIndexedIndirectCommand;
26509 
26510 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DrawIndexedIndirectCommandVULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand26511     VULKAN_HPP_CONSTEXPR DrawIndexedIndirectCommand( uint32_t indexCount_    = {},
26512                                                      uint32_t instanceCount_ = {},
26513                                                      uint32_t firstIndex_    = {},
26514                                                      int32_t  vertexOffset_  = {},
26515                                                      uint32_t firstInstance_ = {} ) VULKAN_HPP_NOEXCEPT
26516       : indexCount( indexCount_ )
26517       , instanceCount( instanceCount_ )
26518       , firstIndex( firstIndex_ )
26519       , vertexOffset( vertexOffset_ )
26520       , firstInstance( firstInstance_ )
26521     {}
26522 
26523     VULKAN_HPP_CONSTEXPR
26524       DrawIndexedIndirectCommand( DrawIndexedIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26525 
DrawIndexedIndirectCommandVULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand26526     DrawIndexedIndirectCommand( VkDrawIndexedIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT
26527       : DrawIndexedIndirectCommand( *reinterpret_cast<DrawIndexedIndirectCommand const *>( &rhs ) )
26528     {}
26529 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
26530 
26531     DrawIndexedIndirectCommand & operator=( DrawIndexedIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26532 
operator =VULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand26533     DrawIndexedIndirectCommand & operator=( VkDrawIndexedIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT
26534     {
26535       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand const *>( &rhs );
26536       return *this;
26537     }
26538 
26539 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setIndexCountVULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand26540     VULKAN_HPP_CONSTEXPR_14 DrawIndexedIndirectCommand & setIndexCount( uint32_t indexCount_ ) VULKAN_HPP_NOEXCEPT
26541     {
26542       indexCount = indexCount_;
26543       return *this;
26544     }
26545 
setInstanceCountVULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand26546     VULKAN_HPP_CONSTEXPR_14 DrawIndexedIndirectCommand & setInstanceCount( uint32_t instanceCount_ ) VULKAN_HPP_NOEXCEPT
26547     {
26548       instanceCount = instanceCount_;
26549       return *this;
26550     }
26551 
setFirstIndexVULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand26552     VULKAN_HPP_CONSTEXPR_14 DrawIndexedIndirectCommand & setFirstIndex( uint32_t firstIndex_ ) VULKAN_HPP_NOEXCEPT
26553     {
26554       firstIndex = firstIndex_;
26555       return *this;
26556     }
26557 
setVertexOffsetVULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand26558     VULKAN_HPP_CONSTEXPR_14 DrawIndexedIndirectCommand & setVertexOffset( int32_t vertexOffset_ ) VULKAN_HPP_NOEXCEPT
26559     {
26560       vertexOffset = vertexOffset_;
26561       return *this;
26562     }
26563 
setFirstInstanceVULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand26564     VULKAN_HPP_CONSTEXPR_14 DrawIndexedIndirectCommand & setFirstInstance( uint32_t firstInstance_ ) VULKAN_HPP_NOEXCEPT
26565     {
26566       firstInstance = firstInstance_;
26567       return *this;
26568     }
26569 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
26570 
operator VkDrawIndexedIndirectCommand const&VULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand26571     explicit operator VkDrawIndexedIndirectCommand const &() const VULKAN_HPP_NOEXCEPT
26572     {
26573       return *reinterpret_cast<const VkDrawIndexedIndirectCommand *>( this );
26574     }
26575 
operator VkDrawIndexedIndirectCommand&VULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand26576     explicit operator VkDrawIndexedIndirectCommand &() VULKAN_HPP_NOEXCEPT
26577     {
26578       return *reinterpret_cast<VkDrawIndexedIndirectCommand *>( this );
26579     }
26580 
26581 #if 14 <= VULKAN_HPP_CPP_VERSION
26582     auto
26583 #else
26584     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &, int32_t const &, uint32_t const &>
26585 #endif
reflectVULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand26586       reflect() const VULKAN_HPP_NOEXCEPT
26587     {
26588       return std::tie( indexCount, instanceCount, firstIndex, vertexOffset, firstInstance );
26589     }
26590 
26591 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
26592     auto operator<=>( DrawIndexedIndirectCommand const & ) const = default;
26593 #else
operator ==VULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand26594     bool operator==( DrawIndexedIndirectCommand const & rhs ) const VULKAN_HPP_NOEXCEPT
26595     {
26596       return this->reflect() == rhs.reflect();
26597     }
26598 
operator !=VULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand26599     bool operator!=( DrawIndexedIndirectCommand const & rhs ) const VULKAN_HPP_NOEXCEPT
26600     {
26601       return this->reflect() != rhs.reflect();
26602     }
26603 #endif
26604 
26605   public:
26606     uint32_t indexCount    = {};
26607     uint32_t instanceCount = {};
26608     uint32_t firstIndex    = {};
26609     int32_t  vertexOffset  = {};
26610     uint32_t firstInstance = {};
26611   };
26612   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand ) ==
26613                               sizeof( VkDrawIndexedIndirectCommand ),
26614                             "struct and wrapper have different size!" );
26615   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand>::value,
26616                             "struct wrapper is not a standard layout!" );
26617   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand>::value,
26618                             "DrawIndexedIndirectCommand is not nothrow_move_constructible!" );
26619 
26620   struct DrawIndirectCommand
26621   {
26622     using NativeType = VkDrawIndirectCommand;
26623 
26624 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DrawIndirectCommandVULKAN_HPP_NAMESPACE::DrawIndirectCommand26625     VULKAN_HPP_CONSTEXPR DrawIndirectCommand( uint32_t vertexCount_   = {},
26626                                               uint32_t instanceCount_ = {},
26627                                               uint32_t firstVertex_   = {},
26628                                               uint32_t firstInstance_ = {} ) VULKAN_HPP_NOEXCEPT
26629       : vertexCount( vertexCount_ )
26630       , instanceCount( instanceCount_ )
26631       , firstVertex( firstVertex_ )
26632       , firstInstance( firstInstance_ )
26633     {}
26634 
26635     VULKAN_HPP_CONSTEXPR DrawIndirectCommand( DrawIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26636 
DrawIndirectCommandVULKAN_HPP_NAMESPACE::DrawIndirectCommand26637     DrawIndirectCommand( VkDrawIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT
26638       : DrawIndirectCommand( *reinterpret_cast<DrawIndirectCommand const *>( &rhs ) )
26639     {}
26640 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
26641 
26642     DrawIndirectCommand & operator=( DrawIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26643 
operator =VULKAN_HPP_NAMESPACE::DrawIndirectCommand26644     DrawIndirectCommand & operator=( VkDrawIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT
26645     {
26646       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DrawIndirectCommand const *>( &rhs );
26647       return *this;
26648     }
26649 
26650 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setVertexCountVULKAN_HPP_NAMESPACE::DrawIndirectCommand26651     VULKAN_HPP_CONSTEXPR_14 DrawIndirectCommand & setVertexCount( uint32_t vertexCount_ ) VULKAN_HPP_NOEXCEPT
26652     {
26653       vertexCount = vertexCount_;
26654       return *this;
26655     }
26656 
setInstanceCountVULKAN_HPP_NAMESPACE::DrawIndirectCommand26657     VULKAN_HPP_CONSTEXPR_14 DrawIndirectCommand & setInstanceCount( uint32_t instanceCount_ ) VULKAN_HPP_NOEXCEPT
26658     {
26659       instanceCount = instanceCount_;
26660       return *this;
26661     }
26662 
setFirstVertexVULKAN_HPP_NAMESPACE::DrawIndirectCommand26663     VULKAN_HPP_CONSTEXPR_14 DrawIndirectCommand & setFirstVertex( uint32_t firstVertex_ ) VULKAN_HPP_NOEXCEPT
26664     {
26665       firstVertex = firstVertex_;
26666       return *this;
26667     }
26668 
setFirstInstanceVULKAN_HPP_NAMESPACE::DrawIndirectCommand26669     VULKAN_HPP_CONSTEXPR_14 DrawIndirectCommand & setFirstInstance( uint32_t firstInstance_ ) VULKAN_HPP_NOEXCEPT
26670     {
26671       firstInstance = firstInstance_;
26672       return *this;
26673     }
26674 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
26675 
operator VkDrawIndirectCommand const&VULKAN_HPP_NAMESPACE::DrawIndirectCommand26676     explicit operator VkDrawIndirectCommand const &() const VULKAN_HPP_NOEXCEPT
26677     {
26678       return *reinterpret_cast<const VkDrawIndirectCommand *>( this );
26679     }
26680 
operator VkDrawIndirectCommand&VULKAN_HPP_NAMESPACE::DrawIndirectCommand26681     explicit operator VkDrawIndirectCommand &() VULKAN_HPP_NOEXCEPT
26682     {
26683       return *reinterpret_cast<VkDrawIndirectCommand *>( this );
26684     }
26685 
26686 #if 14 <= VULKAN_HPP_CPP_VERSION
26687     auto
26688 #else
26689     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &>
26690 #endif
reflectVULKAN_HPP_NAMESPACE::DrawIndirectCommand26691       reflect() const VULKAN_HPP_NOEXCEPT
26692     {
26693       return std::tie( vertexCount, instanceCount, firstVertex, firstInstance );
26694     }
26695 
26696 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
26697     auto operator<=>( DrawIndirectCommand const & ) const = default;
26698 #else
operator ==VULKAN_HPP_NAMESPACE::DrawIndirectCommand26699     bool operator==( DrawIndirectCommand const & rhs ) const VULKAN_HPP_NOEXCEPT
26700     {
26701       return this->reflect() == rhs.reflect();
26702     }
26703 
operator !=VULKAN_HPP_NAMESPACE::DrawIndirectCommand26704     bool operator!=( DrawIndirectCommand const & rhs ) const VULKAN_HPP_NOEXCEPT
26705     {
26706       return this->reflect() != rhs.reflect();
26707     }
26708 #endif
26709 
26710   public:
26711     uint32_t vertexCount   = {};
26712     uint32_t instanceCount = {};
26713     uint32_t firstVertex   = {};
26714     uint32_t firstInstance = {};
26715   };
26716   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DrawIndirectCommand ) == sizeof( VkDrawIndirectCommand ),
26717                             "struct and wrapper have different size!" );
26718   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DrawIndirectCommand>::value,
26719                             "struct wrapper is not a standard layout!" );
26720   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DrawIndirectCommand>::value,
26721                             "DrawIndirectCommand is not nothrow_move_constructible!" );
26722 
26723   struct DrawMeshTasksIndirectCommandNV
26724   {
26725     using NativeType = VkDrawMeshTasksIndirectCommandNV;
26726 
26727 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DrawMeshTasksIndirectCommandNVVULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV26728     VULKAN_HPP_CONSTEXPR DrawMeshTasksIndirectCommandNV( uint32_t taskCount_ = {},
26729                                                          uint32_t firstTask_ = {} ) VULKAN_HPP_NOEXCEPT
26730       : taskCount( taskCount_ )
26731       , firstTask( firstTask_ )
26732     {}
26733 
26734     VULKAN_HPP_CONSTEXPR
26735       DrawMeshTasksIndirectCommandNV( DrawMeshTasksIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26736 
DrawMeshTasksIndirectCommandNVVULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV26737     DrawMeshTasksIndirectCommandNV( VkDrawMeshTasksIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
26738       : DrawMeshTasksIndirectCommandNV( *reinterpret_cast<DrawMeshTasksIndirectCommandNV const *>( &rhs ) )
26739     {}
26740 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
26741 
26742     DrawMeshTasksIndirectCommandNV &
26743       operator=( DrawMeshTasksIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26744 
operator =VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV26745     DrawMeshTasksIndirectCommandNV & operator=( VkDrawMeshTasksIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
26746     {
26747       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV const *>( &rhs );
26748       return *this;
26749     }
26750 
26751 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setTaskCountVULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV26752     VULKAN_HPP_CONSTEXPR_14 DrawMeshTasksIndirectCommandNV & setTaskCount( uint32_t taskCount_ ) VULKAN_HPP_NOEXCEPT
26753     {
26754       taskCount = taskCount_;
26755       return *this;
26756     }
26757 
setFirstTaskVULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV26758     VULKAN_HPP_CONSTEXPR_14 DrawMeshTasksIndirectCommandNV & setFirstTask( uint32_t firstTask_ ) VULKAN_HPP_NOEXCEPT
26759     {
26760       firstTask = firstTask_;
26761       return *this;
26762     }
26763 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
26764 
operator VkDrawMeshTasksIndirectCommandNV const&VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV26765     explicit operator VkDrawMeshTasksIndirectCommandNV const &() const VULKAN_HPP_NOEXCEPT
26766     {
26767       return *reinterpret_cast<const VkDrawMeshTasksIndirectCommandNV *>( this );
26768     }
26769 
operator VkDrawMeshTasksIndirectCommandNV&VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV26770     explicit operator VkDrawMeshTasksIndirectCommandNV &() VULKAN_HPP_NOEXCEPT
26771     {
26772       return *reinterpret_cast<VkDrawMeshTasksIndirectCommandNV *>( this );
26773     }
26774 
26775 #if 14 <= VULKAN_HPP_CPP_VERSION
26776     auto
26777 #else
26778     std::tuple<uint32_t const &, uint32_t const &>
26779 #endif
reflectVULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV26780       reflect() const VULKAN_HPP_NOEXCEPT
26781     {
26782       return std::tie( taskCount, firstTask );
26783     }
26784 
26785 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
26786     auto operator<=>( DrawMeshTasksIndirectCommandNV const & ) const = default;
26787 #else
operator ==VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV26788     bool operator==( DrawMeshTasksIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
26789     {
26790       return this->reflect() == rhs.reflect();
26791     }
26792 
operator !=VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV26793     bool operator!=( DrawMeshTasksIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
26794     {
26795       return this->reflect() != rhs.reflect();
26796     }
26797 #endif
26798 
26799   public:
26800     uint32_t taskCount = {};
26801     uint32_t firstTask = {};
26802   };
26803   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV ) ==
26804                               sizeof( VkDrawMeshTasksIndirectCommandNV ),
26805                             "struct and wrapper have different size!" );
26806   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV>::value,
26807                             "struct wrapper is not a standard layout!" );
26808   VULKAN_HPP_STATIC_ASSERT(
26809     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV>::value,
26810     "DrawMeshTasksIndirectCommandNV is not nothrow_move_constructible!" );
26811 
26812   struct DrmFormatModifierProperties2EXT
26813   {
26814     using NativeType = VkDrmFormatModifierProperties2EXT;
26815 
26816 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DrmFormatModifierProperties2EXTVULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT26817     VULKAN_HPP_CONSTEXPR DrmFormatModifierProperties2EXT(
26818       uint64_t                                     drmFormatModifier_               = {},
26819       uint32_t                                     drmFormatModifierPlaneCount_     = {},
26820       VULKAN_HPP_NAMESPACE::FormatFeatureFlags2KHR drmFormatModifierTilingFeatures_ = {} ) VULKAN_HPP_NOEXCEPT
26821       : drmFormatModifier( drmFormatModifier_ )
26822       , drmFormatModifierPlaneCount( drmFormatModifierPlaneCount_ )
26823       , drmFormatModifierTilingFeatures( drmFormatModifierTilingFeatures_ )
26824     {}
26825 
26826     VULKAN_HPP_CONSTEXPR
26827       DrmFormatModifierProperties2EXT( DrmFormatModifierProperties2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26828 
DrmFormatModifierProperties2EXTVULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT26829     DrmFormatModifierProperties2EXT( VkDrmFormatModifierProperties2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
26830       : DrmFormatModifierProperties2EXT( *reinterpret_cast<DrmFormatModifierProperties2EXT const *>( &rhs ) )
26831     {}
26832 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
26833 
26834     DrmFormatModifierProperties2EXT &
26835       operator=( DrmFormatModifierProperties2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26836 
operator =VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT26837     DrmFormatModifierProperties2EXT & operator=( VkDrmFormatModifierProperties2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
26838     {
26839       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT const *>( &rhs );
26840       return *this;
26841     }
26842 
operator VkDrmFormatModifierProperties2EXT const&VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT26843     explicit operator VkDrmFormatModifierProperties2EXT const &() const VULKAN_HPP_NOEXCEPT
26844     {
26845       return *reinterpret_cast<const VkDrmFormatModifierProperties2EXT *>( this );
26846     }
26847 
operator VkDrmFormatModifierProperties2EXT&VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT26848     explicit operator VkDrmFormatModifierProperties2EXT &() VULKAN_HPP_NOEXCEPT
26849     {
26850       return *reinterpret_cast<VkDrmFormatModifierProperties2EXT *>( this );
26851     }
26852 
26853 #if 14 <= VULKAN_HPP_CPP_VERSION
26854     auto
26855 #else
26856     std::tuple<uint64_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::FormatFeatureFlags2KHR const &>
26857 #endif
reflectVULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT26858       reflect() const VULKAN_HPP_NOEXCEPT
26859     {
26860       return std::tie( drmFormatModifier, drmFormatModifierPlaneCount, drmFormatModifierTilingFeatures );
26861     }
26862 
26863 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
26864     auto operator<=>( DrmFormatModifierProperties2EXT const & ) const = default;
26865 #else
operator ==VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT26866     bool operator==( DrmFormatModifierProperties2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
26867     {
26868       return this->reflect() == rhs.reflect();
26869     }
26870 
operator !=VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT26871     bool operator!=( DrmFormatModifierProperties2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
26872     {
26873       return this->reflect() != rhs.reflect();
26874     }
26875 #endif
26876 
26877   public:
26878     uint64_t                                     drmFormatModifier               = {};
26879     uint32_t                                     drmFormatModifierPlaneCount     = {};
26880     VULKAN_HPP_NAMESPACE::FormatFeatureFlags2KHR drmFormatModifierTilingFeatures = {};
26881   };
26882   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT ) ==
26883                               sizeof( VkDrmFormatModifierProperties2EXT ),
26884                             "struct and wrapper have different size!" );
26885   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT>::value,
26886                             "struct wrapper is not a standard layout!" );
26887   VULKAN_HPP_STATIC_ASSERT(
26888     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT>::value,
26889     "DrmFormatModifierProperties2EXT is not nothrow_move_constructible!" );
26890 
26891   struct DrmFormatModifierPropertiesEXT
26892   {
26893     using NativeType = VkDrmFormatModifierPropertiesEXT;
26894 
26895 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DrmFormatModifierPropertiesEXTVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT26896     VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesEXT(
26897       uint64_t                                 drmFormatModifier_               = {},
26898       uint32_t                                 drmFormatModifierPlaneCount_     = {},
26899       VULKAN_HPP_NAMESPACE::FormatFeatureFlags drmFormatModifierTilingFeatures_ = {} ) VULKAN_HPP_NOEXCEPT
26900       : drmFormatModifier( drmFormatModifier_ )
26901       , drmFormatModifierPlaneCount( drmFormatModifierPlaneCount_ )
26902       , drmFormatModifierTilingFeatures( drmFormatModifierTilingFeatures_ )
26903     {}
26904 
26905     VULKAN_HPP_CONSTEXPR
26906       DrmFormatModifierPropertiesEXT( DrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26907 
DrmFormatModifierPropertiesEXTVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT26908     DrmFormatModifierPropertiesEXT( VkDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
26909       : DrmFormatModifierPropertiesEXT( *reinterpret_cast<DrmFormatModifierPropertiesEXT const *>( &rhs ) )
26910     {}
26911 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
26912 
26913     DrmFormatModifierPropertiesEXT &
26914       operator=( DrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26915 
operator =VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT26916     DrmFormatModifierPropertiesEXT & operator=( VkDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
26917     {
26918       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT const *>( &rhs );
26919       return *this;
26920     }
26921 
operator VkDrmFormatModifierPropertiesEXT const&VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT26922     explicit operator VkDrmFormatModifierPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
26923     {
26924       return *reinterpret_cast<const VkDrmFormatModifierPropertiesEXT *>( this );
26925     }
26926 
operator VkDrmFormatModifierPropertiesEXT&VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT26927     explicit operator VkDrmFormatModifierPropertiesEXT &() VULKAN_HPP_NOEXCEPT
26928     {
26929       return *reinterpret_cast<VkDrmFormatModifierPropertiesEXT *>( this );
26930     }
26931 
26932 #if 14 <= VULKAN_HPP_CPP_VERSION
26933     auto
26934 #else
26935     std::tuple<uint64_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::FormatFeatureFlags const &>
26936 #endif
reflectVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT26937       reflect() const VULKAN_HPP_NOEXCEPT
26938     {
26939       return std::tie( drmFormatModifier, drmFormatModifierPlaneCount, drmFormatModifierTilingFeatures );
26940     }
26941 
26942 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
26943     auto operator<=>( DrmFormatModifierPropertiesEXT const & ) const = default;
26944 #else
operator ==VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT26945     bool operator==( DrmFormatModifierPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
26946     {
26947       return this->reflect() == rhs.reflect();
26948     }
26949 
operator !=VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT26950     bool operator!=( DrmFormatModifierPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
26951     {
26952       return this->reflect() != rhs.reflect();
26953     }
26954 #endif
26955 
26956   public:
26957     uint64_t                                 drmFormatModifier               = {};
26958     uint32_t                                 drmFormatModifierPlaneCount     = {};
26959     VULKAN_HPP_NAMESPACE::FormatFeatureFlags drmFormatModifierTilingFeatures = {};
26960   };
26961   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT ) ==
26962                               sizeof( VkDrmFormatModifierPropertiesEXT ),
26963                             "struct and wrapper have different size!" );
26964   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT>::value,
26965                             "struct wrapper is not a standard layout!" );
26966   VULKAN_HPP_STATIC_ASSERT(
26967     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT>::value,
26968     "DrmFormatModifierPropertiesEXT is not nothrow_move_constructible!" );
26969 
26970   struct DrmFormatModifierPropertiesList2EXT
26971   {
26972     using NativeType = VkDrmFormatModifierPropertiesList2EXT;
26973 
26974     static const bool                                  allowDuplicate = false;
26975     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
26976       StructureType::eDrmFormatModifierPropertiesList2EXT;
26977 
26978 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DrmFormatModifierPropertiesList2EXTVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT26979     VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesList2EXT(
26980       uint32_t                                                drmFormatModifierCount_       = {},
26981       VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT * pDrmFormatModifierProperties_ = {} ) VULKAN_HPP_NOEXCEPT
26982       : drmFormatModifierCount( drmFormatModifierCount_ )
26983       , pDrmFormatModifierProperties( pDrmFormatModifierProperties_ )
26984     {}
26985 
26986     VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesList2EXT( DrmFormatModifierPropertiesList2EXT const & rhs )
26987       VULKAN_HPP_NOEXCEPT = default;
26988 
DrmFormatModifierPropertiesList2EXTVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT26989     DrmFormatModifierPropertiesList2EXT( VkDrmFormatModifierPropertiesList2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
26990       : DrmFormatModifierPropertiesList2EXT( *reinterpret_cast<DrmFormatModifierPropertiesList2EXT const *>( &rhs ) )
26991     {}
26992 
26993 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DrmFormatModifierPropertiesList2EXTVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT26994     DrmFormatModifierPropertiesList2EXT(
26995       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT> const &
26996         drmFormatModifierProperties_ )
26997       : drmFormatModifierCount( static_cast<uint32_t>( drmFormatModifierProperties_.size() ) )
26998       , pDrmFormatModifierProperties( drmFormatModifierProperties_.data() )
26999     {}
27000 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27001 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
27002 
27003     DrmFormatModifierPropertiesList2EXT &
27004       operator=( DrmFormatModifierPropertiesList2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27005 
27006     DrmFormatModifierPropertiesList2EXT &
operator =VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT27007       operator=( VkDrmFormatModifierPropertiesList2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
27008     {
27009       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT const *>( &rhs );
27010       return *this;
27011     }
27012 
operator VkDrmFormatModifierPropertiesList2EXT const&VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT27013     explicit operator VkDrmFormatModifierPropertiesList2EXT const &() const VULKAN_HPP_NOEXCEPT
27014     {
27015       return *reinterpret_cast<const VkDrmFormatModifierPropertiesList2EXT *>( this );
27016     }
27017 
operator VkDrmFormatModifierPropertiesList2EXT&VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT27018     explicit operator VkDrmFormatModifierPropertiesList2EXT &() VULKAN_HPP_NOEXCEPT
27019     {
27020       return *reinterpret_cast<VkDrmFormatModifierPropertiesList2EXT *>( this );
27021     }
27022 
27023 #if 14 <= VULKAN_HPP_CPP_VERSION
27024     auto
27025 #else
27026     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
27027                void * const &,
27028                uint32_t const &,
27029                VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT * const &>
27030 #endif
reflectVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT27031       reflect() const VULKAN_HPP_NOEXCEPT
27032     {
27033       return std::tie( sType, pNext, drmFormatModifierCount, pDrmFormatModifierProperties );
27034     }
27035 
27036 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
27037     auto operator<=>( DrmFormatModifierPropertiesList2EXT const & ) const = default;
27038 #else
operator ==VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT27039     bool operator==( DrmFormatModifierPropertiesList2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
27040     {
27041       return this->reflect() == rhs.reflect();
27042     }
27043 
operator !=VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT27044     bool operator!=( DrmFormatModifierPropertiesList2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
27045     {
27046       return this->reflect() != rhs.reflect();
27047     }
27048 #endif
27049 
27050   public:
27051     VULKAN_HPP_NAMESPACE::StructureType                     sType = StructureType::eDrmFormatModifierPropertiesList2EXT;
27052     void *                                                  pNext = {};
27053     uint32_t                                                drmFormatModifierCount       = {};
27054     VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT * pDrmFormatModifierProperties = {};
27055   };
27056   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT ) ==
27057                               sizeof( VkDrmFormatModifierPropertiesList2EXT ),
27058                             "struct and wrapper have different size!" );
27059   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT>::value,
27060                             "struct wrapper is not a standard layout!" );
27061   VULKAN_HPP_STATIC_ASSERT(
27062     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT>::value,
27063     "DrmFormatModifierPropertiesList2EXT is not nothrow_move_constructible!" );
27064 
27065   template <>
27066   struct CppType<StructureType, StructureType::eDrmFormatModifierPropertiesList2EXT>
27067   {
27068     using Type = DrmFormatModifierPropertiesList2EXT;
27069   };
27070 
27071   struct DrmFormatModifierPropertiesListEXT
27072   {
27073     using NativeType = VkDrmFormatModifierPropertiesListEXT;
27074 
27075     static const bool                                  allowDuplicate = false;
27076     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
27077       StructureType::eDrmFormatModifierPropertiesListEXT;
27078 
27079 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DrmFormatModifierPropertiesListEXTVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT27080     VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesListEXT(
27081       uint32_t                                               drmFormatModifierCount_       = {},
27082       VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT * pDrmFormatModifierProperties_ = {} ) VULKAN_HPP_NOEXCEPT
27083       : drmFormatModifierCount( drmFormatModifierCount_ )
27084       , pDrmFormatModifierProperties( pDrmFormatModifierProperties_ )
27085     {}
27086 
27087     VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesListEXT( DrmFormatModifierPropertiesListEXT const & rhs )
27088       VULKAN_HPP_NOEXCEPT = default;
27089 
DrmFormatModifierPropertiesListEXTVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT27090     DrmFormatModifierPropertiesListEXT( VkDrmFormatModifierPropertiesListEXT const & rhs ) VULKAN_HPP_NOEXCEPT
27091       : DrmFormatModifierPropertiesListEXT( *reinterpret_cast<DrmFormatModifierPropertiesListEXT const *>( &rhs ) )
27092     {}
27093 
27094 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DrmFormatModifierPropertiesListEXTVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT27095     DrmFormatModifierPropertiesListEXT(
27096       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT> const &
27097         drmFormatModifierProperties_ )
27098       : drmFormatModifierCount( static_cast<uint32_t>( drmFormatModifierProperties_.size() ) )
27099       , pDrmFormatModifierProperties( drmFormatModifierProperties_.data() )
27100     {}
27101 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27102 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
27103 
27104     DrmFormatModifierPropertiesListEXT &
27105       operator=( DrmFormatModifierPropertiesListEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27106 
27107     DrmFormatModifierPropertiesListEXT &
operator =VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT27108       operator=( VkDrmFormatModifierPropertiesListEXT const & rhs ) VULKAN_HPP_NOEXCEPT
27109     {
27110       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT const *>( &rhs );
27111       return *this;
27112     }
27113 
operator VkDrmFormatModifierPropertiesListEXT const&VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT27114     explicit operator VkDrmFormatModifierPropertiesListEXT const &() const VULKAN_HPP_NOEXCEPT
27115     {
27116       return *reinterpret_cast<const VkDrmFormatModifierPropertiesListEXT *>( this );
27117     }
27118 
operator VkDrmFormatModifierPropertiesListEXT&VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT27119     explicit operator VkDrmFormatModifierPropertiesListEXT &() VULKAN_HPP_NOEXCEPT
27120     {
27121       return *reinterpret_cast<VkDrmFormatModifierPropertiesListEXT *>( this );
27122     }
27123 
27124 #if 14 <= VULKAN_HPP_CPP_VERSION
27125     auto
27126 #else
27127     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
27128                void * const &,
27129                uint32_t const &,
27130                VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT * const &>
27131 #endif
reflectVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT27132       reflect() const VULKAN_HPP_NOEXCEPT
27133     {
27134       return std::tie( sType, pNext, drmFormatModifierCount, pDrmFormatModifierProperties );
27135     }
27136 
27137 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
27138     auto operator<=>( DrmFormatModifierPropertiesListEXT const & ) const = default;
27139 #else
operator ==VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT27140     bool operator==( DrmFormatModifierPropertiesListEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
27141     {
27142       return this->reflect() == rhs.reflect();
27143     }
27144 
operator !=VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT27145     bool operator!=( DrmFormatModifierPropertiesListEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
27146     {
27147       return this->reflect() != rhs.reflect();
27148     }
27149 #endif
27150 
27151   public:
27152     VULKAN_HPP_NAMESPACE::StructureType                    sType = StructureType::eDrmFormatModifierPropertiesListEXT;
27153     void *                                                 pNext = {};
27154     uint32_t                                               drmFormatModifierCount       = {};
27155     VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT * pDrmFormatModifierProperties = {};
27156   };
27157   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT ) ==
27158                               sizeof( VkDrmFormatModifierPropertiesListEXT ),
27159                             "struct and wrapper have different size!" );
27160   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT>::value,
27161                             "struct wrapper is not a standard layout!" );
27162   VULKAN_HPP_STATIC_ASSERT(
27163     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT>::value,
27164     "DrmFormatModifierPropertiesListEXT is not nothrow_move_constructible!" );
27165 
27166   template <>
27167   struct CppType<StructureType, StructureType::eDrmFormatModifierPropertiesListEXT>
27168   {
27169     using Type = DrmFormatModifierPropertiesListEXT;
27170   };
27171 
27172   struct EventCreateInfo
27173   {
27174     using NativeType = VkEventCreateInfo;
27175 
27176     static const bool                                  allowDuplicate = false;
27177     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eEventCreateInfo;
27178 
27179 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
EventCreateInfoVULKAN_HPP_NAMESPACE::EventCreateInfo27180     VULKAN_HPP_CONSTEXPR EventCreateInfo( VULKAN_HPP_NAMESPACE::EventCreateFlags flags_ = {} ) VULKAN_HPP_NOEXCEPT
27181       : flags( flags_ )
27182     {}
27183 
27184     VULKAN_HPP_CONSTEXPR EventCreateInfo( EventCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27185 
EventCreateInfoVULKAN_HPP_NAMESPACE::EventCreateInfo27186     EventCreateInfo( VkEventCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
27187       : EventCreateInfo( *reinterpret_cast<EventCreateInfo const *>( &rhs ) )
27188     {}
27189 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
27190 
27191     EventCreateInfo & operator=( EventCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27192 
operator =VULKAN_HPP_NAMESPACE::EventCreateInfo27193     EventCreateInfo & operator=( VkEventCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
27194     {
27195       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::EventCreateInfo const *>( &rhs );
27196       return *this;
27197     }
27198 
27199 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::EventCreateInfo27200     VULKAN_HPP_CONSTEXPR_14 EventCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
27201     {
27202       pNext = pNext_;
27203       return *this;
27204     }
27205 
27206     VULKAN_HPP_CONSTEXPR_14 EventCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::EventCreateInfo27207                             setFlags( VULKAN_HPP_NAMESPACE::EventCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
27208     {
27209       flags = flags_;
27210       return *this;
27211     }
27212 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
27213 
operator VkEventCreateInfo const&VULKAN_HPP_NAMESPACE::EventCreateInfo27214     explicit operator VkEventCreateInfo const &() const VULKAN_HPP_NOEXCEPT
27215     {
27216       return *reinterpret_cast<const VkEventCreateInfo *>( this );
27217     }
27218 
operator VkEventCreateInfo&VULKAN_HPP_NAMESPACE::EventCreateInfo27219     explicit operator VkEventCreateInfo &() VULKAN_HPP_NOEXCEPT
27220     {
27221       return *reinterpret_cast<VkEventCreateInfo *>( this );
27222     }
27223 
27224 #if 14 <= VULKAN_HPP_CPP_VERSION
27225     auto
27226 #else
27227     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
27228                const void * const &,
27229                VULKAN_HPP_NAMESPACE::EventCreateFlags const &>
27230 #endif
reflectVULKAN_HPP_NAMESPACE::EventCreateInfo27231       reflect() const VULKAN_HPP_NOEXCEPT
27232     {
27233       return std::tie( sType, pNext, flags );
27234     }
27235 
27236 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
27237     auto operator<=>( EventCreateInfo const & ) const = default;
27238 #else
operator ==VULKAN_HPP_NAMESPACE::EventCreateInfo27239     bool operator==( EventCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
27240     {
27241       return this->reflect() == rhs.reflect();
27242     }
27243 
operator !=VULKAN_HPP_NAMESPACE::EventCreateInfo27244     bool operator!=( EventCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
27245     {
27246       return this->reflect() != rhs.reflect();
27247     }
27248 #endif
27249 
27250   public:
27251     VULKAN_HPP_NAMESPACE::StructureType    sType = StructureType::eEventCreateInfo;
27252     const void *                           pNext = {};
27253     VULKAN_HPP_NAMESPACE::EventCreateFlags flags = {};
27254   };
27255   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::EventCreateInfo ) == sizeof( VkEventCreateInfo ),
27256                             "struct and wrapper have different size!" );
27257   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::EventCreateInfo>::value,
27258                             "struct wrapper is not a standard layout!" );
27259   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::EventCreateInfo>::value,
27260                             "EventCreateInfo is not nothrow_move_constructible!" );
27261 
27262   template <>
27263   struct CppType<StructureType, StructureType::eEventCreateInfo>
27264   {
27265     using Type = EventCreateInfo;
27266   };
27267 
27268   struct ExportFenceCreateInfo
27269   {
27270     using NativeType = VkExportFenceCreateInfo;
27271 
27272     static const bool                                  allowDuplicate = false;
27273     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportFenceCreateInfo;
27274 
27275 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
27276     VULKAN_HPP_CONSTEXPR
ExportFenceCreateInfoVULKAN_HPP_NAMESPACE::ExportFenceCreateInfo27277       ExportFenceCreateInfo( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags handleTypes_ = {} ) VULKAN_HPP_NOEXCEPT
27278       : handleTypes( handleTypes_ )
27279     {}
27280 
27281     VULKAN_HPP_CONSTEXPR ExportFenceCreateInfo( ExportFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27282 
ExportFenceCreateInfoVULKAN_HPP_NAMESPACE::ExportFenceCreateInfo27283     ExportFenceCreateInfo( VkExportFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
27284       : ExportFenceCreateInfo( *reinterpret_cast<ExportFenceCreateInfo const *>( &rhs ) )
27285     {}
27286 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
27287 
27288     ExportFenceCreateInfo & operator=( ExportFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27289 
operator =VULKAN_HPP_NAMESPACE::ExportFenceCreateInfo27290     ExportFenceCreateInfo & operator=( VkExportFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
27291     {
27292       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportFenceCreateInfo const *>( &rhs );
27293       return *this;
27294     }
27295 
27296 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportFenceCreateInfo27297     VULKAN_HPP_CONSTEXPR_14 ExportFenceCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
27298     {
27299       pNext = pNext_;
27300       return *this;
27301     }
27302 
27303     VULKAN_HPP_CONSTEXPR_14 ExportFenceCreateInfo &
setHandleTypesVULKAN_HPP_NAMESPACE::ExportFenceCreateInfo27304       setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags handleTypes_ ) VULKAN_HPP_NOEXCEPT
27305     {
27306       handleTypes = handleTypes_;
27307       return *this;
27308     }
27309 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
27310 
operator VkExportFenceCreateInfo const&VULKAN_HPP_NAMESPACE::ExportFenceCreateInfo27311     explicit operator VkExportFenceCreateInfo const &() const VULKAN_HPP_NOEXCEPT
27312     {
27313       return *reinterpret_cast<const VkExportFenceCreateInfo *>( this );
27314     }
27315 
operator VkExportFenceCreateInfo&VULKAN_HPP_NAMESPACE::ExportFenceCreateInfo27316     explicit operator VkExportFenceCreateInfo &() VULKAN_HPP_NOEXCEPT
27317     {
27318       return *reinterpret_cast<VkExportFenceCreateInfo *>( this );
27319     }
27320 
27321 #if 14 <= VULKAN_HPP_CPP_VERSION
27322     auto
27323 #else
27324     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
27325                const void * const &,
27326                VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags const &>
27327 #endif
reflectVULKAN_HPP_NAMESPACE::ExportFenceCreateInfo27328       reflect() const VULKAN_HPP_NOEXCEPT
27329     {
27330       return std::tie( sType, pNext, handleTypes );
27331     }
27332 
27333 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
27334     auto operator<=>( ExportFenceCreateInfo const & ) const = default;
27335 #else
operator ==VULKAN_HPP_NAMESPACE::ExportFenceCreateInfo27336     bool operator==( ExportFenceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
27337     {
27338       return this->reflect() == rhs.reflect();
27339     }
27340 
operator !=VULKAN_HPP_NAMESPACE::ExportFenceCreateInfo27341     bool operator!=( ExportFenceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
27342     {
27343       return this->reflect() != rhs.reflect();
27344     }
27345 #endif
27346 
27347   public:
27348     VULKAN_HPP_NAMESPACE::StructureType                sType       = StructureType::eExportFenceCreateInfo;
27349     const void *                                       pNext       = {};
27350     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags handleTypes = {};
27351   };
27352   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExportFenceCreateInfo ) == sizeof( VkExportFenceCreateInfo ),
27353                             "struct and wrapper have different size!" );
27354   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ExportFenceCreateInfo>::value,
27355                             "struct wrapper is not a standard layout!" );
27356   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ExportFenceCreateInfo>::value,
27357                             "ExportFenceCreateInfo is not nothrow_move_constructible!" );
27358 
27359   template <>
27360   struct CppType<StructureType, StructureType::eExportFenceCreateInfo>
27361   {
27362     using Type = ExportFenceCreateInfo;
27363   };
27364   using ExportFenceCreateInfoKHR = ExportFenceCreateInfo;
27365 
27366 #if defined( VK_USE_PLATFORM_WIN32_KHR )
27367   struct ExportFenceWin32HandleInfoKHR
27368   {
27369     using NativeType = VkExportFenceWin32HandleInfoKHR;
27370 
27371     static const bool                                  allowDuplicate = false;
27372     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportFenceWin32HandleInfoKHR;
27373 
27374 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportFenceWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR27375     VULKAN_HPP_CONSTEXPR ExportFenceWin32HandleInfoKHR( const SECURITY_ATTRIBUTES * pAttributes_ = {},
27376                                                         DWORD                       dwAccess_    = {},
27377                                                         LPCWSTR                     name_ = {} ) VULKAN_HPP_NOEXCEPT
27378       : pAttributes( pAttributes_ )
27379       , dwAccess( dwAccess_ )
27380       , name( name_ )
27381     {}
27382 
27383     VULKAN_HPP_CONSTEXPR
27384       ExportFenceWin32HandleInfoKHR( ExportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27385 
ExportFenceWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR27386     ExportFenceWin32HandleInfoKHR( VkExportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
27387       : ExportFenceWin32HandleInfoKHR( *reinterpret_cast<ExportFenceWin32HandleInfoKHR const *>( &rhs ) )
27388     {}
27389 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
27390 
27391     ExportFenceWin32HandleInfoKHR &
27392       operator=( ExportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27393 
operator =VULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR27394     ExportFenceWin32HandleInfoKHR & operator=( VkExportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
27395     {
27396       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR const *>( &rhs );
27397       return *this;
27398     }
27399 
27400 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR27401     VULKAN_HPP_CONSTEXPR_14 ExportFenceWin32HandleInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
27402     {
27403       pNext = pNext_;
27404       return *this;
27405     }
27406 
27407     VULKAN_HPP_CONSTEXPR_14 ExportFenceWin32HandleInfoKHR &
setPAttributesVULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR27408                             setPAttributes( const SECURITY_ATTRIBUTES * pAttributes_ ) VULKAN_HPP_NOEXCEPT
27409     {
27410       pAttributes = pAttributes_;
27411       return *this;
27412     }
27413 
setDwAccessVULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR27414     VULKAN_HPP_CONSTEXPR_14 ExportFenceWin32HandleInfoKHR & setDwAccess( DWORD dwAccess_ ) VULKAN_HPP_NOEXCEPT
27415     {
27416       dwAccess = dwAccess_;
27417       return *this;
27418     }
27419 
setNameVULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR27420     VULKAN_HPP_CONSTEXPR_14 ExportFenceWin32HandleInfoKHR & setName( LPCWSTR name_ ) VULKAN_HPP_NOEXCEPT
27421     {
27422       name = name_;
27423       return *this;
27424     }
27425 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
27426 
operator VkExportFenceWin32HandleInfoKHR const&VULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR27427     explicit operator VkExportFenceWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT
27428     {
27429       return *reinterpret_cast<const VkExportFenceWin32HandleInfoKHR *>( this );
27430     }
27431 
operator VkExportFenceWin32HandleInfoKHR&VULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR27432     explicit operator VkExportFenceWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT
27433     {
27434       return *reinterpret_cast<VkExportFenceWin32HandleInfoKHR *>( this );
27435     }
27436 
27437 #  if 14 <= VULKAN_HPP_CPP_VERSION
27438     auto
27439 #  else
27440     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
27441                const void * const &,
27442                const SECURITY_ATTRIBUTES * const &,
27443                DWORD const &,
27444                LPCWSTR const &>
27445 #  endif
reflectVULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR27446       reflect() const VULKAN_HPP_NOEXCEPT
27447     {
27448       return std::tie( sType, pNext, pAttributes, dwAccess, name );
27449     }
27450 
27451 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
27452     auto operator<=>( ExportFenceWin32HandleInfoKHR const & ) const = default;
27453 #  else
operator ==VULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR27454     bool operator==( ExportFenceWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
27455     {
27456       return this->reflect() == rhs.reflect();
27457     }
27458 
operator !=VULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR27459     bool operator!=( ExportFenceWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
27460     {
27461       return this->reflect() != rhs.reflect();
27462     }
27463 #  endif
27464 
27465   public:
27466     VULKAN_HPP_NAMESPACE::StructureType sType       = StructureType::eExportFenceWin32HandleInfoKHR;
27467     const void *                        pNext       = {};
27468     const SECURITY_ATTRIBUTES *         pAttributes = {};
27469     DWORD                               dwAccess    = {};
27470     LPCWSTR                             name        = {};
27471   };
27472   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR ) ==
27473                               sizeof( VkExportFenceWin32HandleInfoKHR ),
27474                             "struct and wrapper have different size!" );
27475   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR>::value,
27476                             "struct wrapper is not a standard layout!" );
27477   VULKAN_HPP_STATIC_ASSERT(
27478     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR>::value,
27479     "ExportFenceWin32HandleInfoKHR is not nothrow_move_constructible!" );
27480 
27481   template <>
27482   struct CppType<StructureType, StructureType::eExportFenceWin32HandleInfoKHR>
27483   {
27484     using Type = ExportFenceWin32HandleInfoKHR;
27485   };
27486 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
27487 
27488   struct ExportMemoryAllocateInfo
27489   {
27490     using NativeType = VkExportMemoryAllocateInfo;
27491 
27492     static const bool                                  allowDuplicate = false;
27493     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportMemoryAllocateInfo;
27494 
27495 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportMemoryAllocateInfoVULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo27496     VULKAN_HPP_CONSTEXPR ExportMemoryAllocateInfo(
27497       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes_ = {} ) VULKAN_HPP_NOEXCEPT
27498       : handleTypes( handleTypes_ )
27499     {}
27500 
27501     VULKAN_HPP_CONSTEXPR ExportMemoryAllocateInfo( ExportMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27502 
ExportMemoryAllocateInfoVULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo27503     ExportMemoryAllocateInfo( VkExportMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
27504       : ExportMemoryAllocateInfo( *reinterpret_cast<ExportMemoryAllocateInfo const *>( &rhs ) )
27505     {}
27506 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
27507 
27508     ExportMemoryAllocateInfo & operator=( ExportMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27509 
operator =VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo27510     ExportMemoryAllocateInfo & operator=( VkExportMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
27511     {
27512       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo const *>( &rhs );
27513       return *this;
27514     }
27515 
27516 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo27517     VULKAN_HPP_CONSTEXPR_14 ExportMemoryAllocateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
27518     {
27519       pNext = pNext_;
27520       return *this;
27521     }
27522 
27523     VULKAN_HPP_CONSTEXPR_14 ExportMemoryAllocateInfo &
setHandleTypesVULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo27524       setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes_ ) VULKAN_HPP_NOEXCEPT
27525     {
27526       handleTypes = handleTypes_;
27527       return *this;
27528     }
27529 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
27530 
operator VkExportMemoryAllocateInfo const&VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo27531     explicit operator VkExportMemoryAllocateInfo const &() const VULKAN_HPP_NOEXCEPT
27532     {
27533       return *reinterpret_cast<const VkExportMemoryAllocateInfo *>( this );
27534     }
27535 
operator VkExportMemoryAllocateInfo&VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo27536     explicit operator VkExportMemoryAllocateInfo &() VULKAN_HPP_NOEXCEPT
27537     {
27538       return *reinterpret_cast<VkExportMemoryAllocateInfo *>( this );
27539     }
27540 
27541 #if 14 <= VULKAN_HPP_CPP_VERSION
27542     auto
27543 #else
27544     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
27545                const void * const &,
27546                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags const &>
27547 #endif
reflectVULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo27548       reflect() const VULKAN_HPP_NOEXCEPT
27549     {
27550       return std::tie( sType, pNext, handleTypes );
27551     }
27552 
27553 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
27554     auto operator<=>( ExportMemoryAllocateInfo const & ) const = default;
27555 #else
operator ==VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo27556     bool operator==( ExportMemoryAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
27557     {
27558       return this->reflect() == rhs.reflect();
27559     }
27560 
operator !=VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo27561     bool operator!=( ExportMemoryAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
27562     {
27563       return this->reflect() != rhs.reflect();
27564     }
27565 #endif
27566 
27567   public:
27568     VULKAN_HPP_NAMESPACE::StructureType                 sType       = StructureType::eExportMemoryAllocateInfo;
27569     const void *                                        pNext       = {};
27570     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes = {};
27571   };
27572   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo ) ==
27573                               sizeof( VkExportMemoryAllocateInfo ),
27574                             "struct and wrapper have different size!" );
27575   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo>::value,
27576                             "struct wrapper is not a standard layout!" );
27577   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo>::value,
27578                             "ExportMemoryAllocateInfo is not nothrow_move_constructible!" );
27579 
27580   template <>
27581   struct CppType<StructureType, StructureType::eExportMemoryAllocateInfo>
27582   {
27583     using Type = ExportMemoryAllocateInfo;
27584   };
27585   using ExportMemoryAllocateInfoKHR = ExportMemoryAllocateInfo;
27586 
27587   struct ExportMemoryAllocateInfoNV
27588   {
27589     using NativeType = VkExportMemoryAllocateInfoNV;
27590 
27591     static const bool                                  allowDuplicate = false;
27592     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportMemoryAllocateInfoNV;
27593 
27594 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportMemoryAllocateInfoNVVULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV27595     VULKAN_HPP_CONSTEXPR ExportMemoryAllocateInfoNV(
27596       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleTypes_ = {} ) VULKAN_HPP_NOEXCEPT
27597       : handleTypes( handleTypes_ )
27598     {}
27599 
27600     VULKAN_HPP_CONSTEXPR
27601       ExportMemoryAllocateInfoNV( ExportMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27602 
ExportMemoryAllocateInfoNVVULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV27603     ExportMemoryAllocateInfoNV( VkExportMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
27604       : ExportMemoryAllocateInfoNV( *reinterpret_cast<ExportMemoryAllocateInfoNV const *>( &rhs ) )
27605     {}
27606 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
27607 
27608     ExportMemoryAllocateInfoNV & operator=( ExportMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27609 
operator =VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV27610     ExportMemoryAllocateInfoNV & operator=( VkExportMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
27611     {
27612       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV const *>( &rhs );
27613       return *this;
27614     }
27615 
27616 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV27617     VULKAN_HPP_CONSTEXPR_14 ExportMemoryAllocateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
27618     {
27619       pNext = pNext_;
27620       return *this;
27621     }
27622 
27623     VULKAN_HPP_CONSTEXPR_14 ExportMemoryAllocateInfoNV &
setHandleTypesVULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV27624       setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleTypes_ ) VULKAN_HPP_NOEXCEPT
27625     {
27626       handleTypes = handleTypes_;
27627       return *this;
27628     }
27629 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
27630 
operator VkExportMemoryAllocateInfoNV const&VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV27631     explicit operator VkExportMemoryAllocateInfoNV const &() const VULKAN_HPP_NOEXCEPT
27632     {
27633       return *reinterpret_cast<const VkExportMemoryAllocateInfoNV *>( this );
27634     }
27635 
operator VkExportMemoryAllocateInfoNV&VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV27636     explicit operator VkExportMemoryAllocateInfoNV &() VULKAN_HPP_NOEXCEPT
27637     {
27638       return *reinterpret_cast<VkExportMemoryAllocateInfoNV *>( this );
27639     }
27640 
27641 #if 14 <= VULKAN_HPP_CPP_VERSION
27642     auto
27643 #else
27644     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
27645                const void * const &,
27646                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV const &>
27647 #endif
reflectVULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV27648       reflect() const VULKAN_HPP_NOEXCEPT
27649     {
27650       return std::tie( sType, pNext, handleTypes );
27651     }
27652 
27653 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
27654     auto operator<=>( ExportMemoryAllocateInfoNV const & ) const = default;
27655 #else
operator ==VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV27656     bool operator==( ExportMemoryAllocateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
27657     {
27658       return this->reflect() == rhs.reflect();
27659     }
27660 
operator !=VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV27661     bool operator!=( ExportMemoryAllocateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
27662     {
27663       return this->reflect() != rhs.reflect();
27664     }
27665 #endif
27666 
27667   public:
27668     VULKAN_HPP_NAMESPACE::StructureType                   sType       = StructureType::eExportMemoryAllocateInfoNV;
27669     const void *                                          pNext       = {};
27670     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleTypes = {};
27671   };
27672   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV ) ==
27673                               sizeof( VkExportMemoryAllocateInfoNV ),
27674                             "struct and wrapper have different size!" );
27675   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV>::value,
27676                             "struct wrapper is not a standard layout!" );
27677   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV>::value,
27678                             "ExportMemoryAllocateInfoNV is not nothrow_move_constructible!" );
27679 
27680   template <>
27681   struct CppType<StructureType, StructureType::eExportMemoryAllocateInfoNV>
27682   {
27683     using Type = ExportMemoryAllocateInfoNV;
27684   };
27685 
27686 #if defined( VK_USE_PLATFORM_WIN32_KHR )
27687   struct ExportMemoryWin32HandleInfoKHR
27688   {
27689     using NativeType = VkExportMemoryWin32HandleInfoKHR;
27690 
27691     static const bool                                  allowDuplicate = false;
27692     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportMemoryWin32HandleInfoKHR;
27693 
27694 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportMemoryWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR27695     VULKAN_HPP_CONSTEXPR ExportMemoryWin32HandleInfoKHR( const SECURITY_ATTRIBUTES * pAttributes_ = {},
27696                                                          DWORD                       dwAccess_    = {},
27697                                                          LPCWSTR                     name_ = {} ) VULKAN_HPP_NOEXCEPT
27698       : pAttributes( pAttributes_ )
27699       , dwAccess( dwAccess_ )
27700       , name( name_ )
27701     {}
27702 
27703     VULKAN_HPP_CONSTEXPR
27704       ExportMemoryWin32HandleInfoKHR( ExportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27705 
ExportMemoryWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR27706     ExportMemoryWin32HandleInfoKHR( VkExportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
27707       : ExportMemoryWin32HandleInfoKHR( *reinterpret_cast<ExportMemoryWin32HandleInfoKHR const *>( &rhs ) )
27708     {}
27709 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
27710 
27711     ExportMemoryWin32HandleInfoKHR &
27712       operator=( ExportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27713 
operator =VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR27714     ExportMemoryWin32HandleInfoKHR & operator=( VkExportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
27715     {
27716       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR const *>( &rhs );
27717       return *this;
27718     }
27719 
27720 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR27721     VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
27722     {
27723       pNext = pNext_;
27724       return *this;
27725     }
27726 
27727     VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoKHR &
setPAttributesVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR27728                             setPAttributes( const SECURITY_ATTRIBUTES * pAttributes_ ) VULKAN_HPP_NOEXCEPT
27729     {
27730       pAttributes = pAttributes_;
27731       return *this;
27732     }
27733 
setDwAccessVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR27734     VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoKHR & setDwAccess( DWORD dwAccess_ ) VULKAN_HPP_NOEXCEPT
27735     {
27736       dwAccess = dwAccess_;
27737       return *this;
27738     }
27739 
setNameVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR27740     VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoKHR & setName( LPCWSTR name_ ) VULKAN_HPP_NOEXCEPT
27741     {
27742       name = name_;
27743       return *this;
27744     }
27745 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
27746 
operator VkExportMemoryWin32HandleInfoKHR const&VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR27747     explicit operator VkExportMemoryWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT
27748     {
27749       return *reinterpret_cast<const VkExportMemoryWin32HandleInfoKHR *>( this );
27750     }
27751 
operator VkExportMemoryWin32HandleInfoKHR&VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR27752     explicit operator VkExportMemoryWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT
27753     {
27754       return *reinterpret_cast<VkExportMemoryWin32HandleInfoKHR *>( this );
27755     }
27756 
27757 #  if 14 <= VULKAN_HPP_CPP_VERSION
27758     auto
27759 #  else
27760     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
27761                const void * const &,
27762                const SECURITY_ATTRIBUTES * const &,
27763                DWORD const &,
27764                LPCWSTR const &>
27765 #  endif
reflectVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR27766       reflect() const VULKAN_HPP_NOEXCEPT
27767     {
27768       return std::tie( sType, pNext, pAttributes, dwAccess, name );
27769     }
27770 
27771 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
27772     auto operator<=>( ExportMemoryWin32HandleInfoKHR const & ) const = default;
27773 #  else
operator ==VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR27774     bool operator==( ExportMemoryWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
27775     {
27776       return this->reflect() == rhs.reflect();
27777     }
27778 
operator !=VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR27779     bool operator!=( ExportMemoryWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
27780     {
27781       return this->reflect() != rhs.reflect();
27782     }
27783 #  endif
27784 
27785   public:
27786     VULKAN_HPP_NAMESPACE::StructureType sType       = StructureType::eExportMemoryWin32HandleInfoKHR;
27787     const void *                        pNext       = {};
27788     const SECURITY_ATTRIBUTES *         pAttributes = {};
27789     DWORD                               dwAccess    = {};
27790     LPCWSTR                             name        = {};
27791   };
27792   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR ) ==
27793                               sizeof( VkExportMemoryWin32HandleInfoKHR ),
27794                             "struct and wrapper have different size!" );
27795   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR>::value,
27796                             "struct wrapper is not a standard layout!" );
27797   VULKAN_HPP_STATIC_ASSERT(
27798     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR>::value,
27799     "ExportMemoryWin32HandleInfoKHR is not nothrow_move_constructible!" );
27800 
27801   template <>
27802   struct CppType<StructureType, StructureType::eExportMemoryWin32HandleInfoKHR>
27803   {
27804     using Type = ExportMemoryWin32HandleInfoKHR;
27805   };
27806 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
27807 
27808 #if defined( VK_USE_PLATFORM_WIN32_KHR )
27809   struct ExportMemoryWin32HandleInfoNV
27810   {
27811     using NativeType = VkExportMemoryWin32HandleInfoNV;
27812 
27813     static const bool                                  allowDuplicate = false;
27814     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportMemoryWin32HandleInfoNV;
27815 
27816 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportMemoryWin32HandleInfoNVVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV27817     VULKAN_HPP_CONSTEXPR ExportMemoryWin32HandleInfoNV( const SECURITY_ATTRIBUTES * pAttributes_ = {},
27818                                                         DWORD                       dwAccess_ = {} ) VULKAN_HPP_NOEXCEPT
27819       : pAttributes( pAttributes_ )
27820       , dwAccess( dwAccess_ )
27821     {}
27822 
27823     VULKAN_HPP_CONSTEXPR
27824       ExportMemoryWin32HandleInfoNV( ExportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27825 
ExportMemoryWin32HandleInfoNVVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV27826     ExportMemoryWin32HandleInfoNV( VkExportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
27827       : ExportMemoryWin32HandleInfoNV( *reinterpret_cast<ExportMemoryWin32HandleInfoNV const *>( &rhs ) )
27828     {}
27829 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
27830 
27831     ExportMemoryWin32HandleInfoNV &
27832       operator=( ExportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27833 
operator =VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV27834     ExportMemoryWin32HandleInfoNV & operator=( VkExportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
27835     {
27836       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV const *>( &rhs );
27837       return *this;
27838     }
27839 
27840 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV27841     VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
27842     {
27843       pNext = pNext_;
27844       return *this;
27845     }
27846 
27847     VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoNV &
setPAttributesVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV27848                             setPAttributes( const SECURITY_ATTRIBUTES * pAttributes_ ) VULKAN_HPP_NOEXCEPT
27849     {
27850       pAttributes = pAttributes_;
27851       return *this;
27852     }
27853 
setDwAccessVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV27854     VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoNV & setDwAccess( DWORD dwAccess_ ) VULKAN_HPP_NOEXCEPT
27855     {
27856       dwAccess = dwAccess_;
27857       return *this;
27858     }
27859 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
27860 
operator VkExportMemoryWin32HandleInfoNV const&VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV27861     explicit operator VkExportMemoryWin32HandleInfoNV const &() const VULKAN_HPP_NOEXCEPT
27862     {
27863       return *reinterpret_cast<const VkExportMemoryWin32HandleInfoNV *>( this );
27864     }
27865 
operator VkExportMemoryWin32HandleInfoNV&VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV27866     explicit operator VkExportMemoryWin32HandleInfoNV &() VULKAN_HPP_NOEXCEPT
27867     {
27868       return *reinterpret_cast<VkExportMemoryWin32HandleInfoNV *>( this );
27869     }
27870 
27871 #  if 14 <= VULKAN_HPP_CPP_VERSION
27872     auto
27873 #  else
27874     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
27875                const void * const &,
27876                const SECURITY_ATTRIBUTES * const &,
27877                DWORD const &>
27878 #  endif
reflectVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV27879       reflect() const VULKAN_HPP_NOEXCEPT
27880     {
27881       return std::tie( sType, pNext, pAttributes, dwAccess );
27882     }
27883 
27884 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
27885     auto operator<=>( ExportMemoryWin32HandleInfoNV const & ) const = default;
27886 #  else
operator ==VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV27887     bool operator==( ExportMemoryWin32HandleInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
27888     {
27889       return this->reflect() == rhs.reflect();
27890     }
27891 
operator !=VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV27892     bool operator!=( ExportMemoryWin32HandleInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
27893     {
27894       return this->reflect() != rhs.reflect();
27895     }
27896 #  endif
27897 
27898   public:
27899     VULKAN_HPP_NAMESPACE::StructureType sType       = StructureType::eExportMemoryWin32HandleInfoNV;
27900     const void *                        pNext       = {};
27901     const SECURITY_ATTRIBUTES *         pAttributes = {};
27902     DWORD                               dwAccess    = {};
27903   };
27904   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV ) ==
27905                               sizeof( VkExportMemoryWin32HandleInfoNV ),
27906                             "struct and wrapper have different size!" );
27907   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV>::value,
27908                             "struct wrapper is not a standard layout!" );
27909   VULKAN_HPP_STATIC_ASSERT(
27910     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV>::value,
27911     "ExportMemoryWin32HandleInfoNV is not nothrow_move_constructible!" );
27912 
27913   template <>
27914   struct CppType<StructureType, StructureType::eExportMemoryWin32HandleInfoNV>
27915   {
27916     using Type = ExportMemoryWin32HandleInfoNV;
27917   };
27918 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
27919 
27920   struct ExportSemaphoreCreateInfo
27921   {
27922     using NativeType = VkExportSemaphoreCreateInfo;
27923 
27924     static const bool                                  allowDuplicate = false;
27925     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportSemaphoreCreateInfo;
27926 
27927 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportSemaphoreCreateInfoVULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo27928     VULKAN_HPP_CONSTEXPR ExportSemaphoreCreateInfo(
27929       VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags handleTypes_ = {} ) VULKAN_HPP_NOEXCEPT
27930       : handleTypes( handleTypes_ )
27931     {}
27932 
27933     VULKAN_HPP_CONSTEXPR
27934       ExportSemaphoreCreateInfo( ExportSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27935 
ExportSemaphoreCreateInfoVULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo27936     ExportSemaphoreCreateInfo( VkExportSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
27937       : ExportSemaphoreCreateInfo( *reinterpret_cast<ExportSemaphoreCreateInfo const *>( &rhs ) )
27938     {}
27939 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
27940 
27941     ExportSemaphoreCreateInfo & operator=( ExportSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27942 
operator =VULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo27943     ExportSemaphoreCreateInfo & operator=( VkExportSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
27944     {
27945       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo const *>( &rhs );
27946       return *this;
27947     }
27948 
27949 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo27950     VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
27951     {
27952       pNext = pNext_;
27953       return *this;
27954     }
27955 
27956     VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreCreateInfo &
setHandleTypesVULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo27957       setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags handleTypes_ ) VULKAN_HPP_NOEXCEPT
27958     {
27959       handleTypes = handleTypes_;
27960       return *this;
27961     }
27962 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
27963 
operator VkExportSemaphoreCreateInfo const&VULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo27964     explicit operator VkExportSemaphoreCreateInfo const &() const VULKAN_HPP_NOEXCEPT
27965     {
27966       return *reinterpret_cast<const VkExportSemaphoreCreateInfo *>( this );
27967     }
27968 
operator VkExportSemaphoreCreateInfo&VULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo27969     explicit operator VkExportSemaphoreCreateInfo &() VULKAN_HPP_NOEXCEPT
27970     {
27971       return *reinterpret_cast<VkExportSemaphoreCreateInfo *>( this );
27972     }
27973 
27974 #if 14 <= VULKAN_HPP_CPP_VERSION
27975     auto
27976 #else
27977     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
27978                const void * const &,
27979                VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags const &>
27980 #endif
reflectVULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo27981       reflect() const VULKAN_HPP_NOEXCEPT
27982     {
27983       return std::tie( sType, pNext, handleTypes );
27984     }
27985 
27986 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
27987     auto operator<=>( ExportSemaphoreCreateInfo const & ) const = default;
27988 #else
operator ==VULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo27989     bool operator==( ExportSemaphoreCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
27990     {
27991       return this->reflect() == rhs.reflect();
27992     }
27993 
operator !=VULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo27994     bool operator!=( ExportSemaphoreCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
27995     {
27996       return this->reflect() != rhs.reflect();
27997     }
27998 #endif
27999 
28000   public:
28001     VULKAN_HPP_NAMESPACE::StructureType                    sType       = StructureType::eExportSemaphoreCreateInfo;
28002     const void *                                           pNext       = {};
28003     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags handleTypes = {};
28004   };
28005   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo ) ==
28006                               sizeof( VkExportSemaphoreCreateInfo ),
28007                             "struct and wrapper have different size!" );
28008   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo>::value,
28009                             "struct wrapper is not a standard layout!" );
28010   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo>::value,
28011                             "ExportSemaphoreCreateInfo is not nothrow_move_constructible!" );
28012 
28013   template <>
28014   struct CppType<StructureType, StructureType::eExportSemaphoreCreateInfo>
28015   {
28016     using Type = ExportSemaphoreCreateInfo;
28017   };
28018   using ExportSemaphoreCreateInfoKHR = ExportSemaphoreCreateInfo;
28019 
28020 #if defined( VK_USE_PLATFORM_WIN32_KHR )
28021   struct ExportSemaphoreWin32HandleInfoKHR
28022   {
28023     using NativeType = VkExportSemaphoreWin32HandleInfoKHR;
28024 
28025     static const bool                                  allowDuplicate = false;
28026     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
28027       StructureType::eExportSemaphoreWin32HandleInfoKHR;
28028 
28029 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportSemaphoreWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR28030     VULKAN_HPP_CONSTEXPR ExportSemaphoreWin32HandleInfoKHR( const SECURITY_ATTRIBUTES * pAttributes_ = {},
28031                                                             DWORD                       dwAccess_    = {},
28032                                                             LPCWSTR                     name_ = {} ) VULKAN_HPP_NOEXCEPT
28033       : pAttributes( pAttributes_ )
28034       , dwAccess( dwAccess_ )
28035       , name( name_ )
28036     {}
28037 
28038     VULKAN_HPP_CONSTEXPR
28039       ExportSemaphoreWin32HandleInfoKHR( ExportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28040 
ExportSemaphoreWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR28041     ExportSemaphoreWin32HandleInfoKHR( VkExportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
28042       : ExportSemaphoreWin32HandleInfoKHR( *reinterpret_cast<ExportSemaphoreWin32HandleInfoKHR const *>( &rhs ) )
28043     {}
28044 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
28045 
28046     ExportSemaphoreWin32HandleInfoKHR &
28047       operator=( ExportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28048 
operator =VULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR28049     ExportSemaphoreWin32HandleInfoKHR & operator=( VkExportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
28050     {
28051       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR const *>( &rhs );
28052       return *this;
28053     }
28054 
28055 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR28056     VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreWin32HandleInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
28057     {
28058       pNext = pNext_;
28059       return *this;
28060     }
28061 
28062     VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreWin32HandleInfoKHR &
setPAttributesVULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR28063                             setPAttributes( const SECURITY_ATTRIBUTES * pAttributes_ ) VULKAN_HPP_NOEXCEPT
28064     {
28065       pAttributes = pAttributes_;
28066       return *this;
28067     }
28068 
setDwAccessVULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR28069     VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreWin32HandleInfoKHR & setDwAccess( DWORD dwAccess_ ) VULKAN_HPP_NOEXCEPT
28070     {
28071       dwAccess = dwAccess_;
28072       return *this;
28073     }
28074 
setNameVULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR28075     VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreWin32HandleInfoKHR & setName( LPCWSTR name_ ) VULKAN_HPP_NOEXCEPT
28076     {
28077       name = name_;
28078       return *this;
28079     }
28080 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
28081 
operator VkExportSemaphoreWin32HandleInfoKHR const&VULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR28082     explicit operator VkExportSemaphoreWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT
28083     {
28084       return *reinterpret_cast<const VkExportSemaphoreWin32HandleInfoKHR *>( this );
28085     }
28086 
operator VkExportSemaphoreWin32HandleInfoKHR&VULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR28087     explicit operator VkExportSemaphoreWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT
28088     {
28089       return *reinterpret_cast<VkExportSemaphoreWin32HandleInfoKHR *>( this );
28090     }
28091 
28092 #  if 14 <= VULKAN_HPP_CPP_VERSION
28093     auto
28094 #  else
28095     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
28096                const void * const &,
28097                const SECURITY_ATTRIBUTES * const &,
28098                DWORD const &,
28099                LPCWSTR const &>
28100 #  endif
reflectVULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR28101       reflect() const VULKAN_HPP_NOEXCEPT
28102     {
28103       return std::tie( sType, pNext, pAttributes, dwAccess, name );
28104     }
28105 
28106 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
28107     auto operator<=>( ExportSemaphoreWin32HandleInfoKHR const & ) const = default;
28108 #  else
operator ==VULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR28109     bool operator==( ExportSemaphoreWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
28110     {
28111       return this->reflect() == rhs.reflect();
28112     }
28113 
operator !=VULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR28114     bool operator!=( ExportSemaphoreWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
28115     {
28116       return this->reflect() != rhs.reflect();
28117     }
28118 #  endif
28119 
28120   public:
28121     VULKAN_HPP_NAMESPACE::StructureType sType       = StructureType::eExportSemaphoreWin32HandleInfoKHR;
28122     const void *                        pNext       = {};
28123     const SECURITY_ATTRIBUTES *         pAttributes = {};
28124     DWORD                               dwAccess    = {};
28125     LPCWSTR                             name        = {};
28126   };
28127   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR ) ==
28128                               sizeof( VkExportSemaphoreWin32HandleInfoKHR ),
28129                             "struct and wrapper have different size!" );
28130   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR>::value,
28131                             "struct wrapper is not a standard layout!" );
28132   VULKAN_HPP_STATIC_ASSERT(
28133     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR>::value,
28134     "ExportSemaphoreWin32HandleInfoKHR is not nothrow_move_constructible!" );
28135 
28136   template <>
28137   struct CppType<StructureType, StructureType::eExportSemaphoreWin32HandleInfoKHR>
28138   {
28139     using Type = ExportSemaphoreWin32HandleInfoKHR;
28140   };
28141 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
28142 
28143   struct ExtensionProperties
28144   {
28145     using NativeType = VkExtensionProperties;
28146 
28147 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
28148     VULKAN_HPP_CONSTEXPR_14
ExtensionPropertiesVULKAN_HPP_NAMESPACE::ExtensionProperties28149       ExtensionProperties( std::array<char, VK_MAX_EXTENSION_NAME_SIZE> const & extensionName_ = {},
28150                            uint32_t                                             specVersion_ = {} ) VULKAN_HPP_NOEXCEPT
28151       : extensionName( extensionName_ )
28152       , specVersion( specVersion_ )
28153     {}
28154 
28155     VULKAN_HPP_CONSTEXPR_14 ExtensionProperties( ExtensionProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28156 
ExtensionPropertiesVULKAN_HPP_NAMESPACE::ExtensionProperties28157     ExtensionProperties( VkExtensionProperties const & rhs ) VULKAN_HPP_NOEXCEPT
28158       : ExtensionProperties( *reinterpret_cast<ExtensionProperties const *>( &rhs ) )
28159     {}
28160 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
28161 
28162     ExtensionProperties & operator=( ExtensionProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28163 
operator =VULKAN_HPP_NAMESPACE::ExtensionProperties28164     ExtensionProperties & operator=( VkExtensionProperties const & rhs ) VULKAN_HPP_NOEXCEPT
28165     {
28166       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExtensionProperties const *>( &rhs );
28167       return *this;
28168     }
28169 
operator VkExtensionProperties const&VULKAN_HPP_NAMESPACE::ExtensionProperties28170     explicit operator VkExtensionProperties const &() const VULKAN_HPP_NOEXCEPT
28171     {
28172       return *reinterpret_cast<const VkExtensionProperties *>( this );
28173     }
28174 
operator VkExtensionProperties&VULKAN_HPP_NAMESPACE::ExtensionProperties28175     explicit operator VkExtensionProperties &() VULKAN_HPP_NOEXCEPT
28176     {
28177       return *reinterpret_cast<VkExtensionProperties *>( this );
28178     }
28179 
28180 #if 14 <= VULKAN_HPP_CPP_VERSION
28181     auto
28182 #else
28183     std::tuple<VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> const &, uint32_t const &>
28184 #endif
reflectVULKAN_HPP_NAMESPACE::ExtensionProperties28185       reflect() const VULKAN_HPP_NOEXCEPT
28186     {
28187       return std::tie( extensionName, specVersion );
28188     }
28189 
28190 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
28191     auto operator<=>( ExtensionProperties const & ) const = default;
28192 #else
operator ==VULKAN_HPP_NAMESPACE::ExtensionProperties28193     bool operator==( ExtensionProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
28194     {
28195       return this->reflect() == rhs.reflect();
28196     }
28197 
operator !=VULKAN_HPP_NAMESPACE::ExtensionProperties28198     bool operator!=( ExtensionProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
28199     {
28200       return this->reflect() != rhs.reflect();
28201     }
28202 #endif
28203 
28204   public:
28205     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> extensionName = {};
28206     uint32_t                                                               specVersion   = {};
28207   };
28208   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExtensionProperties ) == sizeof( VkExtensionProperties ),
28209                             "struct and wrapper have different size!" );
28210   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ExtensionProperties>::value,
28211                             "struct wrapper is not a standard layout!" );
28212   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ExtensionProperties>::value,
28213                             "ExtensionProperties is not nothrow_move_constructible!" );
28214 
28215   struct ExternalMemoryProperties
28216   {
28217     using NativeType = VkExternalMemoryProperties;
28218 
28219 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalMemoryPropertiesVULKAN_HPP_NAMESPACE::ExternalMemoryProperties28220     VULKAN_HPP_CONSTEXPR ExternalMemoryProperties(
28221       VULKAN_HPP_NAMESPACE::ExternalMemoryFeatureFlags    externalMemoryFeatures_        = {},
28222       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags exportFromImportedHandleTypes_ = {},
28223       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags compatibleHandleTypes_         = {} ) VULKAN_HPP_NOEXCEPT
28224       : externalMemoryFeatures( externalMemoryFeatures_ )
28225       , exportFromImportedHandleTypes( exportFromImportedHandleTypes_ )
28226       , compatibleHandleTypes( compatibleHandleTypes_ )
28227     {}
28228 
28229     VULKAN_HPP_CONSTEXPR ExternalMemoryProperties( ExternalMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28230 
ExternalMemoryPropertiesVULKAN_HPP_NAMESPACE::ExternalMemoryProperties28231     ExternalMemoryProperties( VkExternalMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT
28232       : ExternalMemoryProperties( *reinterpret_cast<ExternalMemoryProperties const *>( &rhs ) )
28233     {}
28234 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
28235 
28236     ExternalMemoryProperties & operator=( ExternalMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28237 
operator =VULKAN_HPP_NAMESPACE::ExternalMemoryProperties28238     ExternalMemoryProperties & operator=( VkExternalMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT
28239     {
28240       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalMemoryProperties const *>( &rhs );
28241       return *this;
28242     }
28243 
operator VkExternalMemoryProperties const&VULKAN_HPP_NAMESPACE::ExternalMemoryProperties28244     explicit operator VkExternalMemoryProperties const &() const VULKAN_HPP_NOEXCEPT
28245     {
28246       return *reinterpret_cast<const VkExternalMemoryProperties *>( this );
28247     }
28248 
operator VkExternalMemoryProperties&VULKAN_HPP_NAMESPACE::ExternalMemoryProperties28249     explicit operator VkExternalMemoryProperties &() VULKAN_HPP_NOEXCEPT
28250     {
28251       return *reinterpret_cast<VkExternalMemoryProperties *>( this );
28252     }
28253 
28254 #if 14 <= VULKAN_HPP_CPP_VERSION
28255     auto
28256 #else
28257     std::tuple<VULKAN_HPP_NAMESPACE::ExternalMemoryFeatureFlags const &,
28258                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags const &,
28259                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags const &>
28260 #endif
reflectVULKAN_HPP_NAMESPACE::ExternalMemoryProperties28261       reflect() const VULKAN_HPP_NOEXCEPT
28262     {
28263       return std::tie( externalMemoryFeatures, exportFromImportedHandleTypes, compatibleHandleTypes );
28264     }
28265 
28266 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
28267     auto operator<=>( ExternalMemoryProperties const & ) const = default;
28268 #else
operator ==VULKAN_HPP_NAMESPACE::ExternalMemoryProperties28269     bool operator==( ExternalMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
28270     {
28271       return this->reflect() == rhs.reflect();
28272     }
28273 
operator !=VULKAN_HPP_NAMESPACE::ExternalMemoryProperties28274     bool operator!=( ExternalMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
28275     {
28276       return this->reflect() != rhs.reflect();
28277     }
28278 #endif
28279 
28280   public:
28281     VULKAN_HPP_NAMESPACE::ExternalMemoryFeatureFlags    externalMemoryFeatures        = {};
28282     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags exportFromImportedHandleTypes = {};
28283     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags compatibleHandleTypes         = {};
28284   };
28285   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalMemoryProperties ) ==
28286                               sizeof( VkExternalMemoryProperties ),
28287                             "struct and wrapper have different size!" );
28288   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ExternalMemoryProperties>::value,
28289                             "struct wrapper is not a standard layout!" );
28290   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ExternalMemoryProperties>::value,
28291                             "ExternalMemoryProperties is not nothrow_move_constructible!" );
28292   using ExternalMemoryPropertiesKHR = ExternalMemoryProperties;
28293 
28294   struct ExternalBufferProperties
28295   {
28296     using NativeType = VkExternalBufferProperties;
28297 
28298     static const bool                                  allowDuplicate = false;
28299     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExternalBufferProperties;
28300 
28301 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalBufferPropertiesVULKAN_HPP_NAMESPACE::ExternalBufferProperties28302     VULKAN_HPP_CONSTEXPR ExternalBufferProperties(
28303       VULKAN_HPP_NAMESPACE::ExternalMemoryProperties externalMemoryProperties_ = {} ) VULKAN_HPP_NOEXCEPT
28304       : externalMemoryProperties( externalMemoryProperties_ )
28305     {}
28306 
28307     VULKAN_HPP_CONSTEXPR ExternalBufferProperties( ExternalBufferProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28308 
ExternalBufferPropertiesVULKAN_HPP_NAMESPACE::ExternalBufferProperties28309     ExternalBufferProperties( VkExternalBufferProperties const & rhs ) VULKAN_HPP_NOEXCEPT
28310       : ExternalBufferProperties( *reinterpret_cast<ExternalBufferProperties const *>( &rhs ) )
28311     {}
28312 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
28313 
28314     ExternalBufferProperties & operator=( ExternalBufferProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28315 
operator =VULKAN_HPP_NAMESPACE::ExternalBufferProperties28316     ExternalBufferProperties & operator=( VkExternalBufferProperties const & rhs ) VULKAN_HPP_NOEXCEPT
28317     {
28318       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalBufferProperties const *>( &rhs );
28319       return *this;
28320     }
28321 
operator VkExternalBufferProperties const&VULKAN_HPP_NAMESPACE::ExternalBufferProperties28322     explicit operator VkExternalBufferProperties const &() const VULKAN_HPP_NOEXCEPT
28323     {
28324       return *reinterpret_cast<const VkExternalBufferProperties *>( this );
28325     }
28326 
operator VkExternalBufferProperties&VULKAN_HPP_NAMESPACE::ExternalBufferProperties28327     explicit operator VkExternalBufferProperties &() VULKAN_HPP_NOEXCEPT
28328     {
28329       return *reinterpret_cast<VkExternalBufferProperties *>( this );
28330     }
28331 
28332 #if 14 <= VULKAN_HPP_CPP_VERSION
28333     auto
28334 #else
28335     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
28336                void * const &,
28337                VULKAN_HPP_NAMESPACE::ExternalMemoryProperties const &>
28338 #endif
reflectVULKAN_HPP_NAMESPACE::ExternalBufferProperties28339       reflect() const VULKAN_HPP_NOEXCEPT
28340     {
28341       return std::tie( sType, pNext, externalMemoryProperties );
28342     }
28343 
28344 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
28345     auto operator<=>( ExternalBufferProperties const & ) const = default;
28346 #else
operator ==VULKAN_HPP_NAMESPACE::ExternalBufferProperties28347     bool operator==( ExternalBufferProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
28348     {
28349       return this->reflect() == rhs.reflect();
28350     }
28351 
operator !=VULKAN_HPP_NAMESPACE::ExternalBufferProperties28352     bool operator!=( ExternalBufferProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
28353     {
28354       return this->reflect() != rhs.reflect();
28355     }
28356 #endif
28357 
28358   public:
28359     VULKAN_HPP_NAMESPACE::StructureType            sType                    = StructureType::eExternalBufferProperties;
28360     void *                                         pNext                    = {};
28361     VULKAN_HPP_NAMESPACE::ExternalMemoryProperties externalMemoryProperties = {};
28362   };
28363   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalBufferProperties ) ==
28364                               sizeof( VkExternalBufferProperties ),
28365                             "struct and wrapper have different size!" );
28366   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ExternalBufferProperties>::value,
28367                             "struct wrapper is not a standard layout!" );
28368   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ExternalBufferProperties>::value,
28369                             "ExternalBufferProperties is not nothrow_move_constructible!" );
28370 
28371   template <>
28372   struct CppType<StructureType, StructureType::eExternalBufferProperties>
28373   {
28374     using Type = ExternalBufferProperties;
28375   };
28376   using ExternalBufferPropertiesKHR = ExternalBufferProperties;
28377 
28378   struct ExternalFenceProperties
28379   {
28380     using NativeType = VkExternalFenceProperties;
28381 
28382     static const bool                                  allowDuplicate = false;
28383     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExternalFenceProperties;
28384 
28385 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalFencePropertiesVULKAN_HPP_NAMESPACE::ExternalFenceProperties28386     VULKAN_HPP_CONSTEXPR ExternalFenceProperties(
28387       VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags exportFromImportedHandleTypes_ = {},
28388       VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags compatibleHandleTypes_         = {},
28389       VULKAN_HPP_NAMESPACE::ExternalFenceFeatureFlags    externalFenceFeatures_         = {} ) VULKAN_HPP_NOEXCEPT
28390       : exportFromImportedHandleTypes( exportFromImportedHandleTypes_ )
28391       , compatibleHandleTypes( compatibleHandleTypes_ )
28392       , externalFenceFeatures( externalFenceFeatures_ )
28393     {}
28394 
28395     VULKAN_HPP_CONSTEXPR ExternalFenceProperties( ExternalFenceProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28396 
ExternalFencePropertiesVULKAN_HPP_NAMESPACE::ExternalFenceProperties28397     ExternalFenceProperties( VkExternalFenceProperties const & rhs ) VULKAN_HPP_NOEXCEPT
28398       : ExternalFenceProperties( *reinterpret_cast<ExternalFenceProperties const *>( &rhs ) )
28399     {}
28400 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
28401 
28402     ExternalFenceProperties & operator=( ExternalFenceProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28403 
operator =VULKAN_HPP_NAMESPACE::ExternalFenceProperties28404     ExternalFenceProperties & operator=( VkExternalFenceProperties const & rhs ) VULKAN_HPP_NOEXCEPT
28405     {
28406       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalFenceProperties const *>( &rhs );
28407       return *this;
28408     }
28409 
operator VkExternalFenceProperties const&VULKAN_HPP_NAMESPACE::ExternalFenceProperties28410     explicit operator VkExternalFenceProperties const &() const VULKAN_HPP_NOEXCEPT
28411     {
28412       return *reinterpret_cast<const VkExternalFenceProperties *>( this );
28413     }
28414 
operator VkExternalFenceProperties&VULKAN_HPP_NAMESPACE::ExternalFenceProperties28415     explicit operator VkExternalFenceProperties &() VULKAN_HPP_NOEXCEPT
28416     {
28417       return *reinterpret_cast<VkExternalFenceProperties *>( this );
28418     }
28419 
28420 #if 14 <= VULKAN_HPP_CPP_VERSION
28421     auto
28422 #else
28423     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
28424                void * const &,
28425                VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags const &,
28426                VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags const &,
28427                VULKAN_HPP_NAMESPACE::ExternalFenceFeatureFlags const &>
28428 #endif
reflectVULKAN_HPP_NAMESPACE::ExternalFenceProperties28429       reflect() const VULKAN_HPP_NOEXCEPT
28430     {
28431       return std::tie( sType, pNext, exportFromImportedHandleTypes, compatibleHandleTypes, externalFenceFeatures );
28432     }
28433 
28434 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
28435     auto operator<=>( ExternalFenceProperties const & ) const = default;
28436 #else
operator ==VULKAN_HPP_NAMESPACE::ExternalFenceProperties28437     bool operator==( ExternalFenceProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
28438     {
28439       return this->reflect() == rhs.reflect();
28440     }
28441 
operator !=VULKAN_HPP_NAMESPACE::ExternalFenceProperties28442     bool operator!=( ExternalFenceProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
28443     {
28444       return this->reflect() != rhs.reflect();
28445     }
28446 #endif
28447 
28448   public:
28449     VULKAN_HPP_NAMESPACE::StructureType                sType = StructureType::eExternalFenceProperties;
28450     void *                                             pNext = {};
28451     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags exportFromImportedHandleTypes = {};
28452     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags compatibleHandleTypes         = {};
28453     VULKAN_HPP_NAMESPACE::ExternalFenceFeatureFlags    externalFenceFeatures         = {};
28454   };
28455   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalFenceProperties ) ==
28456                               sizeof( VkExternalFenceProperties ),
28457                             "struct and wrapper have different size!" );
28458   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ExternalFenceProperties>::value,
28459                             "struct wrapper is not a standard layout!" );
28460   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ExternalFenceProperties>::value,
28461                             "ExternalFenceProperties is not nothrow_move_constructible!" );
28462 
28463   template <>
28464   struct CppType<StructureType, StructureType::eExternalFenceProperties>
28465   {
28466     using Type = ExternalFenceProperties;
28467   };
28468   using ExternalFencePropertiesKHR = ExternalFenceProperties;
28469 
28470 #if defined( VK_USE_PLATFORM_ANDROID_KHR )
28471   struct ExternalFormatANDROID
28472   {
28473     using NativeType = VkExternalFormatANDROID;
28474 
28475     static const bool                                  allowDuplicate = false;
28476     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExternalFormatANDROID;
28477 
28478 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalFormatANDROIDVULKAN_HPP_NAMESPACE::ExternalFormatANDROID28479     VULKAN_HPP_CONSTEXPR ExternalFormatANDROID( uint64_t externalFormat_ = {} ) VULKAN_HPP_NOEXCEPT
28480       : externalFormat( externalFormat_ )
28481     {}
28482 
28483     VULKAN_HPP_CONSTEXPR ExternalFormatANDROID( ExternalFormatANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28484 
ExternalFormatANDROIDVULKAN_HPP_NAMESPACE::ExternalFormatANDROID28485     ExternalFormatANDROID( VkExternalFormatANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
28486       : ExternalFormatANDROID( *reinterpret_cast<ExternalFormatANDROID const *>( &rhs ) )
28487     {}
28488 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
28489 
28490     ExternalFormatANDROID & operator=( ExternalFormatANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28491 
operator =VULKAN_HPP_NAMESPACE::ExternalFormatANDROID28492     ExternalFormatANDROID & operator=( VkExternalFormatANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
28493     {
28494       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalFormatANDROID const *>( &rhs );
28495       return *this;
28496     }
28497 
28498 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExternalFormatANDROID28499     VULKAN_HPP_CONSTEXPR_14 ExternalFormatANDROID & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
28500     {
28501       pNext = pNext_;
28502       return *this;
28503     }
28504 
setExternalFormatVULKAN_HPP_NAMESPACE::ExternalFormatANDROID28505     VULKAN_HPP_CONSTEXPR_14 ExternalFormatANDROID & setExternalFormat( uint64_t externalFormat_ ) VULKAN_HPP_NOEXCEPT
28506     {
28507       externalFormat = externalFormat_;
28508       return *this;
28509     }
28510 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
28511 
operator VkExternalFormatANDROID const&VULKAN_HPP_NAMESPACE::ExternalFormatANDROID28512     explicit operator VkExternalFormatANDROID const &() const VULKAN_HPP_NOEXCEPT
28513     {
28514       return *reinterpret_cast<const VkExternalFormatANDROID *>( this );
28515     }
28516 
operator VkExternalFormatANDROID&VULKAN_HPP_NAMESPACE::ExternalFormatANDROID28517     explicit operator VkExternalFormatANDROID &() VULKAN_HPP_NOEXCEPT
28518     {
28519       return *reinterpret_cast<VkExternalFormatANDROID *>( this );
28520     }
28521 
28522 #  if 14 <= VULKAN_HPP_CPP_VERSION
28523     auto
28524 #  else
28525     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint64_t const &>
28526 #  endif
reflectVULKAN_HPP_NAMESPACE::ExternalFormatANDROID28527       reflect() const VULKAN_HPP_NOEXCEPT
28528     {
28529       return std::tie( sType, pNext, externalFormat );
28530     }
28531 
28532 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
28533     auto operator<=>( ExternalFormatANDROID const & ) const = default;
28534 #  else
operator ==VULKAN_HPP_NAMESPACE::ExternalFormatANDROID28535     bool operator==( ExternalFormatANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
28536     {
28537       return this->reflect() == rhs.reflect();
28538     }
28539 
operator !=VULKAN_HPP_NAMESPACE::ExternalFormatANDROID28540     bool operator!=( ExternalFormatANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
28541     {
28542       return this->reflect() != rhs.reflect();
28543     }
28544 #  endif
28545 
28546   public:
28547     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eExternalFormatANDROID;
28548     void *                              pNext          = {};
28549     uint64_t                            externalFormat = {};
28550   };
28551   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalFormatANDROID ) == sizeof( VkExternalFormatANDROID ),
28552                             "struct and wrapper have different size!" );
28553   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ExternalFormatANDROID>::value,
28554                             "struct wrapper is not a standard layout!" );
28555   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ExternalFormatANDROID>::value,
28556                             "ExternalFormatANDROID is not nothrow_move_constructible!" );
28557 
28558   template <>
28559   struct CppType<StructureType, StructureType::eExternalFormatANDROID>
28560   {
28561     using Type = ExternalFormatANDROID;
28562   };
28563 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
28564 
28565   struct ExternalImageFormatProperties
28566   {
28567     using NativeType = VkExternalImageFormatProperties;
28568 
28569     static const bool                                  allowDuplicate = false;
28570     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExternalImageFormatProperties;
28571 
28572 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalImageFormatPropertiesVULKAN_HPP_NAMESPACE::ExternalImageFormatProperties28573     VULKAN_HPP_CONSTEXPR ExternalImageFormatProperties(
28574       VULKAN_HPP_NAMESPACE::ExternalMemoryProperties externalMemoryProperties_ = {} ) VULKAN_HPP_NOEXCEPT
28575       : externalMemoryProperties( externalMemoryProperties_ )
28576     {}
28577 
28578     VULKAN_HPP_CONSTEXPR
28579       ExternalImageFormatProperties( ExternalImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28580 
ExternalImageFormatPropertiesVULKAN_HPP_NAMESPACE::ExternalImageFormatProperties28581     ExternalImageFormatProperties( VkExternalImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
28582       : ExternalImageFormatProperties( *reinterpret_cast<ExternalImageFormatProperties const *>( &rhs ) )
28583     {}
28584 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
28585 
28586     ExternalImageFormatProperties &
28587       operator=( ExternalImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28588 
operator =VULKAN_HPP_NAMESPACE::ExternalImageFormatProperties28589     ExternalImageFormatProperties & operator=( VkExternalImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
28590     {
28591       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalImageFormatProperties const *>( &rhs );
28592       return *this;
28593     }
28594 
operator VkExternalImageFormatProperties const&VULKAN_HPP_NAMESPACE::ExternalImageFormatProperties28595     explicit operator VkExternalImageFormatProperties const &() const VULKAN_HPP_NOEXCEPT
28596     {
28597       return *reinterpret_cast<const VkExternalImageFormatProperties *>( this );
28598     }
28599 
operator VkExternalImageFormatProperties&VULKAN_HPP_NAMESPACE::ExternalImageFormatProperties28600     explicit operator VkExternalImageFormatProperties &() VULKAN_HPP_NOEXCEPT
28601     {
28602       return *reinterpret_cast<VkExternalImageFormatProperties *>( this );
28603     }
28604 
28605 #if 14 <= VULKAN_HPP_CPP_VERSION
28606     auto
28607 #else
28608     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
28609                void * const &,
28610                VULKAN_HPP_NAMESPACE::ExternalMemoryProperties const &>
28611 #endif
reflectVULKAN_HPP_NAMESPACE::ExternalImageFormatProperties28612       reflect() const VULKAN_HPP_NOEXCEPT
28613     {
28614       return std::tie( sType, pNext, externalMemoryProperties );
28615     }
28616 
28617 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
28618     auto operator<=>( ExternalImageFormatProperties const & ) const = default;
28619 #else
operator ==VULKAN_HPP_NAMESPACE::ExternalImageFormatProperties28620     bool operator==( ExternalImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
28621     {
28622       return this->reflect() == rhs.reflect();
28623     }
28624 
operator !=VULKAN_HPP_NAMESPACE::ExternalImageFormatProperties28625     bool operator!=( ExternalImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
28626     {
28627       return this->reflect() != rhs.reflect();
28628     }
28629 #endif
28630 
28631   public:
28632     VULKAN_HPP_NAMESPACE::StructureType            sType = StructureType::eExternalImageFormatProperties;
28633     void *                                         pNext = {};
28634     VULKAN_HPP_NAMESPACE::ExternalMemoryProperties externalMemoryProperties = {};
28635   };
28636   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalImageFormatProperties ) ==
28637                               sizeof( VkExternalImageFormatProperties ),
28638                             "struct and wrapper have different size!" );
28639   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ExternalImageFormatProperties>::value,
28640                             "struct wrapper is not a standard layout!" );
28641   VULKAN_HPP_STATIC_ASSERT(
28642     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ExternalImageFormatProperties>::value,
28643     "ExternalImageFormatProperties is not nothrow_move_constructible!" );
28644 
28645   template <>
28646   struct CppType<StructureType, StructureType::eExternalImageFormatProperties>
28647   {
28648     using Type = ExternalImageFormatProperties;
28649   };
28650   using ExternalImageFormatPropertiesKHR = ExternalImageFormatProperties;
28651 
28652   struct ImageFormatProperties
28653   {
28654     using NativeType = VkImageFormatProperties;
28655 
28656 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
28657     VULKAN_HPP_CONSTEXPR
ImageFormatPropertiesVULKAN_HPP_NAMESPACE::ImageFormatProperties28658       ImageFormatProperties( VULKAN_HPP_NAMESPACE::Extent3D         maxExtent_       = {},
28659                              uint32_t                               maxMipLevels_    = {},
28660                              uint32_t                               maxArrayLayers_  = {},
28661                              VULKAN_HPP_NAMESPACE::SampleCountFlags sampleCounts_    = {},
28662                              VULKAN_HPP_NAMESPACE::DeviceSize       maxResourceSize_ = {} ) VULKAN_HPP_NOEXCEPT
28663       : maxExtent( maxExtent_ )
28664       , maxMipLevels( maxMipLevels_ )
28665       , maxArrayLayers( maxArrayLayers_ )
28666       , sampleCounts( sampleCounts_ )
28667       , maxResourceSize( maxResourceSize_ )
28668     {}
28669 
28670     VULKAN_HPP_CONSTEXPR ImageFormatProperties( ImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28671 
ImageFormatPropertiesVULKAN_HPP_NAMESPACE::ImageFormatProperties28672     ImageFormatProperties( VkImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
28673       : ImageFormatProperties( *reinterpret_cast<ImageFormatProperties const *>( &rhs ) )
28674     {}
28675 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
28676 
28677     ImageFormatProperties & operator=( ImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28678 
operator =VULKAN_HPP_NAMESPACE::ImageFormatProperties28679     ImageFormatProperties & operator=( VkImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
28680     {
28681       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageFormatProperties const *>( &rhs );
28682       return *this;
28683     }
28684 
operator VkImageFormatProperties const&VULKAN_HPP_NAMESPACE::ImageFormatProperties28685     explicit operator VkImageFormatProperties const &() const VULKAN_HPP_NOEXCEPT
28686     {
28687       return *reinterpret_cast<const VkImageFormatProperties *>( this );
28688     }
28689 
operator VkImageFormatProperties&VULKAN_HPP_NAMESPACE::ImageFormatProperties28690     explicit operator VkImageFormatProperties &() VULKAN_HPP_NOEXCEPT
28691     {
28692       return *reinterpret_cast<VkImageFormatProperties *>( this );
28693     }
28694 
28695 #if 14 <= VULKAN_HPP_CPP_VERSION
28696     auto
28697 #else
28698     std::tuple<VULKAN_HPP_NAMESPACE::Extent3D const &,
28699                uint32_t const &,
28700                uint32_t const &,
28701                VULKAN_HPP_NAMESPACE::SampleCountFlags const &,
28702                VULKAN_HPP_NAMESPACE::DeviceSize const &>
28703 #endif
reflectVULKAN_HPP_NAMESPACE::ImageFormatProperties28704       reflect() const VULKAN_HPP_NOEXCEPT
28705     {
28706       return std::tie( maxExtent, maxMipLevels, maxArrayLayers, sampleCounts, maxResourceSize );
28707     }
28708 
28709 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
28710     auto operator<=>( ImageFormatProperties const & ) const = default;
28711 #else
operator ==VULKAN_HPP_NAMESPACE::ImageFormatProperties28712     bool operator==( ImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
28713     {
28714       return this->reflect() == rhs.reflect();
28715     }
28716 
operator !=VULKAN_HPP_NAMESPACE::ImageFormatProperties28717     bool operator!=( ImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
28718     {
28719       return this->reflect() != rhs.reflect();
28720     }
28721 #endif
28722 
28723   public:
28724     VULKAN_HPP_NAMESPACE::Extent3D         maxExtent       = {};
28725     uint32_t                               maxMipLevels    = {};
28726     uint32_t                               maxArrayLayers  = {};
28727     VULKAN_HPP_NAMESPACE::SampleCountFlags sampleCounts    = {};
28728     VULKAN_HPP_NAMESPACE::DeviceSize       maxResourceSize = {};
28729   };
28730   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageFormatProperties ) == sizeof( VkImageFormatProperties ),
28731                             "struct and wrapper have different size!" );
28732   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImageFormatProperties>::value,
28733                             "struct wrapper is not a standard layout!" );
28734   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImageFormatProperties>::value,
28735                             "ImageFormatProperties is not nothrow_move_constructible!" );
28736 
28737   struct ExternalImageFormatPropertiesNV
28738   {
28739     using NativeType = VkExternalImageFormatPropertiesNV;
28740 
28741 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalImageFormatPropertiesNVVULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV28742     VULKAN_HPP_CONSTEXPR ExternalImageFormatPropertiesNV(
28743       VULKAN_HPP_NAMESPACE::ImageFormatProperties           imageFormatProperties_         = {},
28744       VULKAN_HPP_NAMESPACE::ExternalMemoryFeatureFlagsNV    externalMemoryFeatures_        = {},
28745       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes_ = {},
28746       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV compatibleHandleTypes_         = {} ) VULKAN_HPP_NOEXCEPT
28747       : imageFormatProperties( imageFormatProperties_ )
28748       , externalMemoryFeatures( externalMemoryFeatures_ )
28749       , exportFromImportedHandleTypes( exportFromImportedHandleTypes_ )
28750       , compatibleHandleTypes( compatibleHandleTypes_ )
28751     {}
28752 
28753     VULKAN_HPP_CONSTEXPR
28754       ExternalImageFormatPropertiesNV( ExternalImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28755 
ExternalImageFormatPropertiesNVVULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV28756     ExternalImageFormatPropertiesNV( VkExternalImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
28757       : ExternalImageFormatPropertiesNV( *reinterpret_cast<ExternalImageFormatPropertiesNV const *>( &rhs ) )
28758     {}
28759 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
28760 
28761     ExternalImageFormatPropertiesNV &
28762       operator=( ExternalImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28763 
operator =VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV28764     ExternalImageFormatPropertiesNV & operator=( VkExternalImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
28765     {
28766       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV const *>( &rhs );
28767       return *this;
28768     }
28769 
operator VkExternalImageFormatPropertiesNV const&VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV28770     explicit operator VkExternalImageFormatPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
28771     {
28772       return *reinterpret_cast<const VkExternalImageFormatPropertiesNV *>( this );
28773     }
28774 
operator VkExternalImageFormatPropertiesNV&VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV28775     explicit operator VkExternalImageFormatPropertiesNV &() VULKAN_HPP_NOEXCEPT
28776     {
28777       return *reinterpret_cast<VkExternalImageFormatPropertiesNV *>( this );
28778     }
28779 
28780 #if 14 <= VULKAN_HPP_CPP_VERSION
28781     auto
28782 #else
28783     std::tuple<VULKAN_HPP_NAMESPACE::ImageFormatProperties const &,
28784                VULKAN_HPP_NAMESPACE::ExternalMemoryFeatureFlagsNV const &,
28785                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV const &,
28786                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV const &>
28787 #endif
reflectVULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV28788       reflect() const VULKAN_HPP_NOEXCEPT
28789     {
28790       return std::tie(
28791         imageFormatProperties, externalMemoryFeatures, exportFromImportedHandleTypes, compatibleHandleTypes );
28792     }
28793 
28794 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
28795     auto operator<=>( ExternalImageFormatPropertiesNV const & ) const = default;
28796 #else
operator ==VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV28797     bool operator==( ExternalImageFormatPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
28798     {
28799       return this->reflect() == rhs.reflect();
28800     }
28801 
operator !=VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV28802     bool operator!=( ExternalImageFormatPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
28803     {
28804       return this->reflect() != rhs.reflect();
28805     }
28806 #endif
28807 
28808   public:
28809     VULKAN_HPP_NAMESPACE::ImageFormatProperties           imageFormatProperties         = {};
28810     VULKAN_HPP_NAMESPACE::ExternalMemoryFeatureFlagsNV    externalMemoryFeatures        = {};
28811     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes = {};
28812     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV compatibleHandleTypes         = {};
28813   };
28814   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV ) ==
28815                               sizeof( VkExternalImageFormatPropertiesNV ),
28816                             "struct and wrapper have different size!" );
28817   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV>::value,
28818                             "struct wrapper is not a standard layout!" );
28819   VULKAN_HPP_STATIC_ASSERT(
28820     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV>::value,
28821     "ExternalImageFormatPropertiesNV is not nothrow_move_constructible!" );
28822 
28823   struct ExternalMemoryBufferCreateInfo
28824   {
28825     using NativeType = VkExternalMemoryBufferCreateInfo;
28826 
28827     static const bool                                  allowDuplicate = false;
28828     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExternalMemoryBufferCreateInfo;
28829 
28830 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalMemoryBufferCreateInfoVULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo28831     VULKAN_HPP_CONSTEXPR ExternalMemoryBufferCreateInfo(
28832       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes_ = {} ) VULKAN_HPP_NOEXCEPT
28833       : handleTypes( handleTypes_ )
28834     {}
28835 
28836     VULKAN_HPP_CONSTEXPR
28837       ExternalMemoryBufferCreateInfo( ExternalMemoryBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28838 
ExternalMemoryBufferCreateInfoVULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo28839     ExternalMemoryBufferCreateInfo( VkExternalMemoryBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
28840       : ExternalMemoryBufferCreateInfo( *reinterpret_cast<ExternalMemoryBufferCreateInfo const *>( &rhs ) )
28841     {}
28842 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
28843 
28844     ExternalMemoryBufferCreateInfo &
28845       operator=( ExternalMemoryBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28846 
operator =VULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo28847     ExternalMemoryBufferCreateInfo & operator=( VkExternalMemoryBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
28848     {
28849       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo const *>( &rhs );
28850       return *this;
28851     }
28852 
28853 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo28854     VULKAN_HPP_CONSTEXPR_14 ExternalMemoryBufferCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
28855     {
28856       pNext = pNext_;
28857       return *this;
28858     }
28859 
28860     VULKAN_HPP_CONSTEXPR_14 ExternalMemoryBufferCreateInfo &
setHandleTypesVULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo28861       setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes_ ) VULKAN_HPP_NOEXCEPT
28862     {
28863       handleTypes = handleTypes_;
28864       return *this;
28865     }
28866 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
28867 
operator VkExternalMemoryBufferCreateInfo const&VULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo28868     explicit operator VkExternalMemoryBufferCreateInfo const &() const VULKAN_HPP_NOEXCEPT
28869     {
28870       return *reinterpret_cast<const VkExternalMemoryBufferCreateInfo *>( this );
28871     }
28872 
operator VkExternalMemoryBufferCreateInfo&VULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo28873     explicit operator VkExternalMemoryBufferCreateInfo &() VULKAN_HPP_NOEXCEPT
28874     {
28875       return *reinterpret_cast<VkExternalMemoryBufferCreateInfo *>( this );
28876     }
28877 
28878 #if 14 <= VULKAN_HPP_CPP_VERSION
28879     auto
28880 #else
28881     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
28882                const void * const &,
28883                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags const &>
28884 #endif
reflectVULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo28885       reflect() const VULKAN_HPP_NOEXCEPT
28886     {
28887       return std::tie( sType, pNext, handleTypes );
28888     }
28889 
28890 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
28891     auto operator<=>( ExternalMemoryBufferCreateInfo const & ) const = default;
28892 #else
operator ==VULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo28893     bool operator==( ExternalMemoryBufferCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
28894     {
28895       return this->reflect() == rhs.reflect();
28896     }
28897 
operator !=VULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo28898     bool operator!=( ExternalMemoryBufferCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
28899     {
28900       return this->reflect() != rhs.reflect();
28901     }
28902 #endif
28903 
28904   public:
28905     VULKAN_HPP_NAMESPACE::StructureType                 sType       = StructureType::eExternalMemoryBufferCreateInfo;
28906     const void *                                        pNext       = {};
28907     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes = {};
28908   };
28909   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo ) ==
28910                               sizeof( VkExternalMemoryBufferCreateInfo ),
28911                             "struct and wrapper have different size!" );
28912   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo>::value,
28913                             "struct wrapper is not a standard layout!" );
28914   VULKAN_HPP_STATIC_ASSERT(
28915     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo>::value,
28916     "ExternalMemoryBufferCreateInfo is not nothrow_move_constructible!" );
28917 
28918   template <>
28919   struct CppType<StructureType, StructureType::eExternalMemoryBufferCreateInfo>
28920   {
28921     using Type = ExternalMemoryBufferCreateInfo;
28922   };
28923   using ExternalMemoryBufferCreateInfoKHR = ExternalMemoryBufferCreateInfo;
28924 
28925   struct ExternalMemoryImageCreateInfo
28926   {
28927     using NativeType = VkExternalMemoryImageCreateInfo;
28928 
28929     static const bool                                  allowDuplicate = false;
28930     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExternalMemoryImageCreateInfo;
28931 
28932 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalMemoryImageCreateInfoVULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo28933     VULKAN_HPP_CONSTEXPR ExternalMemoryImageCreateInfo(
28934       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes_ = {} ) VULKAN_HPP_NOEXCEPT
28935       : handleTypes( handleTypes_ )
28936     {}
28937 
28938     VULKAN_HPP_CONSTEXPR
28939       ExternalMemoryImageCreateInfo( ExternalMemoryImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28940 
ExternalMemoryImageCreateInfoVULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo28941     ExternalMemoryImageCreateInfo( VkExternalMemoryImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
28942       : ExternalMemoryImageCreateInfo( *reinterpret_cast<ExternalMemoryImageCreateInfo const *>( &rhs ) )
28943     {}
28944 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
28945 
28946     ExternalMemoryImageCreateInfo &
28947       operator=( ExternalMemoryImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28948 
operator =VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo28949     ExternalMemoryImageCreateInfo & operator=( VkExternalMemoryImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
28950     {
28951       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo const *>( &rhs );
28952       return *this;
28953     }
28954 
28955 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo28956     VULKAN_HPP_CONSTEXPR_14 ExternalMemoryImageCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
28957     {
28958       pNext = pNext_;
28959       return *this;
28960     }
28961 
28962     VULKAN_HPP_CONSTEXPR_14 ExternalMemoryImageCreateInfo &
setHandleTypesVULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo28963       setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes_ ) VULKAN_HPP_NOEXCEPT
28964     {
28965       handleTypes = handleTypes_;
28966       return *this;
28967     }
28968 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
28969 
operator VkExternalMemoryImageCreateInfo const&VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo28970     explicit operator VkExternalMemoryImageCreateInfo const &() const VULKAN_HPP_NOEXCEPT
28971     {
28972       return *reinterpret_cast<const VkExternalMemoryImageCreateInfo *>( this );
28973     }
28974 
operator VkExternalMemoryImageCreateInfo&VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo28975     explicit operator VkExternalMemoryImageCreateInfo &() VULKAN_HPP_NOEXCEPT
28976     {
28977       return *reinterpret_cast<VkExternalMemoryImageCreateInfo *>( this );
28978     }
28979 
28980 #if 14 <= VULKAN_HPP_CPP_VERSION
28981     auto
28982 #else
28983     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
28984                const void * const &,
28985                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags const &>
28986 #endif
reflectVULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo28987       reflect() const VULKAN_HPP_NOEXCEPT
28988     {
28989       return std::tie( sType, pNext, handleTypes );
28990     }
28991 
28992 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
28993     auto operator<=>( ExternalMemoryImageCreateInfo const & ) const = default;
28994 #else
operator ==VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo28995     bool operator==( ExternalMemoryImageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
28996     {
28997       return this->reflect() == rhs.reflect();
28998     }
28999 
operator !=VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo29000     bool operator!=( ExternalMemoryImageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
29001     {
29002       return this->reflect() != rhs.reflect();
29003     }
29004 #endif
29005 
29006   public:
29007     VULKAN_HPP_NAMESPACE::StructureType                 sType       = StructureType::eExternalMemoryImageCreateInfo;
29008     const void *                                        pNext       = {};
29009     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes = {};
29010   };
29011   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo ) ==
29012                               sizeof( VkExternalMemoryImageCreateInfo ),
29013                             "struct and wrapper have different size!" );
29014   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo>::value,
29015                             "struct wrapper is not a standard layout!" );
29016   VULKAN_HPP_STATIC_ASSERT(
29017     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo>::value,
29018     "ExternalMemoryImageCreateInfo is not nothrow_move_constructible!" );
29019 
29020   template <>
29021   struct CppType<StructureType, StructureType::eExternalMemoryImageCreateInfo>
29022   {
29023     using Type = ExternalMemoryImageCreateInfo;
29024   };
29025   using ExternalMemoryImageCreateInfoKHR = ExternalMemoryImageCreateInfo;
29026 
29027   struct ExternalMemoryImageCreateInfoNV
29028   {
29029     using NativeType = VkExternalMemoryImageCreateInfoNV;
29030 
29031     static const bool                                  allowDuplicate = false;
29032     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExternalMemoryImageCreateInfoNV;
29033 
29034 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalMemoryImageCreateInfoNVVULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV29035     VULKAN_HPP_CONSTEXPR ExternalMemoryImageCreateInfoNV(
29036       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleTypes_ = {} ) VULKAN_HPP_NOEXCEPT
29037       : handleTypes( handleTypes_ )
29038     {}
29039 
29040     VULKAN_HPP_CONSTEXPR
29041       ExternalMemoryImageCreateInfoNV( ExternalMemoryImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29042 
ExternalMemoryImageCreateInfoNVVULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV29043     ExternalMemoryImageCreateInfoNV( VkExternalMemoryImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
29044       : ExternalMemoryImageCreateInfoNV( *reinterpret_cast<ExternalMemoryImageCreateInfoNV const *>( &rhs ) )
29045     {}
29046 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
29047 
29048     ExternalMemoryImageCreateInfoNV &
29049       operator=( ExternalMemoryImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29050 
operator =VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV29051     ExternalMemoryImageCreateInfoNV & operator=( VkExternalMemoryImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
29052     {
29053       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV const *>( &rhs );
29054       return *this;
29055     }
29056 
29057 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV29058     VULKAN_HPP_CONSTEXPR_14 ExternalMemoryImageCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
29059     {
29060       pNext = pNext_;
29061       return *this;
29062     }
29063 
29064     VULKAN_HPP_CONSTEXPR_14 ExternalMemoryImageCreateInfoNV &
setHandleTypesVULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV29065       setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleTypes_ ) VULKAN_HPP_NOEXCEPT
29066     {
29067       handleTypes = handleTypes_;
29068       return *this;
29069     }
29070 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
29071 
operator VkExternalMemoryImageCreateInfoNV const&VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV29072     explicit operator VkExternalMemoryImageCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
29073     {
29074       return *reinterpret_cast<const VkExternalMemoryImageCreateInfoNV *>( this );
29075     }
29076 
operator VkExternalMemoryImageCreateInfoNV&VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV29077     explicit operator VkExternalMemoryImageCreateInfoNV &() VULKAN_HPP_NOEXCEPT
29078     {
29079       return *reinterpret_cast<VkExternalMemoryImageCreateInfoNV *>( this );
29080     }
29081 
29082 #if 14 <= VULKAN_HPP_CPP_VERSION
29083     auto
29084 #else
29085     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
29086                const void * const &,
29087                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV const &>
29088 #endif
reflectVULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV29089       reflect() const VULKAN_HPP_NOEXCEPT
29090     {
29091       return std::tie( sType, pNext, handleTypes );
29092     }
29093 
29094 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
29095     auto operator<=>( ExternalMemoryImageCreateInfoNV const & ) const = default;
29096 #else
operator ==VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV29097     bool operator==( ExternalMemoryImageCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
29098     {
29099       return this->reflect() == rhs.reflect();
29100     }
29101 
operator !=VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV29102     bool operator!=( ExternalMemoryImageCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
29103     {
29104       return this->reflect() != rhs.reflect();
29105     }
29106 #endif
29107 
29108   public:
29109     VULKAN_HPP_NAMESPACE::StructureType                   sType       = StructureType::eExternalMemoryImageCreateInfoNV;
29110     const void *                                          pNext       = {};
29111     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleTypes = {};
29112   };
29113   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV ) ==
29114                               sizeof( VkExternalMemoryImageCreateInfoNV ),
29115                             "struct and wrapper have different size!" );
29116   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV>::value,
29117                             "struct wrapper is not a standard layout!" );
29118   VULKAN_HPP_STATIC_ASSERT(
29119     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV>::value,
29120     "ExternalMemoryImageCreateInfoNV is not nothrow_move_constructible!" );
29121 
29122   template <>
29123   struct CppType<StructureType, StructureType::eExternalMemoryImageCreateInfoNV>
29124   {
29125     using Type = ExternalMemoryImageCreateInfoNV;
29126   };
29127 
29128   struct ExternalSemaphoreProperties
29129   {
29130     using NativeType = VkExternalSemaphoreProperties;
29131 
29132     static const bool                                  allowDuplicate = false;
29133     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExternalSemaphoreProperties;
29134 
29135 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalSemaphorePropertiesVULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties29136     VULKAN_HPP_CONSTEXPR ExternalSemaphoreProperties(
29137       VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags exportFromImportedHandleTypes_ = {},
29138       VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags compatibleHandleTypes_         = {},
29139       VULKAN_HPP_NAMESPACE::ExternalSemaphoreFeatureFlags    externalSemaphoreFeatures_     = {} ) VULKAN_HPP_NOEXCEPT
29140       : exportFromImportedHandleTypes( exportFromImportedHandleTypes_ )
29141       , compatibleHandleTypes( compatibleHandleTypes_ )
29142       , externalSemaphoreFeatures( externalSemaphoreFeatures_ )
29143     {}
29144 
29145     VULKAN_HPP_CONSTEXPR
29146       ExternalSemaphoreProperties( ExternalSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29147 
ExternalSemaphorePropertiesVULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties29148     ExternalSemaphoreProperties( VkExternalSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT
29149       : ExternalSemaphoreProperties( *reinterpret_cast<ExternalSemaphoreProperties const *>( &rhs ) )
29150     {}
29151 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
29152 
29153     ExternalSemaphoreProperties & operator=( ExternalSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29154 
operator =VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties29155     ExternalSemaphoreProperties & operator=( VkExternalSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT
29156     {
29157       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties const *>( &rhs );
29158       return *this;
29159     }
29160 
operator VkExternalSemaphoreProperties const&VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties29161     explicit operator VkExternalSemaphoreProperties const &() const VULKAN_HPP_NOEXCEPT
29162     {
29163       return *reinterpret_cast<const VkExternalSemaphoreProperties *>( this );
29164     }
29165 
operator VkExternalSemaphoreProperties&VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties29166     explicit operator VkExternalSemaphoreProperties &() VULKAN_HPP_NOEXCEPT
29167     {
29168       return *reinterpret_cast<VkExternalSemaphoreProperties *>( this );
29169     }
29170 
29171 #if 14 <= VULKAN_HPP_CPP_VERSION
29172     auto
29173 #else
29174     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
29175                void * const &,
29176                VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags const &,
29177                VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags const &,
29178                VULKAN_HPP_NAMESPACE::ExternalSemaphoreFeatureFlags const &>
29179 #endif
reflectVULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties29180       reflect() const VULKAN_HPP_NOEXCEPT
29181     {
29182       return std::tie( sType, pNext, exportFromImportedHandleTypes, compatibleHandleTypes, externalSemaphoreFeatures );
29183     }
29184 
29185 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
29186     auto operator<=>( ExternalSemaphoreProperties const & ) const = default;
29187 #else
operator ==VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties29188     bool operator==( ExternalSemaphoreProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
29189     {
29190       return this->reflect() == rhs.reflect();
29191     }
29192 
operator !=VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties29193     bool operator!=( ExternalSemaphoreProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
29194     {
29195       return this->reflect() != rhs.reflect();
29196     }
29197 #endif
29198 
29199   public:
29200     VULKAN_HPP_NAMESPACE::StructureType                    sType = StructureType::eExternalSemaphoreProperties;
29201     void *                                                 pNext = {};
29202     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags exportFromImportedHandleTypes = {};
29203     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags compatibleHandleTypes         = {};
29204     VULKAN_HPP_NAMESPACE::ExternalSemaphoreFeatureFlags    externalSemaphoreFeatures     = {};
29205   };
29206   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties ) ==
29207                               sizeof( VkExternalSemaphoreProperties ),
29208                             "struct and wrapper have different size!" );
29209   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties>::value,
29210                             "struct wrapper is not a standard layout!" );
29211   VULKAN_HPP_STATIC_ASSERT(
29212     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties>::value,
29213     "ExternalSemaphoreProperties is not nothrow_move_constructible!" );
29214 
29215   template <>
29216   struct CppType<StructureType, StructureType::eExternalSemaphoreProperties>
29217   {
29218     using Type = ExternalSemaphoreProperties;
29219   };
29220   using ExternalSemaphorePropertiesKHR = ExternalSemaphoreProperties;
29221 
29222   struct FenceCreateInfo
29223   {
29224     using NativeType = VkFenceCreateInfo;
29225 
29226     static const bool                                  allowDuplicate = false;
29227     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eFenceCreateInfo;
29228 
29229 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FenceCreateInfoVULKAN_HPP_NAMESPACE::FenceCreateInfo29230     VULKAN_HPP_CONSTEXPR FenceCreateInfo( VULKAN_HPP_NAMESPACE::FenceCreateFlags flags_ = {} ) VULKAN_HPP_NOEXCEPT
29231       : flags( flags_ )
29232     {}
29233 
29234     VULKAN_HPP_CONSTEXPR FenceCreateInfo( FenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29235 
FenceCreateInfoVULKAN_HPP_NAMESPACE::FenceCreateInfo29236     FenceCreateInfo( VkFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
29237       : FenceCreateInfo( *reinterpret_cast<FenceCreateInfo const *>( &rhs ) )
29238     {}
29239 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
29240 
29241     FenceCreateInfo & operator=( FenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29242 
operator =VULKAN_HPP_NAMESPACE::FenceCreateInfo29243     FenceCreateInfo & operator=( VkFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
29244     {
29245       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FenceCreateInfo const *>( &rhs );
29246       return *this;
29247     }
29248 
29249 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::FenceCreateInfo29250     VULKAN_HPP_CONSTEXPR_14 FenceCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
29251     {
29252       pNext = pNext_;
29253       return *this;
29254     }
29255 
29256     VULKAN_HPP_CONSTEXPR_14 FenceCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::FenceCreateInfo29257                             setFlags( VULKAN_HPP_NAMESPACE::FenceCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
29258     {
29259       flags = flags_;
29260       return *this;
29261     }
29262 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
29263 
operator VkFenceCreateInfo const&VULKAN_HPP_NAMESPACE::FenceCreateInfo29264     explicit operator VkFenceCreateInfo const &() const VULKAN_HPP_NOEXCEPT
29265     {
29266       return *reinterpret_cast<const VkFenceCreateInfo *>( this );
29267     }
29268 
operator VkFenceCreateInfo&VULKAN_HPP_NAMESPACE::FenceCreateInfo29269     explicit operator VkFenceCreateInfo &() VULKAN_HPP_NOEXCEPT
29270     {
29271       return *reinterpret_cast<VkFenceCreateInfo *>( this );
29272     }
29273 
29274 #if 14 <= VULKAN_HPP_CPP_VERSION
29275     auto
29276 #else
29277     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
29278                const void * const &,
29279                VULKAN_HPP_NAMESPACE::FenceCreateFlags const &>
29280 #endif
reflectVULKAN_HPP_NAMESPACE::FenceCreateInfo29281       reflect() const VULKAN_HPP_NOEXCEPT
29282     {
29283       return std::tie( sType, pNext, flags );
29284     }
29285 
29286 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
29287     auto operator<=>( FenceCreateInfo const & ) const = default;
29288 #else
operator ==VULKAN_HPP_NAMESPACE::FenceCreateInfo29289     bool operator==( FenceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
29290     {
29291       return this->reflect() == rhs.reflect();
29292     }
29293 
operator !=VULKAN_HPP_NAMESPACE::FenceCreateInfo29294     bool operator!=( FenceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
29295     {
29296       return this->reflect() != rhs.reflect();
29297     }
29298 #endif
29299 
29300   public:
29301     VULKAN_HPP_NAMESPACE::StructureType    sType = StructureType::eFenceCreateInfo;
29302     const void *                           pNext = {};
29303     VULKAN_HPP_NAMESPACE::FenceCreateFlags flags = {};
29304   };
29305   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FenceCreateInfo ) == sizeof( VkFenceCreateInfo ),
29306                             "struct and wrapper have different size!" );
29307   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::FenceCreateInfo>::value,
29308                             "struct wrapper is not a standard layout!" );
29309   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::FenceCreateInfo>::value,
29310                             "FenceCreateInfo is not nothrow_move_constructible!" );
29311 
29312   template <>
29313   struct CppType<StructureType, StructureType::eFenceCreateInfo>
29314   {
29315     using Type = FenceCreateInfo;
29316   };
29317 
29318   struct FenceGetFdInfoKHR
29319   {
29320     using NativeType = VkFenceGetFdInfoKHR;
29321 
29322     static const bool                                  allowDuplicate = false;
29323     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eFenceGetFdInfoKHR;
29324 
29325 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
29326     VULKAN_HPP_CONSTEXPR
FenceGetFdInfoKHRVULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR29327       FenceGetFdInfoKHR( VULKAN_HPP_NAMESPACE::Fence                           fence_ = {},
29328                          VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ =
29329                            VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd ) VULKAN_HPP_NOEXCEPT
29330       : fence( fence_ )
29331       , handleType( handleType_ )
29332     {}
29333 
29334     VULKAN_HPP_CONSTEXPR FenceGetFdInfoKHR( FenceGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29335 
FenceGetFdInfoKHRVULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR29336     FenceGetFdInfoKHR( VkFenceGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
29337       : FenceGetFdInfoKHR( *reinterpret_cast<FenceGetFdInfoKHR const *>( &rhs ) )
29338     {}
29339 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
29340 
29341     FenceGetFdInfoKHR & operator=( FenceGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29342 
operator =VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR29343     FenceGetFdInfoKHR & operator=( VkFenceGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
29344     {
29345       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR const *>( &rhs );
29346       return *this;
29347     }
29348 
29349 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR29350     VULKAN_HPP_CONSTEXPR_14 FenceGetFdInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
29351     {
29352       pNext = pNext_;
29353       return *this;
29354     }
29355 
setFenceVULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR29356     VULKAN_HPP_CONSTEXPR_14 FenceGetFdInfoKHR & setFence( VULKAN_HPP_NAMESPACE::Fence fence_ ) VULKAN_HPP_NOEXCEPT
29357     {
29358       fence = fence_;
29359       return *this;
29360     }
29361 
29362     VULKAN_HPP_CONSTEXPR_14 FenceGetFdInfoKHR &
setHandleTypeVULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR29363       setHandleType( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
29364     {
29365       handleType = handleType_;
29366       return *this;
29367     }
29368 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
29369 
operator VkFenceGetFdInfoKHR const&VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR29370     explicit operator VkFenceGetFdInfoKHR const &() const VULKAN_HPP_NOEXCEPT
29371     {
29372       return *reinterpret_cast<const VkFenceGetFdInfoKHR *>( this );
29373     }
29374 
operator VkFenceGetFdInfoKHR&VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR29375     explicit operator VkFenceGetFdInfoKHR &() VULKAN_HPP_NOEXCEPT
29376     {
29377       return *reinterpret_cast<VkFenceGetFdInfoKHR *>( this );
29378     }
29379 
29380 #if 14 <= VULKAN_HPP_CPP_VERSION
29381     auto
29382 #else
29383     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
29384                const void * const &,
29385                VULKAN_HPP_NAMESPACE::Fence const &,
29386                VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits const &>
29387 #endif
reflectVULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR29388       reflect() const VULKAN_HPP_NOEXCEPT
29389     {
29390       return std::tie( sType, pNext, fence, handleType );
29391     }
29392 
29393 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
29394     auto operator<=>( FenceGetFdInfoKHR const & ) const = default;
29395 #else
operator ==VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR29396     bool operator==( FenceGetFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
29397     {
29398       return this->reflect() == rhs.reflect();
29399     }
29400 
operator !=VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR29401     bool operator!=( FenceGetFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
29402     {
29403       return this->reflect() != rhs.reflect();
29404     }
29405 #endif
29406 
29407   public:
29408     VULKAN_HPP_NAMESPACE::StructureType                   sType = StructureType::eFenceGetFdInfoKHR;
29409     const void *                                          pNext = {};
29410     VULKAN_HPP_NAMESPACE::Fence                           fence = {};
29411     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType =
29412       VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd;
29413   };
29414   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR ) == sizeof( VkFenceGetFdInfoKHR ),
29415                             "struct and wrapper have different size!" );
29416   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR>::value,
29417                             "struct wrapper is not a standard layout!" );
29418   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR>::value,
29419                             "FenceGetFdInfoKHR is not nothrow_move_constructible!" );
29420 
29421   template <>
29422   struct CppType<StructureType, StructureType::eFenceGetFdInfoKHR>
29423   {
29424     using Type = FenceGetFdInfoKHR;
29425   };
29426 
29427 #if defined( VK_USE_PLATFORM_WIN32_KHR )
29428   struct FenceGetWin32HandleInfoKHR
29429   {
29430     using NativeType = VkFenceGetWin32HandleInfoKHR;
29431 
29432     static const bool                                  allowDuplicate = false;
29433     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eFenceGetWin32HandleInfoKHR;
29434 
29435 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FenceGetWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR29436     VULKAN_HPP_CONSTEXPR FenceGetWin32HandleInfoKHR(
29437       VULKAN_HPP_NAMESPACE::Fence                           fence_ = {},
29438       VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ =
29439         VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd ) VULKAN_HPP_NOEXCEPT
29440       : fence( fence_ )
29441       , handleType( handleType_ )
29442     {}
29443 
29444     VULKAN_HPP_CONSTEXPR
29445       FenceGetWin32HandleInfoKHR( FenceGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29446 
FenceGetWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR29447     FenceGetWin32HandleInfoKHR( VkFenceGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
29448       : FenceGetWin32HandleInfoKHR( *reinterpret_cast<FenceGetWin32HandleInfoKHR const *>( &rhs ) )
29449     {}
29450 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
29451 
29452     FenceGetWin32HandleInfoKHR & operator=( FenceGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29453 
operator =VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR29454     FenceGetWin32HandleInfoKHR & operator=( VkFenceGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
29455     {
29456       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR const *>( &rhs );
29457       return *this;
29458     }
29459 
29460 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR29461     VULKAN_HPP_CONSTEXPR_14 FenceGetWin32HandleInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
29462     {
29463       pNext = pNext_;
29464       return *this;
29465     }
29466 
29467     VULKAN_HPP_CONSTEXPR_14 FenceGetWin32HandleInfoKHR &
setFenceVULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR29468                             setFence( VULKAN_HPP_NAMESPACE::Fence fence_ ) VULKAN_HPP_NOEXCEPT
29469     {
29470       fence = fence_;
29471       return *this;
29472     }
29473 
29474     VULKAN_HPP_CONSTEXPR_14 FenceGetWin32HandleInfoKHR &
setHandleTypeVULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR29475       setHandleType( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
29476     {
29477       handleType = handleType_;
29478       return *this;
29479     }
29480 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
29481 
operator VkFenceGetWin32HandleInfoKHR const&VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR29482     explicit operator VkFenceGetWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT
29483     {
29484       return *reinterpret_cast<const VkFenceGetWin32HandleInfoKHR *>( this );
29485     }
29486 
operator VkFenceGetWin32HandleInfoKHR&VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR29487     explicit operator VkFenceGetWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT
29488     {
29489       return *reinterpret_cast<VkFenceGetWin32HandleInfoKHR *>( this );
29490     }
29491 
29492 #  if 14 <= VULKAN_HPP_CPP_VERSION
29493     auto
29494 #  else
29495     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
29496                const void * const &,
29497                VULKAN_HPP_NAMESPACE::Fence const &,
29498                VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits const &>
29499 #  endif
reflectVULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR29500       reflect() const VULKAN_HPP_NOEXCEPT
29501     {
29502       return std::tie( sType, pNext, fence, handleType );
29503     }
29504 
29505 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
29506     auto operator<=>( FenceGetWin32HandleInfoKHR const & ) const = default;
29507 #  else
operator ==VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR29508     bool operator==( FenceGetWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
29509     {
29510       return this->reflect() == rhs.reflect();
29511     }
29512 
operator !=VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR29513     bool operator!=( FenceGetWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
29514     {
29515       return this->reflect() != rhs.reflect();
29516     }
29517 #  endif
29518 
29519   public:
29520     VULKAN_HPP_NAMESPACE::StructureType                   sType = StructureType::eFenceGetWin32HandleInfoKHR;
29521     const void *                                          pNext = {};
29522     VULKAN_HPP_NAMESPACE::Fence                           fence = {};
29523     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType =
29524       VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd;
29525   };
29526   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR ) ==
29527                               sizeof( VkFenceGetWin32HandleInfoKHR ),
29528                             "struct and wrapper have different size!" );
29529   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR>::value,
29530                             "struct wrapper is not a standard layout!" );
29531   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR>::value,
29532                             "FenceGetWin32HandleInfoKHR is not nothrow_move_constructible!" );
29533 
29534   template <>
29535   struct CppType<StructureType, StructureType::eFenceGetWin32HandleInfoKHR>
29536   {
29537     using Type = FenceGetWin32HandleInfoKHR;
29538   };
29539 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
29540 
29541   struct FilterCubicImageViewImageFormatPropertiesEXT
29542   {
29543     using NativeType = VkFilterCubicImageViewImageFormatPropertiesEXT;
29544 
29545     static const bool                                  allowDuplicate = false;
29546     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
29547       StructureType::eFilterCubicImageViewImageFormatPropertiesEXT;
29548 
29549 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FilterCubicImageViewImageFormatPropertiesEXTVULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT29550     VULKAN_HPP_CONSTEXPR FilterCubicImageViewImageFormatPropertiesEXT(
29551       VULKAN_HPP_NAMESPACE::Bool32 filterCubic_       = {},
29552       VULKAN_HPP_NAMESPACE::Bool32 filterCubicMinmax_ = {} ) VULKAN_HPP_NOEXCEPT
29553       : filterCubic( filterCubic_ )
29554       , filterCubicMinmax( filterCubicMinmax_ )
29555     {}
29556 
29557     VULKAN_HPP_CONSTEXPR FilterCubicImageViewImageFormatPropertiesEXT(
29558       FilterCubicImageViewImageFormatPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29559 
FilterCubicImageViewImageFormatPropertiesEXTVULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT29560     FilterCubicImageViewImageFormatPropertiesEXT( VkFilterCubicImageViewImageFormatPropertiesEXT const & rhs )
29561       VULKAN_HPP_NOEXCEPT
29562       : FilterCubicImageViewImageFormatPropertiesEXT(
29563           *reinterpret_cast<FilterCubicImageViewImageFormatPropertiesEXT const *>( &rhs ) )
29564     {}
29565 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
29566 
29567     FilterCubicImageViewImageFormatPropertiesEXT &
29568       operator=( FilterCubicImageViewImageFormatPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29569 
29570     FilterCubicImageViewImageFormatPropertiesEXT &
operator =VULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT29571       operator=( VkFilterCubicImageViewImageFormatPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
29572     {
29573       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT const *>( &rhs );
29574       return *this;
29575     }
29576 
operator VkFilterCubicImageViewImageFormatPropertiesEXT const&VULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT29577     explicit operator VkFilterCubicImageViewImageFormatPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
29578     {
29579       return *reinterpret_cast<const VkFilterCubicImageViewImageFormatPropertiesEXT *>( this );
29580     }
29581 
operator VkFilterCubicImageViewImageFormatPropertiesEXT&VULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT29582     explicit operator VkFilterCubicImageViewImageFormatPropertiesEXT &() VULKAN_HPP_NOEXCEPT
29583     {
29584       return *reinterpret_cast<VkFilterCubicImageViewImageFormatPropertiesEXT *>( this );
29585     }
29586 
29587 #if 14 <= VULKAN_HPP_CPP_VERSION
29588     auto
29589 #else
29590     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
29591                void * const &,
29592                VULKAN_HPP_NAMESPACE::Bool32 const &,
29593                VULKAN_HPP_NAMESPACE::Bool32 const &>
29594 #endif
reflectVULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT29595       reflect() const VULKAN_HPP_NOEXCEPT
29596     {
29597       return std::tie( sType, pNext, filterCubic, filterCubicMinmax );
29598     }
29599 
29600 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
29601     auto operator<=>( FilterCubicImageViewImageFormatPropertiesEXT const & ) const = default;
29602 #else
operator ==VULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT29603     bool operator==( FilterCubicImageViewImageFormatPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
29604     {
29605       return this->reflect() == rhs.reflect();
29606     }
29607 
operator !=VULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT29608     bool operator!=( FilterCubicImageViewImageFormatPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
29609     {
29610       return this->reflect() != rhs.reflect();
29611     }
29612 #endif
29613 
29614   public:
29615     VULKAN_HPP_NAMESPACE::StructureType sType       = StructureType::eFilterCubicImageViewImageFormatPropertiesEXT;
29616     void *                              pNext       = {};
29617     VULKAN_HPP_NAMESPACE::Bool32        filterCubic = {};
29618     VULKAN_HPP_NAMESPACE::Bool32        filterCubicMinmax = {};
29619   };
29620   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT ) ==
29621                               sizeof( VkFilterCubicImageViewImageFormatPropertiesEXT ),
29622                             "struct and wrapper have different size!" );
29623   VULKAN_HPP_STATIC_ASSERT(
29624     std::is_standard_layout<VULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT>::value,
29625     "struct wrapper is not a standard layout!" );
29626   VULKAN_HPP_STATIC_ASSERT(
29627     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT>::value,
29628     "FilterCubicImageViewImageFormatPropertiesEXT is not nothrow_move_constructible!" );
29629 
29630   template <>
29631   struct CppType<StructureType, StructureType::eFilterCubicImageViewImageFormatPropertiesEXT>
29632   {
29633     using Type = FilterCubicImageViewImageFormatPropertiesEXT;
29634   };
29635 
29636   struct FormatProperties
29637   {
29638     using NativeType = VkFormatProperties;
29639 
29640 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
29641     VULKAN_HPP_CONSTEXPR
FormatPropertiesVULKAN_HPP_NAMESPACE::FormatProperties29642       FormatProperties( VULKAN_HPP_NAMESPACE::FormatFeatureFlags linearTilingFeatures_  = {},
29643                         VULKAN_HPP_NAMESPACE::FormatFeatureFlags optimalTilingFeatures_ = {},
29644                         VULKAN_HPP_NAMESPACE::FormatFeatureFlags bufferFeatures_        = {} ) VULKAN_HPP_NOEXCEPT
29645       : linearTilingFeatures( linearTilingFeatures_ )
29646       , optimalTilingFeatures( optimalTilingFeatures_ )
29647       , bufferFeatures( bufferFeatures_ )
29648     {}
29649 
29650     VULKAN_HPP_CONSTEXPR FormatProperties( FormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29651 
FormatPropertiesVULKAN_HPP_NAMESPACE::FormatProperties29652     FormatProperties( VkFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
29653       : FormatProperties( *reinterpret_cast<FormatProperties const *>( &rhs ) )
29654     {}
29655 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
29656 
29657     FormatProperties & operator=( FormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29658 
operator =VULKAN_HPP_NAMESPACE::FormatProperties29659     FormatProperties & operator=( VkFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
29660     {
29661       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FormatProperties const *>( &rhs );
29662       return *this;
29663     }
29664 
operator VkFormatProperties const&VULKAN_HPP_NAMESPACE::FormatProperties29665     explicit operator VkFormatProperties const &() const VULKAN_HPP_NOEXCEPT
29666     {
29667       return *reinterpret_cast<const VkFormatProperties *>( this );
29668     }
29669 
operator VkFormatProperties&VULKAN_HPP_NAMESPACE::FormatProperties29670     explicit operator VkFormatProperties &() VULKAN_HPP_NOEXCEPT
29671     {
29672       return *reinterpret_cast<VkFormatProperties *>( this );
29673     }
29674 
29675 #if 14 <= VULKAN_HPP_CPP_VERSION
29676     auto
29677 #else
29678     std::tuple<VULKAN_HPP_NAMESPACE::FormatFeatureFlags const &,
29679                VULKAN_HPP_NAMESPACE::FormatFeatureFlags const &,
29680                VULKAN_HPP_NAMESPACE::FormatFeatureFlags const &>
29681 #endif
reflectVULKAN_HPP_NAMESPACE::FormatProperties29682       reflect() const VULKAN_HPP_NOEXCEPT
29683     {
29684       return std::tie( linearTilingFeatures, optimalTilingFeatures, bufferFeatures );
29685     }
29686 
29687 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
29688     auto operator<=>( FormatProperties const & ) const = default;
29689 #else
operator ==VULKAN_HPP_NAMESPACE::FormatProperties29690     bool operator==( FormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
29691     {
29692       return this->reflect() == rhs.reflect();
29693     }
29694 
operator !=VULKAN_HPP_NAMESPACE::FormatProperties29695     bool operator!=( FormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
29696     {
29697       return this->reflect() != rhs.reflect();
29698     }
29699 #endif
29700 
29701   public:
29702     VULKAN_HPP_NAMESPACE::FormatFeatureFlags linearTilingFeatures  = {};
29703     VULKAN_HPP_NAMESPACE::FormatFeatureFlags optimalTilingFeatures = {};
29704     VULKAN_HPP_NAMESPACE::FormatFeatureFlags bufferFeatures        = {};
29705   };
29706   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FormatProperties ) == sizeof( VkFormatProperties ),
29707                             "struct and wrapper have different size!" );
29708   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::FormatProperties>::value,
29709                             "struct wrapper is not a standard layout!" );
29710   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::FormatProperties>::value,
29711                             "FormatProperties is not nothrow_move_constructible!" );
29712 
29713   struct FormatProperties2
29714   {
29715     using NativeType = VkFormatProperties2;
29716 
29717     static const bool                                  allowDuplicate = false;
29718     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eFormatProperties2;
29719 
29720 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
29721     VULKAN_HPP_CONSTEXPR
FormatProperties2VULKAN_HPP_NAMESPACE::FormatProperties229722       FormatProperties2( VULKAN_HPP_NAMESPACE::FormatProperties formatProperties_ = {} ) VULKAN_HPP_NOEXCEPT
29723       : formatProperties( formatProperties_ )
29724     {}
29725 
29726     VULKAN_HPP_CONSTEXPR FormatProperties2( FormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29727 
FormatProperties2VULKAN_HPP_NAMESPACE::FormatProperties229728     FormatProperties2( VkFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
29729       : FormatProperties2( *reinterpret_cast<FormatProperties2 const *>( &rhs ) )
29730     {}
29731 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
29732 
29733     FormatProperties2 & operator=( FormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29734 
operator =VULKAN_HPP_NAMESPACE::FormatProperties229735     FormatProperties2 & operator=( VkFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
29736     {
29737       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FormatProperties2 const *>( &rhs );
29738       return *this;
29739     }
29740 
operator VkFormatProperties2 const&VULKAN_HPP_NAMESPACE::FormatProperties229741     explicit operator VkFormatProperties2 const &() const VULKAN_HPP_NOEXCEPT
29742     {
29743       return *reinterpret_cast<const VkFormatProperties2 *>( this );
29744     }
29745 
operator VkFormatProperties2&VULKAN_HPP_NAMESPACE::FormatProperties229746     explicit operator VkFormatProperties2 &() VULKAN_HPP_NOEXCEPT
29747     {
29748       return *reinterpret_cast<VkFormatProperties2 *>( this );
29749     }
29750 
29751 #if 14 <= VULKAN_HPP_CPP_VERSION
29752     auto
29753 #else
29754     std::
29755       tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::FormatProperties const &>
29756 #endif
reflectVULKAN_HPP_NAMESPACE::FormatProperties229757       reflect() const VULKAN_HPP_NOEXCEPT
29758     {
29759       return std::tie( sType, pNext, formatProperties );
29760     }
29761 
29762 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
29763     auto operator<=>( FormatProperties2 const & ) const = default;
29764 #else
operator ==VULKAN_HPP_NAMESPACE::FormatProperties229765     bool operator==( FormatProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
29766     {
29767       return this->reflect() == rhs.reflect();
29768     }
29769 
operator !=VULKAN_HPP_NAMESPACE::FormatProperties229770     bool operator!=( FormatProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
29771     {
29772       return this->reflect() != rhs.reflect();
29773     }
29774 #endif
29775 
29776   public:
29777     VULKAN_HPP_NAMESPACE::StructureType    sType            = StructureType::eFormatProperties2;
29778     void *                                 pNext            = {};
29779     VULKAN_HPP_NAMESPACE::FormatProperties formatProperties = {};
29780   };
29781   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FormatProperties2 ) == sizeof( VkFormatProperties2 ),
29782                             "struct and wrapper have different size!" );
29783   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::FormatProperties2>::value,
29784                             "struct wrapper is not a standard layout!" );
29785   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::FormatProperties2>::value,
29786                             "FormatProperties2 is not nothrow_move_constructible!" );
29787 
29788   template <>
29789   struct CppType<StructureType, StructureType::eFormatProperties2>
29790   {
29791     using Type = FormatProperties2;
29792   };
29793   using FormatProperties2KHR = FormatProperties2;
29794 
29795   struct FormatProperties3KHR
29796   {
29797     using NativeType = VkFormatProperties3KHR;
29798 
29799     static const bool                                  allowDuplicate = false;
29800     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eFormatProperties3KHR;
29801 
29802 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
29803     VULKAN_HPP_CONSTEXPR
FormatProperties3KHRVULKAN_HPP_NAMESPACE::FormatProperties3KHR29804       FormatProperties3KHR( VULKAN_HPP_NAMESPACE::FormatFeatureFlags2KHR linearTilingFeatures_  = {},
29805                             VULKAN_HPP_NAMESPACE::FormatFeatureFlags2KHR optimalTilingFeatures_ = {},
29806                             VULKAN_HPP_NAMESPACE::FormatFeatureFlags2KHR bufferFeatures_ = {} ) VULKAN_HPP_NOEXCEPT
29807       : linearTilingFeatures( linearTilingFeatures_ )
29808       , optimalTilingFeatures( optimalTilingFeatures_ )
29809       , bufferFeatures( bufferFeatures_ )
29810     {}
29811 
29812     VULKAN_HPP_CONSTEXPR FormatProperties3KHR( FormatProperties3KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29813 
FormatProperties3KHRVULKAN_HPP_NAMESPACE::FormatProperties3KHR29814     FormatProperties3KHR( VkFormatProperties3KHR const & rhs ) VULKAN_HPP_NOEXCEPT
29815       : FormatProperties3KHR( *reinterpret_cast<FormatProperties3KHR const *>( &rhs ) )
29816     {}
29817 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
29818 
29819     FormatProperties3KHR & operator=( FormatProperties3KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29820 
operator =VULKAN_HPP_NAMESPACE::FormatProperties3KHR29821     FormatProperties3KHR & operator=( VkFormatProperties3KHR const & rhs ) VULKAN_HPP_NOEXCEPT
29822     {
29823       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FormatProperties3KHR const *>( &rhs );
29824       return *this;
29825     }
29826 
operator VkFormatProperties3KHR const&VULKAN_HPP_NAMESPACE::FormatProperties3KHR29827     explicit operator VkFormatProperties3KHR const &() const VULKAN_HPP_NOEXCEPT
29828     {
29829       return *reinterpret_cast<const VkFormatProperties3KHR *>( this );
29830     }
29831 
operator VkFormatProperties3KHR&VULKAN_HPP_NAMESPACE::FormatProperties3KHR29832     explicit operator VkFormatProperties3KHR &() VULKAN_HPP_NOEXCEPT
29833     {
29834       return *reinterpret_cast<VkFormatProperties3KHR *>( this );
29835     }
29836 
29837 #if 14 <= VULKAN_HPP_CPP_VERSION
29838     auto
29839 #else
29840     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
29841                void * const &,
29842                VULKAN_HPP_NAMESPACE::FormatFeatureFlags2KHR const &,
29843                VULKAN_HPP_NAMESPACE::FormatFeatureFlags2KHR const &,
29844                VULKAN_HPP_NAMESPACE::FormatFeatureFlags2KHR const &>
29845 #endif
reflectVULKAN_HPP_NAMESPACE::FormatProperties3KHR29846       reflect() const VULKAN_HPP_NOEXCEPT
29847     {
29848       return std::tie( sType, pNext, linearTilingFeatures, optimalTilingFeatures, bufferFeatures );
29849     }
29850 
29851 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
29852     auto operator<=>( FormatProperties3KHR const & ) const = default;
29853 #else
operator ==VULKAN_HPP_NAMESPACE::FormatProperties3KHR29854     bool operator==( FormatProperties3KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
29855     {
29856       return this->reflect() == rhs.reflect();
29857     }
29858 
operator !=VULKAN_HPP_NAMESPACE::FormatProperties3KHR29859     bool operator!=( FormatProperties3KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
29860     {
29861       return this->reflect() != rhs.reflect();
29862     }
29863 #endif
29864 
29865   public:
29866     VULKAN_HPP_NAMESPACE::StructureType          sType                 = StructureType::eFormatProperties3KHR;
29867     void *                                       pNext                 = {};
29868     VULKAN_HPP_NAMESPACE::FormatFeatureFlags2KHR linearTilingFeatures  = {};
29869     VULKAN_HPP_NAMESPACE::FormatFeatureFlags2KHR optimalTilingFeatures = {};
29870     VULKAN_HPP_NAMESPACE::FormatFeatureFlags2KHR bufferFeatures        = {};
29871   };
29872   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FormatProperties3KHR ) == sizeof( VkFormatProperties3KHR ),
29873                             "struct and wrapper have different size!" );
29874   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::FormatProperties3KHR>::value,
29875                             "struct wrapper is not a standard layout!" );
29876   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::FormatProperties3KHR>::value,
29877                             "FormatProperties3KHR is not nothrow_move_constructible!" );
29878 
29879   template <>
29880   struct CppType<StructureType, StructureType::eFormatProperties3KHR>
29881   {
29882     using Type = FormatProperties3KHR;
29883   };
29884 
29885   struct FragmentShadingRateAttachmentInfoKHR
29886   {
29887     using NativeType = VkFragmentShadingRateAttachmentInfoKHR;
29888 
29889     static const bool                                  allowDuplicate = false;
29890     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
29891       StructureType::eFragmentShadingRateAttachmentInfoKHR;
29892 
29893 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FragmentShadingRateAttachmentInfoKHRVULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR29894     VULKAN_HPP_CONSTEXPR FragmentShadingRateAttachmentInfoKHR(
29895       const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pFragmentShadingRateAttachment_ = {},
29896       VULKAN_HPP_NAMESPACE::Extent2D                     shadingRateAttachmentTexelSize_ = {} ) VULKAN_HPP_NOEXCEPT
29897       : pFragmentShadingRateAttachment( pFragmentShadingRateAttachment_ )
29898       , shadingRateAttachmentTexelSize( shadingRateAttachmentTexelSize_ )
29899     {}
29900 
29901     VULKAN_HPP_CONSTEXPR FragmentShadingRateAttachmentInfoKHR( FragmentShadingRateAttachmentInfoKHR const & rhs )
29902       VULKAN_HPP_NOEXCEPT = default;
29903 
FragmentShadingRateAttachmentInfoKHRVULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR29904     FragmentShadingRateAttachmentInfoKHR( VkFragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
29905       : FragmentShadingRateAttachmentInfoKHR( *reinterpret_cast<FragmentShadingRateAttachmentInfoKHR const *>( &rhs ) )
29906     {}
29907 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
29908 
29909     FragmentShadingRateAttachmentInfoKHR &
29910       operator=( FragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29911 
29912     FragmentShadingRateAttachmentInfoKHR &
operator =VULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR29913       operator=( VkFragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
29914     {
29915       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR const *>( &rhs );
29916       return *this;
29917     }
29918 
29919 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR29920     VULKAN_HPP_CONSTEXPR_14 FragmentShadingRateAttachmentInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
29921     {
29922       pNext = pNext_;
29923       return *this;
29924     }
29925 
setPFragmentShadingRateAttachmentVULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR29926     VULKAN_HPP_CONSTEXPR_14 FragmentShadingRateAttachmentInfoKHR & setPFragmentShadingRateAttachment(
29927       const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pFragmentShadingRateAttachment_ ) VULKAN_HPP_NOEXCEPT
29928     {
29929       pFragmentShadingRateAttachment = pFragmentShadingRateAttachment_;
29930       return *this;
29931     }
29932 
setShadingRateAttachmentTexelSizeVULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR29933     VULKAN_HPP_CONSTEXPR_14 FragmentShadingRateAttachmentInfoKHR & setShadingRateAttachmentTexelSize(
29934       VULKAN_HPP_NAMESPACE::Extent2D const & shadingRateAttachmentTexelSize_ ) VULKAN_HPP_NOEXCEPT
29935     {
29936       shadingRateAttachmentTexelSize = shadingRateAttachmentTexelSize_;
29937       return *this;
29938     }
29939 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
29940 
operator VkFragmentShadingRateAttachmentInfoKHR const&VULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR29941     explicit operator VkFragmentShadingRateAttachmentInfoKHR const &() const VULKAN_HPP_NOEXCEPT
29942     {
29943       return *reinterpret_cast<const VkFragmentShadingRateAttachmentInfoKHR *>( this );
29944     }
29945 
operator VkFragmentShadingRateAttachmentInfoKHR&VULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR29946     explicit operator VkFragmentShadingRateAttachmentInfoKHR &() VULKAN_HPP_NOEXCEPT
29947     {
29948       return *reinterpret_cast<VkFragmentShadingRateAttachmentInfoKHR *>( this );
29949     }
29950 
29951 #if 14 <= VULKAN_HPP_CPP_VERSION
29952     auto
29953 #else
29954     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
29955                const void * const &,
29956                const VULKAN_HPP_NAMESPACE::AttachmentReference2 * const &,
29957                VULKAN_HPP_NAMESPACE::Extent2D const &>
29958 #endif
reflectVULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR29959       reflect() const VULKAN_HPP_NOEXCEPT
29960     {
29961       return std::tie( sType, pNext, pFragmentShadingRateAttachment, shadingRateAttachmentTexelSize );
29962     }
29963 
29964 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
29965     auto operator<=>( FragmentShadingRateAttachmentInfoKHR const & ) const = default;
29966 #else
operator ==VULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR29967     bool operator==( FragmentShadingRateAttachmentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
29968     {
29969       return this->reflect() == rhs.reflect();
29970     }
29971 
operator !=VULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR29972     bool operator!=( FragmentShadingRateAttachmentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
29973     {
29974       return this->reflect() != rhs.reflect();
29975     }
29976 #endif
29977 
29978   public:
29979     VULKAN_HPP_NAMESPACE::StructureType                sType = StructureType::eFragmentShadingRateAttachmentInfoKHR;
29980     const void *                                       pNext = {};
29981     const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pFragmentShadingRateAttachment = {};
29982     VULKAN_HPP_NAMESPACE::Extent2D                     shadingRateAttachmentTexelSize = {};
29983   };
29984   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR ) ==
29985                               sizeof( VkFragmentShadingRateAttachmentInfoKHR ),
29986                             "struct and wrapper have different size!" );
29987   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR>::value,
29988                             "struct wrapper is not a standard layout!" );
29989   VULKAN_HPP_STATIC_ASSERT(
29990     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR>::value,
29991     "FragmentShadingRateAttachmentInfoKHR is not nothrow_move_constructible!" );
29992 
29993   template <>
29994   struct CppType<StructureType, StructureType::eFragmentShadingRateAttachmentInfoKHR>
29995   {
29996     using Type = FragmentShadingRateAttachmentInfoKHR;
29997   };
29998 
29999   struct FramebufferAttachmentImageInfo
30000   {
30001     using NativeType = VkFramebufferAttachmentImageInfo;
30002 
30003     static const bool                                  allowDuplicate = false;
30004     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eFramebufferAttachmentImageInfo;
30005 
30006 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
30007     VULKAN_HPP_CONSTEXPR
FramebufferAttachmentImageInfoVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo30008       FramebufferAttachmentImageInfo( VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_           = {},
30009                                       VULKAN_HPP_NAMESPACE::ImageUsageFlags  usage_           = {},
30010                                       uint32_t                               width_           = {},
30011                                       uint32_t                               height_          = {},
30012                                       uint32_t                               layerCount_      = {},
30013                                       uint32_t                               viewFormatCount_ = {},
30014                                       const VULKAN_HPP_NAMESPACE::Format *   pViewFormats_    = {} ) VULKAN_HPP_NOEXCEPT
30015       : flags( flags_ )
30016       , usage( usage_ )
30017       , width( width_ )
30018       , height( height_ )
30019       , layerCount( layerCount_ )
30020       , viewFormatCount( viewFormatCount_ )
30021       , pViewFormats( pViewFormats_ )
30022     {}
30023 
30024     VULKAN_HPP_CONSTEXPR
30025       FramebufferAttachmentImageInfo( FramebufferAttachmentImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30026 
FramebufferAttachmentImageInfoVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo30027     FramebufferAttachmentImageInfo( VkFramebufferAttachmentImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT
30028       : FramebufferAttachmentImageInfo( *reinterpret_cast<FramebufferAttachmentImageInfo const *>( &rhs ) )
30029     {}
30030 
30031 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
FramebufferAttachmentImageInfoVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo30032     FramebufferAttachmentImageInfo(
30033       VULKAN_HPP_NAMESPACE::ImageCreateFlags                                                    flags_,
30034       VULKAN_HPP_NAMESPACE::ImageUsageFlags                                                     usage_,
30035       uint32_t                                                                                  width_,
30036       uint32_t                                                                                  height_,
30037       uint32_t                                                                                  layerCount_,
30038       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const & viewFormats_ )
30039       : flags( flags_ )
30040       , usage( usage_ )
30041       , width( width_ )
30042       , height( height_ )
30043       , layerCount( layerCount_ )
30044       , viewFormatCount( static_cast<uint32_t>( viewFormats_.size() ) )
30045       , pViewFormats( viewFormats_.data() )
30046     {}
30047 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30048 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
30049 
30050     FramebufferAttachmentImageInfo &
30051       operator=( FramebufferAttachmentImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30052 
operator =VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo30053     FramebufferAttachmentImageInfo & operator=( VkFramebufferAttachmentImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT
30054     {
30055       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo const *>( &rhs );
30056       return *this;
30057     }
30058 
30059 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo30060     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
30061     {
30062       pNext = pNext_;
30063       return *this;
30064     }
30065 
30066     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo &
setFlagsVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo30067                             setFlags( VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
30068     {
30069       flags = flags_;
30070       return *this;
30071     }
30072 
30073     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo &
setUsageVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo30074                             setUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT
30075     {
30076       usage = usage_;
30077       return *this;
30078     }
30079 
setWidthVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo30080     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setWidth( uint32_t width_ ) VULKAN_HPP_NOEXCEPT
30081     {
30082       width = width_;
30083       return *this;
30084     }
30085 
setHeightVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo30086     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setHeight( uint32_t height_ ) VULKAN_HPP_NOEXCEPT
30087     {
30088       height = height_;
30089       return *this;
30090     }
30091 
setLayerCountVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo30092     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setLayerCount( uint32_t layerCount_ ) VULKAN_HPP_NOEXCEPT
30093     {
30094       layerCount = layerCount_;
30095       return *this;
30096     }
30097 
30098     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo &
setViewFormatCountVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo30099                             setViewFormatCount( uint32_t viewFormatCount_ ) VULKAN_HPP_NOEXCEPT
30100     {
30101       viewFormatCount = viewFormatCount_;
30102       return *this;
30103     }
30104 
30105     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo &
setPViewFormatsVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo30106                             setPViewFormats( const VULKAN_HPP_NAMESPACE::Format * pViewFormats_ ) VULKAN_HPP_NOEXCEPT
30107     {
30108       pViewFormats = pViewFormats_;
30109       return *this;
30110     }
30111 
30112 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setViewFormatsVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo30113     FramebufferAttachmentImageInfo & setViewFormats(
30114       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const & viewFormats_ )
30115       VULKAN_HPP_NOEXCEPT
30116     {
30117       viewFormatCount = static_cast<uint32_t>( viewFormats_.size() );
30118       pViewFormats    = viewFormats_.data();
30119       return *this;
30120     }
30121 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30122 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
30123 
operator VkFramebufferAttachmentImageInfo const&VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo30124     explicit operator VkFramebufferAttachmentImageInfo const &() const VULKAN_HPP_NOEXCEPT
30125     {
30126       return *reinterpret_cast<const VkFramebufferAttachmentImageInfo *>( this );
30127     }
30128 
operator VkFramebufferAttachmentImageInfo&VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo30129     explicit operator VkFramebufferAttachmentImageInfo &() VULKAN_HPP_NOEXCEPT
30130     {
30131       return *reinterpret_cast<VkFramebufferAttachmentImageInfo *>( this );
30132     }
30133 
30134 #if 14 <= VULKAN_HPP_CPP_VERSION
30135     auto
30136 #else
30137     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
30138                const void * const &,
30139                VULKAN_HPP_NAMESPACE::ImageCreateFlags const &,
30140                VULKAN_HPP_NAMESPACE::ImageUsageFlags const &,
30141                uint32_t const &,
30142                uint32_t const &,
30143                uint32_t const &,
30144                uint32_t const &,
30145                const VULKAN_HPP_NAMESPACE::Format * const &>
30146 #endif
reflectVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo30147       reflect() const VULKAN_HPP_NOEXCEPT
30148     {
30149       return std::tie( sType, pNext, flags, usage, width, height, layerCount, viewFormatCount, pViewFormats );
30150     }
30151 
30152 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
30153     auto operator<=>( FramebufferAttachmentImageInfo const & ) const = default;
30154 #else
operator ==VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo30155     bool operator==( FramebufferAttachmentImageInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
30156     {
30157       return this->reflect() == rhs.reflect();
30158     }
30159 
operator !=VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo30160     bool operator!=( FramebufferAttachmentImageInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
30161     {
30162       return this->reflect() != rhs.reflect();
30163     }
30164 #endif
30165 
30166   public:
30167     VULKAN_HPP_NAMESPACE::StructureType    sType           = StructureType::eFramebufferAttachmentImageInfo;
30168     const void *                           pNext           = {};
30169     VULKAN_HPP_NAMESPACE::ImageCreateFlags flags           = {};
30170     VULKAN_HPP_NAMESPACE::ImageUsageFlags  usage           = {};
30171     uint32_t                               width           = {};
30172     uint32_t                               height          = {};
30173     uint32_t                               layerCount      = {};
30174     uint32_t                               viewFormatCount = {};
30175     const VULKAN_HPP_NAMESPACE::Format *   pViewFormats    = {};
30176   };
30177   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo ) ==
30178                               sizeof( VkFramebufferAttachmentImageInfo ),
30179                             "struct and wrapper have different size!" );
30180   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo>::value,
30181                             "struct wrapper is not a standard layout!" );
30182   VULKAN_HPP_STATIC_ASSERT(
30183     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo>::value,
30184     "FramebufferAttachmentImageInfo is not nothrow_move_constructible!" );
30185 
30186   template <>
30187   struct CppType<StructureType, StructureType::eFramebufferAttachmentImageInfo>
30188   {
30189     using Type = FramebufferAttachmentImageInfo;
30190   };
30191   using FramebufferAttachmentImageInfoKHR = FramebufferAttachmentImageInfo;
30192 
30193   struct FramebufferAttachmentsCreateInfo
30194   {
30195     using NativeType = VkFramebufferAttachmentsCreateInfo;
30196 
30197     static const bool                                  allowDuplicate = false;
30198     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFramebufferAttachmentsCreateInfo;
30199 
30200 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FramebufferAttachmentsCreateInfoVULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo30201     VULKAN_HPP_CONSTEXPR FramebufferAttachmentsCreateInfo(
30202       uint32_t                                                     attachmentImageInfoCount_ = {},
30203       const VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo * pAttachmentImageInfos_    = {} ) VULKAN_HPP_NOEXCEPT
30204       : attachmentImageInfoCount( attachmentImageInfoCount_ )
30205       , pAttachmentImageInfos( pAttachmentImageInfos_ )
30206     {}
30207 
30208     VULKAN_HPP_CONSTEXPR
30209       FramebufferAttachmentsCreateInfo( FramebufferAttachmentsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30210 
FramebufferAttachmentsCreateInfoVULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo30211     FramebufferAttachmentsCreateInfo( VkFramebufferAttachmentsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
30212       : FramebufferAttachmentsCreateInfo( *reinterpret_cast<FramebufferAttachmentsCreateInfo const *>( &rhs ) )
30213     {}
30214 
30215 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
FramebufferAttachmentsCreateInfoVULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo30216     FramebufferAttachmentsCreateInfo(
30217       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo> const &
30218         attachmentImageInfos_ )
30219       : attachmentImageInfoCount( static_cast<uint32_t>( attachmentImageInfos_.size() ) )
30220       , pAttachmentImageInfos( attachmentImageInfos_.data() )
30221     {}
30222 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30223 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
30224 
30225     FramebufferAttachmentsCreateInfo &
30226       operator=( FramebufferAttachmentsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30227 
operator =VULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo30228     FramebufferAttachmentsCreateInfo & operator=( VkFramebufferAttachmentsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
30229     {
30230       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo const *>( &rhs );
30231       return *this;
30232     }
30233 
30234 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo30235     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentsCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
30236     {
30237       pNext = pNext_;
30238       return *this;
30239     }
30240 
30241     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentsCreateInfo &
setAttachmentImageInfoCountVULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo30242                             setAttachmentImageInfoCount( uint32_t attachmentImageInfoCount_ ) VULKAN_HPP_NOEXCEPT
30243     {
30244       attachmentImageInfoCount = attachmentImageInfoCount_;
30245       return *this;
30246     }
30247 
setPAttachmentImageInfosVULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo30248     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentsCreateInfo & setPAttachmentImageInfos(
30249       const VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo * pAttachmentImageInfos_ ) VULKAN_HPP_NOEXCEPT
30250     {
30251       pAttachmentImageInfos = pAttachmentImageInfos_;
30252       return *this;
30253     }
30254 
30255 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAttachmentImageInfosVULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo30256     FramebufferAttachmentsCreateInfo & setAttachmentImageInfos(
30257       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo> const &
30258         attachmentImageInfos_ ) VULKAN_HPP_NOEXCEPT
30259     {
30260       attachmentImageInfoCount = static_cast<uint32_t>( attachmentImageInfos_.size() );
30261       pAttachmentImageInfos    = attachmentImageInfos_.data();
30262       return *this;
30263     }
30264 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30265 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
30266 
operator VkFramebufferAttachmentsCreateInfo const&VULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo30267     explicit operator VkFramebufferAttachmentsCreateInfo const &() const VULKAN_HPP_NOEXCEPT
30268     {
30269       return *reinterpret_cast<const VkFramebufferAttachmentsCreateInfo *>( this );
30270     }
30271 
operator VkFramebufferAttachmentsCreateInfo&VULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo30272     explicit operator VkFramebufferAttachmentsCreateInfo &() VULKAN_HPP_NOEXCEPT
30273     {
30274       return *reinterpret_cast<VkFramebufferAttachmentsCreateInfo *>( this );
30275     }
30276 
30277 #if 14 <= VULKAN_HPP_CPP_VERSION
30278     auto
30279 #else
30280     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
30281                const void * const &,
30282                uint32_t const &,
30283                const VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo * const &>
30284 #endif
reflectVULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo30285       reflect() const VULKAN_HPP_NOEXCEPT
30286     {
30287       return std::tie( sType, pNext, attachmentImageInfoCount, pAttachmentImageInfos );
30288     }
30289 
30290 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
30291     auto operator<=>( FramebufferAttachmentsCreateInfo const & ) const = default;
30292 #else
operator ==VULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo30293     bool operator==( FramebufferAttachmentsCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
30294     {
30295       return this->reflect() == rhs.reflect();
30296     }
30297 
operator !=VULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo30298     bool operator!=( FramebufferAttachmentsCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
30299     {
30300       return this->reflect() != rhs.reflect();
30301     }
30302 #endif
30303 
30304   public:
30305     VULKAN_HPP_NAMESPACE::StructureType sType                    = StructureType::eFramebufferAttachmentsCreateInfo;
30306     const void *                        pNext                    = {};
30307     uint32_t                            attachmentImageInfoCount = {};
30308     const VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo * pAttachmentImageInfos = {};
30309   };
30310   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo ) ==
30311                               sizeof( VkFramebufferAttachmentsCreateInfo ),
30312                             "struct and wrapper have different size!" );
30313   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo>::value,
30314                             "struct wrapper is not a standard layout!" );
30315   VULKAN_HPP_STATIC_ASSERT(
30316     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo>::value,
30317     "FramebufferAttachmentsCreateInfo is not nothrow_move_constructible!" );
30318 
30319   template <>
30320   struct CppType<StructureType, StructureType::eFramebufferAttachmentsCreateInfo>
30321   {
30322     using Type = FramebufferAttachmentsCreateInfo;
30323   };
30324   using FramebufferAttachmentsCreateInfoKHR = FramebufferAttachmentsCreateInfo;
30325 
30326   struct FramebufferCreateInfo
30327   {
30328     using NativeType = VkFramebufferCreateInfo;
30329 
30330     static const bool                                  allowDuplicate = false;
30331     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eFramebufferCreateInfo;
30332 
30333 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FramebufferCreateInfoVULKAN_HPP_NAMESPACE::FramebufferCreateInfo30334     VULKAN_HPP_CONSTEXPR FramebufferCreateInfo( VULKAN_HPP_NAMESPACE::FramebufferCreateFlags flags_           = {},
30335                                                 VULKAN_HPP_NAMESPACE::RenderPass             renderPass_      = {},
30336                                                 uint32_t                                     attachmentCount_ = {},
30337                                                 const VULKAN_HPP_NAMESPACE::ImageView *      pAttachments_    = {},
30338                                                 uint32_t                                     width_           = {},
30339                                                 uint32_t                                     height_          = {},
30340                                                 uint32_t layers_ = {} ) VULKAN_HPP_NOEXCEPT
30341       : flags( flags_ )
30342       , renderPass( renderPass_ )
30343       , attachmentCount( attachmentCount_ )
30344       , pAttachments( pAttachments_ )
30345       , width( width_ )
30346       , height( height_ )
30347       , layers( layers_ )
30348     {}
30349 
30350     VULKAN_HPP_CONSTEXPR FramebufferCreateInfo( FramebufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30351 
FramebufferCreateInfoVULKAN_HPP_NAMESPACE::FramebufferCreateInfo30352     FramebufferCreateInfo( VkFramebufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
30353       : FramebufferCreateInfo( *reinterpret_cast<FramebufferCreateInfo const *>( &rhs ) )
30354     {}
30355 
30356 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
FramebufferCreateInfoVULKAN_HPP_NAMESPACE::FramebufferCreateInfo30357     FramebufferCreateInfo(
30358       VULKAN_HPP_NAMESPACE::FramebufferCreateFlags                                                 flags_,
30359       VULKAN_HPP_NAMESPACE::RenderPass                                                             renderPass_,
30360       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageView> const & attachments_,
30361       uint32_t                                                                                     width_  = {},
30362       uint32_t                                                                                     height_ = {},
30363       uint32_t                                                                                     layers_ = {} )
30364       : flags( flags_ )
30365       , renderPass( renderPass_ )
30366       , attachmentCount( static_cast<uint32_t>( attachments_.size() ) )
30367       , pAttachments( attachments_.data() )
30368       , width( width_ )
30369       , height( height_ )
30370       , layers( layers_ )
30371     {}
30372 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30373 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
30374 
30375     FramebufferCreateInfo & operator=( FramebufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30376 
operator =VULKAN_HPP_NAMESPACE::FramebufferCreateInfo30377     FramebufferCreateInfo & operator=( VkFramebufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
30378     {
30379       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FramebufferCreateInfo const *>( &rhs );
30380       return *this;
30381     }
30382 
30383 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::FramebufferCreateInfo30384     VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
30385     {
30386       pNext = pNext_;
30387       return *this;
30388     }
30389 
30390     VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::FramebufferCreateInfo30391                             setFlags( VULKAN_HPP_NAMESPACE::FramebufferCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
30392     {
30393       flags = flags_;
30394       return *this;
30395     }
30396 
30397     VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo &
setRenderPassVULKAN_HPP_NAMESPACE::FramebufferCreateInfo30398                             setRenderPass( VULKAN_HPP_NAMESPACE::RenderPass renderPass_ ) VULKAN_HPP_NOEXCEPT
30399     {
30400       renderPass = renderPass_;
30401       return *this;
30402     }
30403 
setAttachmentCountVULKAN_HPP_NAMESPACE::FramebufferCreateInfo30404     VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setAttachmentCount( uint32_t attachmentCount_ ) VULKAN_HPP_NOEXCEPT
30405     {
30406       attachmentCount = attachmentCount_;
30407       return *this;
30408     }
30409 
30410     VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo &
setPAttachmentsVULKAN_HPP_NAMESPACE::FramebufferCreateInfo30411                             setPAttachments( const VULKAN_HPP_NAMESPACE::ImageView * pAttachments_ ) VULKAN_HPP_NOEXCEPT
30412     {
30413       pAttachments = pAttachments_;
30414       return *this;
30415     }
30416 
30417 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAttachmentsVULKAN_HPP_NAMESPACE::FramebufferCreateInfo30418     FramebufferCreateInfo & setAttachments(
30419       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageView> const & attachments_ )
30420       VULKAN_HPP_NOEXCEPT
30421     {
30422       attachmentCount = static_cast<uint32_t>( attachments_.size() );
30423       pAttachments    = attachments_.data();
30424       return *this;
30425     }
30426 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30427 
setWidthVULKAN_HPP_NAMESPACE::FramebufferCreateInfo30428     VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setWidth( uint32_t width_ ) VULKAN_HPP_NOEXCEPT
30429     {
30430       width = width_;
30431       return *this;
30432     }
30433 
setHeightVULKAN_HPP_NAMESPACE::FramebufferCreateInfo30434     VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setHeight( uint32_t height_ ) VULKAN_HPP_NOEXCEPT
30435     {
30436       height = height_;
30437       return *this;
30438     }
30439 
setLayersVULKAN_HPP_NAMESPACE::FramebufferCreateInfo30440     VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setLayers( uint32_t layers_ ) VULKAN_HPP_NOEXCEPT
30441     {
30442       layers = layers_;
30443       return *this;
30444     }
30445 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
30446 
operator VkFramebufferCreateInfo const&VULKAN_HPP_NAMESPACE::FramebufferCreateInfo30447     explicit operator VkFramebufferCreateInfo const &() const VULKAN_HPP_NOEXCEPT
30448     {
30449       return *reinterpret_cast<const VkFramebufferCreateInfo *>( this );
30450     }
30451 
operator VkFramebufferCreateInfo&VULKAN_HPP_NAMESPACE::FramebufferCreateInfo30452     explicit operator VkFramebufferCreateInfo &() VULKAN_HPP_NOEXCEPT
30453     {
30454       return *reinterpret_cast<VkFramebufferCreateInfo *>( this );
30455     }
30456 
30457 #if 14 <= VULKAN_HPP_CPP_VERSION
30458     auto
30459 #else
30460     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
30461                const void * const &,
30462                VULKAN_HPP_NAMESPACE::FramebufferCreateFlags const &,
30463                VULKAN_HPP_NAMESPACE::RenderPass const &,
30464                uint32_t const &,
30465                const VULKAN_HPP_NAMESPACE::ImageView * const &,
30466                uint32_t const &,
30467                uint32_t const &,
30468                uint32_t const &>
30469 #endif
reflectVULKAN_HPP_NAMESPACE::FramebufferCreateInfo30470       reflect() const VULKAN_HPP_NOEXCEPT
30471     {
30472       return std::tie( sType, pNext, flags, renderPass, attachmentCount, pAttachments, width, height, layers );
30473     }
30474 
30475 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
30476     auto operator<=>( FramebufferCreateInfo const & ) const = default;
30477 #else
operator ==VULKAN_HPP_NAMESPACE::FramebufferCreateInfo30478     bool operator==( FramebufferCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
30479     {
30480       return this->reflect() == rhs.reflect();
30481     }
30482 
operator !=VULKAN_HPP_NAMESPACE::FramebufferCreateInfo30483     bool operator!=( FramebufferCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
30484     {
30485       return this->reflect() != rhs.reflect();
30486     }
30487 #endif
30488 
30489   public:
30490     VULKAN_HPP_NAMESPACE::StructureType          sType           = StructureType::eFramebufferCreateInfo;
30491     const void *                                 pNext           = {};
30492     VULKAN_HPP_NAMESPACE::FramebufferCreateFlags flags           = {};
30493     VULKAN_HPP_NAMESPACE::RenderPass             renderPass      = {};
30494     uint32_t                                     attachmentCount = {};
30495     const VULKAN_HPP_NAMESPACE::ImageView *      pAttachments    = {};
30496     uint32_t                                     width           = {};
30497     uint32_t                                     height          = {};
30498     uint32_t                                     layers          = {};
30499   };
30500   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FramebufferCreateInfo ) == sizeof( VkFramebufferCreateInfo ),
30501                             "struct and wrapper have different size!" );
30502   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::FramebufferCreateInfo>::value,
30503                             "struct wrapper is not a standard layout!" );
30504   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::FramebufferCreateInfo>::value,
30505                             "FramebufferCreateInfo is not nothrow_move_constructible!" );
30506 
30507   template <>
30508   struct CppType<StructureType, StructureType::eFramebufferCreateInfo>
30509   {
30510     using Type = FramebufferCreateInfo;
30511   };
30512 
30513   struct FramebufferMixedSamplesCombinationNV
30514   {
30515     using NativeType = VkFramebufferMixedSamplesCombinationNV;
30516 
30517     static const bool                                  allowDuplicate = false;
30518     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
30519       StructureType::eFramebufferMixedSamplesCombinationNV;
30520 
30521 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FramebufferMixedSamplesCombinationNVVULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV30522     VULKAN_HPP_CONSTEXPR FramebufferMixedSamplesCombinationNV(
30523       VULKAN_HPP_NAMESPACE::CoverageReductionModeNV coverageReductionMode_ =
30524         VULKAN_HPP_NAMESPACE::CoverageReductionModeNV::eMerge,
30525       VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1,
30526       VULKAN_HPP_NAMESPACE::SampleCountFlags    depthStencilSamples_  = {},
30527       VULKAN_HPP_NAMESPACE::SampleCountFlags    colorSamples_         = {} ) VULKAN_HPP_NOEXCEPT
30528       : coverageReductionMode( coverageReductionMode_ )
30529       , rasterizationSamples( rasterizationSamples_ )
30530       , depthStencilSamples( depthStencilSamples_ )
30531       , colorSamples( colorSamples_ )
30532     {}
30533 
30534     VULKAN_HPP_CONSTEXPR FramebufferMixedSamplesCombinationNV( FramebufferMixedSamplesCombinationNV const & rhs )
30535       VULKAN_HPP_NOEXCEPT = default;
30536 
FramebufferMixedSamplesCombinationNVVULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV30537     FramebufferMixedSamplesCombinationNV( VkFramebufferMixedSamplesCombinationNV const & rhs ) VULKAN_HPP_NOEXCEPT
30538       : FramebufferMixedSamplesCombinationNV( *reinterpret_cast<FramebufferMixedSamplesCombinationNV const *>( &rhs ) )
30539     {}
30540 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
30541 
30542     FramebufferMixedSamplesCombinationNV &
30543       operator=( FramebufferMixedSamplesCombinationNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30544 
30545     FramebufferMixedSamplesCombinationNV &
operator =VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV30546       operator=( VkFramebufferMixedSamplesCombinationNV const & rhs ) VULKAN_HPP_NOEXCEPT
30547     {
30548       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV const *>( &rhs );
30549       return *this;
30550     }
30551 
operator VkFramebufferMixedSamplesCombinationNV const&VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV30552     explicit operator VkFramebufferMixedSamplesCombinationNV const &() const VULKAN_HPP_NOEXCEPT
30553     {
30554       return *reinterpret_cast<const VkFramebufferMixedSamplesCombinationNV *>( this );
30555     }
30556 
operator VkFramebufferMixedSamplesCombinationNV&VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV30557     explicit operator VkFramebufferMixedSamplesCombinationNV &() VULKAN_HPP_NOEXCEPT
30558     {
30559       return *reinterpret_cast<VkFramebufferMixedSamplesCombinationNV *>( this );
30560     }
30561 
30562 #if 14 <= VULKAN_HPP_CPP_VERSION
30563     auto
30564 #else
30565     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
30566                void * const &,
30567                VULKAN_HPP_NAMESPACE::CoverageReductionModeNV const &,
30568                VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &,
30569                VULKAN_HPP_NAMESPACE::SampleCountFlags const &,
30570                VULKAN_HPP_NAMESPACE::SampleCountFlags const &>
30571 #endif
reflectVULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV30572       reflect() const VULKAN_HPP_NOEXCEPT
30573     {
30574       return std::tie( sType, pNext, coverageReductionMode, rasterizationSamples, depthStencilSamples, colorSamples );
30575     }
30576 
30577 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
30578     auto operator<=>( FramebufferMixedSamplesCombinationNV const & ) const = default;
30579 #else
operator ==VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV30580     bool operator==( FramebufferMixedSamplesCombinationNV const & rhs ) const VULKAN_HPP_NOEXCEPT
30581     {
30582       return this->reflect() == rhs.reflect();
30583     }
30584 
operator !=VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV30585     bool operator!=( FramebufferMixedSamplesCombinationNV const & rhs ) const VULKAN_HPP_NOEXCEPT
30586     {
30587       return this->reflect() != rhs.reflect();
30588     }
30589 #endif
30590 
30591   public:
30592     VULKAN_HPP_NAMESPACE::StructureType           sType = StructureType::eFramebufferMixedSamplesCombinationNV;
30593     void *                                        pNext = {};
30594     VULKAN_HPP_NAMESPACE::CoverageReductionModeNV coverageReductionMode =
30595       VULKAN_HPP_NAMESPACE::CoverageReductionModeNV::eMerge;
30596     VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
30597     VULKAN_HPP_NAMESPACE::SampleCountFlags    depthStencilSamples  = {};
30598     VULKAN_HPP_NAMESPACE::SampleCountFlags    colorSamples         = {};
30599   };
30600   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV ) ==
30601                               sizeof( VkFramebufferMixedSamplesCombinationNV ),
30602                             "struct and wrapper have different size!" );
30603   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV>::value,
30604                             "struct wrapper is not a standard layout!" );
30605   VULKAN_HPP_STATIC_ASSERT(
30606     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV>::value,
30607     "FramebufferMixedSamplesCombinationNV is not nothrow_move_constructible!" );
30608 
30609   template <>
30610   struct CppType<StructureType, StructureType::eFramebufferMixedSamplesCombinationNV>
30611   {
30612     using Type = FramebufferMixedSamplesCombinationNV;
30613   };
30614 
30615   struct IndirectCommandsStreamNV
30616   {
30617     using NativeType = VkIndirectCommandsStreamNV;
30618 
30619 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
IndirectCommandsStreamNVVULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV30620     VULKAN_HPP_CONSTEXPR IndirectCommandsStreamNV( VULKAN_HPP_NAMESPACE::Buffer     buffer_ = {},
30621                                                    VULKAN_HPP_NAMESPACE::DeviceSize offset_ = {} ) VULKAN_HPP_NOEXCEPT
30622       : buffer( buffer_ )
30623       , offset( offset_ )
30624     {}
30625 
30626     VULKAN_HPP_CONSTEXPR IndirectCommandsStreamNV( IndirectCommandsStreamNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30627 
IndirectCommandsStreamNVVULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV30628     IndirectCommandsStreamNV( VkIndirectCommandsStreamNV const & rhs ) VULKAN_HPP_NOEXCEPT
30629       : IndirectCommandsStreamNV( *reinterpret_cast<IndirectCommandsStreamNV const *>( &rhs ) )
30630     {}
30631 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
30632 
30633     IndirectCommandsStreamNV & operator=( IndirectCommandsStreamNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30634 
operator =VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV30635     IndirectCommandsStreamNV & operator=( VkIndirectCommandsStreamNV const & rhs ) VULKAN_HPP_NOEXCEPT
30636     {
30637       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV const *>( &rhs );
30638       return *this;
30639     }
30640 
30641 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
30642     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsStreamNV &
setBufferVULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV30643                             setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
30644     {
30645       buffer = buffer_;
30646       return *this;
30647     }
30648 
30649     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsStreamNV &
setOffsetVULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV30650                             setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
30651     {
30652       offset = offset_;
30653       return *this;
30654     }
30655 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
30656 
operator VkIndirectCommandsStreamNV const&VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV30657     explicit operator VkIndirectCommandsStreamNV const &() const VULKAN_HPP_NOEXCEPT
30658     {
30659       return *reinterpret_cast<const VkIndirectCommandsStreamNV *>( this );
30660     }
30661 
operator VkIndirectCommandsStreamNV&VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV30662     explicit operator VkIndirectCommandsStreamNV &() VULKAN_HPP_NOEXCEPT
30663     {
30664       return *reinterpret_cast<VkIndirectCommandsStreamNV *>( this );
30665     }
30666 
30667 #if 14 <= VULKAN_HPP_CPP_VERSION
30668     auto
30669 #else
30670     std::tuple<VULKAN_HPP_NAMESPACE::Buffer const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
30671 #endif
reflectVULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV30672       reflect() const VULKAN_HPP_NOEXCEPT
30673     {
30674       return std::tie( buffer, offset );
30675     }
30676 
30677 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
30678     auto operator<=>( IndirectCommandsStreamNV const & ) const = default;
30679 #else
operator ==VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV30680     bool operator==( IndirectCommandsStreamNV const & rhs ) const VULKAN_HPP_NOEXCEPT
30681     {
30682       return this->reflect() == rhs.reflect();
30683     }
30684 
operator !=VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV30685     bool operator!=( IndirectCommandsStreamNV const & rhs ) const VULKAN_HPP_NOEXCEPT
30686     {
30687       return this->reflect() != rhs.reflect();
30688     }
30689 #endif
30690 
30691   public:
30692     VULKAN_HPP_NAMESPACE::Buffer     buffer = {};
30693     VULKAN_HPP_NAMESPACE::DeviceSize offset = {};
30694   };
30695   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV ) ==
30696                               sizeof( VkIndirectCommandsStreamNV ),
30697                             "struct and wrapper have different size!" );
30698   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV>::value,
30699                             "struct wrapper is not a standard layout!" );
30700   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV>::value,
30701                             "IndirectCommandsStreamNV is not nothrow_move_constructible!" );
30702 
30703   struct GeneratedCommandsInfoNV
30704   {
30705     using NativeType = VkGeneratedCommandsInfoNV;
30706 
30707     static const bool                                  allowDuplicate = false;
30708     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eGeneratedCommandsInfoNV;
30709 
30710 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
GeneratedCommandsInfoNVVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV30711     VULKAN_HPP_CONSTEXPR GeneratedCommandsInfoNV(
30712       VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics,
30713       VULKAN_HPP_NAMESPACE::Pipeline          pipeline_          = {},
30714       VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV         indirectCommandsLayout_ = {},
30715       uint32_t                                               streamCount_            = {},
30716       const VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV * pStreams_               = {},
30717       uint32_t                                               sequencesCount_         = {},
30718       VULKAN_HPP_NAMESPACE::Buffer                           preprocessBuffer_       = {},
30719       VULKAN_HPP_NAMESPACE::DeviceSize                       preprocessOffset_       = {},
30720       VULKAN_HPP_NAMESPACE::DeviceSize                       preprocessSize_         = {},
30721       VULKAN_HPP_NAMESPACE::Buffer                           sequencesCountBuffer_   = {},
30722       VULKAN_HPP_NAMESPACE::DeviceSize                       sequencesCountOffset_   = {},
30723       VULKAN_HPP_NAMESPACE::Buffer                           sequencesIndexBuffer_   = {},
30724       VULKAN_HPP_NAMESPACE::DeviceSize                       sequencesIndexOffset_   = {} ) VULKAN_HPP_NOEXCEPT
30725       : pipelineBindPoint( pipelineBindPoint_ )
30726       , pipeline( pipeline_ )
30727       , indirectCommandsLayout( indirectCommandsLayout_ )
30728       , streamCount( streamCount_ )
30729       , pStreams( pStreams_ )
30730       , sequencesCount( sequencesCount_ )
30731       , preprocessBuffer( preprocessBuffer_ )
30732       , preprocessOffset( preprocessOffset_ )
30733       , preprocessSize( preprocessSize_ )
30734       , sequencesCountBuffer( sequencesCountBuffer_ )
30735       , sequencesCountOffset( sequencesCountOffset_ )
30736       , sequencesIndexBuffer( sequencesIndexBuffer_ )
30737       , sequencesIndexOffset( sequencesIndexOffset_ )
30738     {}
30739 
30740     VULKAN_HPP_CONSTEXPR GeneratedCommandsInfoNV( GeneratedCommandsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30741 
GeneratedCommandsInfoNVVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV30742     GeneratedCommandsInfoNV( VkGeneratedCommandsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
30743       : GeneratedCommandsInfoNV( *reinterpret_cast<GeneratedCommandsInfoNV const *>( &rhs ) )
30744     {}
30745 
30746 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
GeneratedCommandsInfoNVVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV30747     GeneratedCommandsInfoNV(
30748       VULKAN_HPP_NAMESPACE::PipelineBindPoint        pipelineBindPoint_,
30749       VULKAN_HPP_NAMESPACE::Pipeline                 pipeline_,
30750       VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout_,
30751       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV> const &
30752                                        streams_,
30753       uint32_t                         sequencesCount_       = {},
30754       VULKAN_HPP_NAMESPACE::Buffer     preprocessBuffer_     = {},
30755       VULKAN_HPP_NAMESPACE::DeviceSize preprocessOffset_     = {},
30756       VULKAN_HPP_NAMESPACE::DeviceSize preprocessSize_       = {},
30757       VULKAN_HPP_NAMESPACE::Buffer     sequencesCountBuffer_ = {},
30758       VULKAN_HPP_NAMESPACE::DeviceSize sequencesCountOffset_ = {},
30759       VULKAN_HPP_NAMESPACE::Buffer     sequencesIndexBuffer_ = {},
30760       VULKAN_HPP_NAMESPACE::DeviceSize sequencesIndexOffset_ = {} )
30761       : pipelineBindPoint( pipelineBindPoint_ )
30762       , pipeline( pipeline_ )
30763       , indirectCommandsLayout( indirectCommandsLayout_ )
30764       , streamCount( static_cast<uint32_t>( streams_.size() ) )
30765       , pStreams( streams_.data() )
30766       , sequencesCount( sequencesCount_ )
30767       , preprocessBuffer( preprocessBuffer_ )
30768       , preprocessOffset( preprocessOffset_ )
30769       , preprocessSize( preprocessSize_ )
30770       , sequencesCountBuffer( sequencesCountBuffer_ )
30771       , sequencesCountOffset( sequencesCountOffset_ )
30772       , sequencesIndexBuffer( sequencesIndexBuffer_ )
30773       , sequencesIndexOffset( sequencesIndexOffset_ )
30774     {}
30775 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30776 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
30777 
30778     GeneratedCommandsInfoNV & operator=( GeneratedCommandsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30779 
operator =VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV30780     GeneratedCommandsInfoNV & operator=( VkGeneratedCommandsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
30781     {
30782       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV const *>( &rhs );
30783       return *this;
30784     }
30785 
30786 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV30787     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
30788     {
30789       pNext = pNext_;
30790       return *this;
30791     }
30792 
30793     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV &
setPipelineBindPointVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV30794       setPipelineBindPoint( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ ) VULKAN_HPP_NOEXCEPT
30795     {
30796       pipelineBindPoint = pipelineBindPoint_;
30797       return *this;
30798     }
30799 
30800     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV &
setPipelineVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV30801                             setPipeline( VULKAN_HPP_NAMESPACE::Pipeline pipeline_ ) VULKAN_HPP_NOEXCEPT
30802     {
30803       pipeline = pipeline_;
30804       return *this;
30805     }
30806 
setIndirectCommandsLayoutVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV30807     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setIndirectCommandsLayout(
30808       VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout_ ) VULKAN_HPP_NOEXCEPT
30809     {
30810       indirectCommandsLayout = indirectCommandsLayout_;
30811       return *this;
30812     }
30813 
setStreamCountVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV30814     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setStreamCount( uint32_t streamCount_ ) VULKAN_HPP_NOEXCEPT
30815     {
30816       streamCount = streamCount_;
30817       return *this;
30818     }
30819 
30820     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV &
setPStreamsVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV30821       setPStreams( const VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV * pStreams_ ) VULKAN_HPP_NOEXCEPT
30822     {
30823       pStreams = pStreams_;
30824       return *this;
30825     }
30826 
30827 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setStreamsVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV30828     GeneratedCommandsInfoNV & setStreams(
30829       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV> const &
30830         streams_ ) VULKAN_HPP_NOEXCEPT
30831     {
30832       streamCount = static_cast<uint32_t>( streams_.size() );
30833       pStreams    = streams_.data();
30834       return *this;
30835     }
30836 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30837 
setSequencesCountVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV30838     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setSequencesCount( uint32_t sequencesCount_ ) VULKAN_HPP_NOEXCEPT
30839     {
30840       sequencesCount = sequencesCount_;
30841       return *this;
30842     }
30843 
30844     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV &
setPreprocessBufferVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV30845                             setPreprocessBuffer( VULKAN_HPP_NAMESPACE::Buffer preprocessBuffer_ ) VULKAN_HPP_NOEXCEPT
30846     {
30847       preprocessBuffer = preprocessBuffer_;
30848       return *this;
30849     }
30850 
30851     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV &
setPreprocessOffsetVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV30852       setPreprocessOffset( VULKAN_HPP_NAMESPACE::DeviceSize preprocessOffset_ ) VULKAN_HPP_NOEXCEPT
30853     {
30854       preprocessOffset = preprocessOffset_;
30855       return *this;
30856     }
30857 
30858     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV &
setPreprocessSizeVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV30859                             setPreprocessSize( VULKAN_HPP_NAMESPACE::DeviceSize preprocessSize_ ) VULKAN_HPP_NOEXCEPT
30860     {
30861       preprocessSize = preprocessSize_;
30862       return *this;
30863     }
30864 
30865     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV &
setSequencesCountBufferVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV30866       setSequencesCountBuffer( VULKAN_HPP_NAMESPACE::Buffer sequencesCountBuffer_ ) VULKAN_HPP_NOEXCEPT
30867     {
30868       sequencesCountBuffer = sequencesCountBuffer_;
30869       return *this;
30870     }
30871 
30872     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV &
setSequencesCountOffsetVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV30873       setSequencesCountOffset( VULKAN_HPP_NAMESPACE::DeviceSize sequencesCountOffset_ ) VULKAN_HPP_NOEXCEPT
30874     {
30875       sequencesCountOffset = sequencesCountOffset_;
30876       return *this;
30877     }
30878 
30879     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV &
setSequencesIndexBufferVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV30880       setSequencesIndexBuffer( VULKAN_HPP_NAMESPACE::Buffer sequencesIndexBuffer_ ) VULKAN_HPP_NOEXCEPT
30881     {
30882       sequencesIndexBuffer = sequencesIndexBuffer_;
30883       return *this;
30884     }
30885 
30886     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV &
setSequencesIndexOffsetVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV30887       setSequencesIndexOffset( VULKAN_HPP_NAMESPACE::DeviceSize sequencesIndexOffset_ ) VULKAN_HPP_NOEXCEPT
30888     {
30889       sequencesIndexOffset = sequencesIndexOffset_;
30890       return *this;
30891     }
30892 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
30893 
operator VkGeneratedCommandsInfoNV const&VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV30894     explicit operator VkGeneratedCommandsInfoNV const &() const VULKAN_HPP_NOEXCEPT
30895     {
30896       return *reinterpret_cast<const VkGeneratedCommandsInfoNV *>( this );
30897     }
30898 
operator VkGeneratedCommandsInfoNV&VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV30899     explicit operator VkGeneratedCommandsInfoNV &() VULKAN_HPP_NOEXCEPT
30900     {
30901       return *reinterpret_cast<VkGeneratedCommandsInfoNV *>( this );
30902     }
30903 
30904 #if 14 <= VULKAN_HPP_CPP_VERSION
30905     auto
30906 #else
30907     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
30908                const void * const &,
30909                VULKAN_HPP_NAMESPACE::PipelineBindPoint const &,
30910                VULKAN_HPP_NAMESPACE::Pipeline const &,
30911                VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV const &,
30912                uint32_t const &,
30913                const VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV * const &,
30914                uint32_t const &,
30915                VULKAN_HPP_NAMESPACE::Buffer const &,
30916                VULKAN_HPP_NAMESPACE::DeviceSize const &,
30917                VULKAN_HPP_NAMESPACE::DeviceSize const &,
30918                VULKAN_HPP_NAMESPACE::Buffer const &,
30919                VULKAN_HPP_NAMESPACE::DeviceSize const &,
30920                VULKAN_HPP_NAMESPACE::Buffer const &,
30921                VULKAN_HPP_NAMESPACE::DeviceSize const &>
30922 #endif
reflectVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV30923       reflect() const VULKAN_HPP_NOEXCEPT
30924     {
30925       return std::tie( sType,
30926                        pNext,
30927                        pipelineBindPoint,
30928                        pipeline,
30929                        indirectCommandsLayout,
30930                        streamCount,
30931                        pStreams,
30932                        sequencesCount,
30933                        preprocessBuffer,
30934                        preprocessOffset,
30935                        preprocessSize,
30936                        sequencesCountBuffer,
30937                        sequencesCountOffset,
30938                        sequencesIndexBuffer,
30939                        sequencesIndexOffset );
30940     }
30941 
30942 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
30943     auto operator<=>( GeneratedCommandsInfoNV const & ) const = default;
30944 #else
operator ==VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV30945     bool operator==( GeneratedCommandsInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
30946     {
30947       return this->reflect() == rhs.reflect();
30948     }
30949 
operator !=VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV30950     bool operator!=( GeneratedCommandsInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
30951     {
30952       return this->reflect() != rhs.reflect();
30953     }
30954 #endif
30955 
30956   public:
30957     VULKAN_HPP_NAMESPACE::StructureType     sType             = StructureType::eGeneratedCommandsInfoNV;
30958     const void *                            pNext             = {};
30959     VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics;
30960     VULKAN_HPP_NAMESPACE::Pipeline          pipeline          = {};
30961     VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV         indirectCommandsLayout = {};
30962     uint32_t                                               streamCount            = {};
30963     const VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV * pStreams               = {};
30964     uint32_t                                               sequencesCount         = {};
30965     VULKAN_HPP_NAMESPACE::Buffer                           preprocessBuffer       = {};
30966     VULKAN_HPP_NAMESPACE::DeviceSize                       preprocessOffset       = {};
30967     VULKAN_HPP_NAMESPACE::DeviceSize                       preprocessSize         = {};
30968     VULKAN_HPP_NAMESPACE::Buffer                           sequencesCountBuffer   = {};
30969     VULKAN_HPP_NAMESPACE::DeviceSize                       sequencesCountOffset   = {};
30970     VULKAN_HPP_NAMESPACE::Buffer                           sequencesIndexBuffer   = {};
30971     VULKAN_HPP_NAMESPACE::DeviceSize                       sequencesIndexOffset   = {};
30972   };
30973   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV ) ==
30974                               sizeof( VkGeneratedCommandsInfoNV ),
30975                             "struct and wrapper have different size!" );
30976   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV>::value,
30977                             "struct wrapper is not a standard layout!" );
30978   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV>::value,
30979                             "GeneratedCommandsInfoNV is not nothrow_move_constructible!" );
30980 
30981   template <>
30982   struct CppType<StructureType, StructureType::eGeneratedCommandsInfoNV>
30983   {
30984     using Type = GeneratedCommandsInfoNV;
30985   };
30986 
30987   struct GeneratedCommandsMemoryRequirementsInfoNV
30988   {
30989     using NativeType = VkGeneratedCommandsMemoryRequirementsInfoNV;
30990 
30991     static const bool                                  allowDuplicate = false;
30992     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
30993       StructureType::eGeneratedCommandsMemoryRequirementsInfoNV;
30994 
30995 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
GeneratedCommandsMemoryRequirementsInfoNVVULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV30996     VULKAN_HPP_CONSTEXPR GeneratedCommandsMemoryRequirementsInfoNV(
30997       VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics,
30998       VULKAN_HPP_NAMESPACE::Pipeline          pipeline_          = {},
30999       VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout_ = {},
31000       uint32_t                                       maxSequencesCount_      = {} ) VULKAN_HPP_NOEXCEPT
31001       : pipelineBindPoint( pipelineBindPoint_ )
31002       , pipeline( pipeline_ )
31003       , indirectCommandsLayout( indirectCommandsLayout_ )
31004       , maxSequencesCount( maxSequencesCount_ )
31005     {}
31006 
31007     VULKAN_HPP_CONSTEXPR GeneratedCommandsMemoryRequirementsInfoNV(
31008       GeneratedCommandsMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31009 
GeneratedCommandsMemoryRequirementsInfoNVVULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV31010     GeneratedCommandsMemoryRequirementsInfoNV( VkGeneratedCommandsMemoryRequirementsInfoNV const & rhs )
31011       VULKAN_HPP_NOEXCEPT
31012       : GeneratedCommandsMemoryRequirementsInfoNV(
31013           *reinterpret_cast<GeneratedCommandsMemoryRequirementsInfoNV const *>( &rhs ) )
31014     {}
31015 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31016 
31017     GeneratedCommandsMemoryRequirementsInfoNV &
31018       operator=( GeneratedCommandsMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31019 
31020     GeneratedCommandsMemoryRequirementsInfoNV &
operator =VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV31021       operator=( VkGeneratedCommandsMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
31022     {
31023       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV const *>( &rhs );
31024       return *this;
31025     }
31026 
31027 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
31028     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoNV &
setPNextVULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV31029                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
31030     {
31031       pNext = pNext_;
31032       return *this;
31033     }
31034 
31035     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoNV &
setPipelineBindPointVULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV31036       setPipelineBindPoint( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ ) VULKAN_HPP_NOEXCEPT
31037     {
31038       pipelineBindPoint = pipelineBindPoint_;
31039       return *this;
31040     }
31041 
31042     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoNV &
setPipelineVULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV31043                             setPipeline( VULKAN_HPP_NAMESPACE::Pipeline pipeline_ ) VULKAN_HPP_NOEXCEPT
31044     {
31045       pipeline = pipeline_;
31046       return *this;
31047     }
31048 
setIndirectCommandsLayoutVULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV31049     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoNV & setIndirectCommandsLayout(
31050       VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout_ ) VULKAN_HPP_NOEXCEPT
31051     {
31052       indirectCommandsLayout = indirectCommandsLayout_;
31053       return *this;
31054     }
31055 
31056     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoNV &
setMaxSequencesCountVULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV31057                             setMaxSequencesCount( uint32_t maxSequencesCount_ ) VULKAN_HPP_NOEXCEPT
31058     {
31059       maxSequencesCount = maxSequencesCount_;
31060       return *this;
31061     }
31062 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
31063 
operator VkGeneratedCommandsMemoryRequirementsInfoNV const&VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV31064     explicit operator VkGeneratedCommandsMemoryRequirementsInfoNV const &() const VULKAN_HPP_NOEXCEPT
31065     {
31066       return *reinterpret_cast<const VkGeneratedCommandsMemoryRequirementsInfoNV *>( this );
31067     }
31068 
operator VkGeneratedCommandsMemoryRequirementsInfoNV&VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV31069     explicit operator VkGeneratedCommandsMemoryRequirementsInfoNV &() VULKAN_HPP_NOEXCEPT
31070     {
31071       return *reinterpret_cast<VkGeneratedCommandsMemoryRequirementsInfoNV *>( this );
31072     }
31073 
31074 #if 14 <= VULKAN_HPP_CPP_VERSION
31075     auto
31076 #else
31077     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
31078                const void * const &,
31079                VULKAN_HPP_NAMESPACE::PipelineBindPoint const &,
31080                VULKAN_HPP_NAMESPACE::Pipeline const &,
31081                VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV const &,
31082                uint32_t const &>
31083 #endif
reflectVULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV31084       reflect() const VULKAN_HPP_NOEXCEPT
31085     {
31086       return std::tie( sType, pNext, pipelineBindPoint, pipeline, indirectCommandsLayout, maxSequencesCount );
31087     }
31088 
31089 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
31090     auto operator<=>( GeneratedCommandsMemoryRequirementsInfoNV const & ) const = default;
31091 #else
operator ==VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV31092     bool operator==( GeneratedCommandsMemoryRequirementsInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
31093     {
31094       return this->reflect() == rhs.reflect();
31095     }
31096 
operator !=VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV31097     bool operator!=( GeneratedCommandsMemoryRequirementsInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
31098     {
31099       return this->reflect() != rhs.reflect();
31100     }
31101 #endif
31102 
31103   public:
31104     VULKAN_HPP_NAMESPACE::StructureType     sType = StructureType::eGeneratedCommandsMemoryRequirementsInfoNV;
31105     const void *                            pNext = {};
31106     VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics;
31107     VULKAN_HPP_NAMESPACE::Pipeline          pipeline          = {};
31108     VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout = {};
31109     uint32_t                                       maxSequencesCount      = {};
31110   };
31111   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV ) ==
31112                               sizeof( VkGeneratedCommandsMemoryRequirementsInfoNV ),
31113                             "struct and wrapper have different size!" );
31114   VULKAN_HPP_STATIC_ASSERT(
31115     std::is_standard_layout<VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV>::value,
31116     "struct wrapper is not a standard layout!" );
31117   VULKAN_HPP_STATIC_ASSERT(
31118     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV>::value,
31119     "GeneratedCommandsMemoryRequirementsInfoNV is not nothrow_move_constructible!" );
31120 
31121   template <>
31122   struct CppType<StructureType, StructureType::eGeneratedCommandsMemoryRequirementsInfoNV>
31123   {
31124     using Type = GeneratedCommandsMemoryRequirementsInfoNV;
31125   };
31126 
31127   struct VertexInputBindingDescription
31128   {
31129     using NativeType = VkVertexInputBindingDescription;
31130 
31131 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
31132     VULKAN_HPP_CONSTEXPR
VertexInputBindingDescriptionVULKAN_HPP_NAMESPACE::VertexInputBindingDescription31133       VertexInputBindingDescription( uint32_t                              binding_ = {},
31134                                      uint32_t                              stride_  = {},
31135                                      VULKAN_HPP_NAMESPACE::VertexInputRate inputRate_ =
31136                                        VULKAN_HPP_NAMESPACE::VertexInputRate::eVertex ) VULKAN_HPP_NOEXCEPT
31137       : binding( binding_ )
31138       , stride( stride_ )
31139       , inputRate( inputRate_ )
31140     {}
31141 
31142     VULKAN_HPP_CONSTEXPR
31143       VertexInputBindingDescription( VertexInputBindingDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31144 
VertexInputBindingDescriptionVULKAN_HPP_NAMESPACE::VertexInputBindingDescription31145     VertexInputBindingDescription( VkVertexInputBindingDescription const & rhs ) VULKAN_HPP_NOEXCEPT
31146       : VertexInputBindingDescription( *reinterpret_cast<VertexInputBindingDescription const *>( &rhs ) )
31147     {}
31148 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31149 
31150     VertexInputBindingDescription &
31151       operator=( VertexInputBindingDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31152 
operator =VULKAN_HPP_NAMESPACE::VertexInputBindingDescription31153     VertexInputBindingDescription & operator=( VkVertexInputBindingDescription const & rhs ) VULKAN_HPP_NOEXCEPT
31154     {
31155       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VertexInputBindingDescription const *>( &rhs );
31156       return *this;
31157     }
31158 
31159 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setBindingVULKAN_HPP_NAMESPACE::VertexInputBindingDescription31160     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription & setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT
31161     {
31162       binding = binding_;
31163       return *this;
31164     }
31165 
setStrideVULKAN_HPP_NAMESPACE::VertexInputBindingDescription31166     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription & setStride( uint32_t stride_ ) VULKAN_HPP_NOEXCEPT
31167     {
31168       stride = stride_;
31169       return *this;
31170     }
31171 
31172     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription &
setInputRateVULKAN_HPP_NAMESPACE::VertexInputBindingDescription31173                             setInputRate( VULKAN_HPP_NAMESPACE::VertexInputRate inputRate_ ) VULKAN_HPP_NOEXCEPT
31174     {
31175       inputRate = inputRate_;
31176       return *this;
31177     }
31178 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
31179 
operator VkVertexInputBindingDescription const&VULKAN_HPP_NAMESPACE::VertexInputBindingDescription31180     explicit operator VkVertexInputBindingDescription const &() const VULKAN_HPP_NOEXCEPT
31181     {
31182       return *reinterpret_cast<const VkVertexInputBindingDescription *>( this );
31183     }
31184 
operator VkVertexInputBindingDescription&VULKAN_HPP_NAMESPACE::VertexInputBindingDescription31185     explicit operator VkVertexInputBindingDescription &() VULKAN_HPP_NOEXCEPT
31186     {
31187       return *reinterpret_cast<VkVertexInputBindingDescription *>( this );
31188     }
31189 
31190 #if 14 <= VULKAN_HPP_CPP_VERSION
31191     auto
31192 #else
31193     std::tuple<uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::VertexInputRate const &>
31194 #endif
reflectVULKAN_HPP_NAMESPACE::VertexInputBindingDescription31195       reflect() const VULKAN_HPP_NOEXCEPT
31196     {
31197       return std::tie( binding, stride, inputRate );
31198     }
31199 
31200 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
31201     auto operator<=>( VertexInputBindingDescription const & ) const = default;
31202 #else
operator ==VULKAN_HPP_NAMESPACE::VertexInputBindingDescription31203     bool operator==( VertexInputBindingDescription const & rhs ) const VULKAN_HPP_NOEXCEPT
31204     {
31205       return this->reflect() == rhs.reflect();
31206     }
31207 
operator !=VULKAN_HPP_NAMESPACE::VertexInputBindingDescription31208     bool operator!=( VertexInputBindingDescription const & rhs ) const VULKAN_HPP_NOEXCEPT
31209     {
31210       return this->reflect() != rhs.reflect();
31211     }
31212 #endif
31213 
31214   public:
31215     uint32_t                              binding   = {};
31216     uint32_t                              stride    = {};
31217     VULKAN_HPP_NAMESPACE::VertexInputRate inputRate = VULKAN_HPP_NAMESPACE::VertexInputRate::eVertex;
31218   };
31219   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VertexInputBindingDescription ) ==
31220                               sizeof( VkVertexInputBindingDescription ),
31221                             "struct and wrapper have different size!" );
31222   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VertexInputBindingDescription>::value,
31223                             "struct wrapper is not a standard layout!" );
31224   VULKAN_HPP_STATIC_ASSERT(
31225     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VertexInputBindingDescription>::value,
31226     "VertexInputBindingDescription is not nothrow_move_constructible!" );
31227 
31228   struct VertexInputAttributeDescription
31229   {
31230     using NativeType = VkVertexInputAttributeDescription;
31231 
31232 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
31233     VULKAN_HPP_CONSTEXPR
VertexInputAttributeDescriptionVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription31234       VertexInputAttributeDescription( uint32_t                     location_ = {},
31235                                        uint32_t                     binding_  = {},
31236                                        VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined,
31237                                        uint32_t                     offset_ = {} ) VULKAN_HPP_NOEXCEPT
31238       : location( location_ )
31239       , binding( binding_ )
31240       , format( format_ )
31241       , offset( offset_ )
31242     {}
31243 
31244     VULKAN_HPP_CONSTEXPR
31245       VertexInputAttributeDescription( VertexInputAttributeDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31246 
VertexInputAttributeDescriptionVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription31247     VertexInputAttributeDescription( VkVertexInputAttributeDescription const & rhs ) VULKAN_HPP_NOEXCEPT
31248       : VertexInputAttributeDescription( *reinterpret_cast<VertexInputAttributeDescription const *>( &rhs ) )
31249     {}
31250 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31251 
31252     VertexInputAttributeDescription &
31253       operator=( VertexInputAttributeDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31254 
operator =VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription31255     VertexInputAttributeDescription & operator=( VkVertexInputAttributeDescription const & rhs ) VULKAN_HPP_NOEXCEPT
31256     {
31257       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription const *>( &rhs );
31258       return *this;
31259     }
31260 
31261 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setLocationVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription31262     VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription & setLocation( uint32_t location_ ) VULKAN_HPP_NOEXCEPT
31263     {
31264       location = location_;
31265       return *this;
31266     }
31267 
setBindingVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription31268     VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription & setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT
31269     {
31270       binding = binding_;
31271       return *this;
31272     }
31273 
31274     VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription &
setFormatVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription31275                             setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
31276     {
31277       format = format_;
31278       return *this;
31279     }
31280 
setOffsetVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription31281     VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription & setOffset( uint32_t offset_ ) VULKAN_HPP_NOEXCEPT
31282     {
31283       offset = offset_;
31284       return *this;
31285     }
31286 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
31287 
operator VkVertexInputAttributeDescription const&VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription31288     explicit operator VkVertexInputAttributeDescription const &() const VULKAN_HPP_NOEXCEPT
31289     {
31290       return *reinterpret_cast<const VkVertexInputAttributeDescription *>( this );
31291     }
31292 
operator VkVertexInputAttributeDescription&VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription31293     explicit operator VkVertexInputAttributeDescription &() VULKAN_HPP_NOEXCEPT
31294     {
31295       return *reinterpret_cast<VkVertexInputAttributeDescription *>( this );
31296     }
31297 
31298 #if 14 <= VULKAN_HPP_CPP_VERSION
31299     auto
31300 #else
31301     std::tuple<uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::Format const &, uint32_t const &>
31302 #endif
reflectVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription31303       reflect() const VULKAN_HPP_NOEXCEPT
31304     {
31305       return std::tie( location, binding, format, offset );
31306     }
31307 
31308 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
31309     auto operator<=>( VertexInputAttributeDescription const & ) const = default;
31310 #else
operator ==VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription31311     bool operator==( VertexInputAttributeDescription const & rhs ) const VULKAN_HPP_NOEXCEPT
31312     {
31313       return this->reflect() == rhs.reflect();
31314     }
31315 
operator !=VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription31316     bool operator!=( VertexInputAttributeDescription const & rhs ) const VULKAN_HPP_NOEXCEPT
31317     {
31318       return this->reflect() != rhs.reflect();
31319     }
31320 #endif
31321 
31322   public:
31323     uint32_t                     location = {};
31324     uint32_t                     binding  = {};
31325     VULKAN_HPP_NAMESPACE::Format format   = VULKAN_HPP_NAMESPACE::Format::eUndefined;
31326     uint32_t                     offset   = {};
31327   };
31328   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription ) ==
31329                               sizeof( VkVertexInputAttributeDescription ),
31330                             "struct and wrapper have different size!" );
31331   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription>::value,
31332                             "struct wrapper is not a standard layout!" );
31333   VULKAN_HPP_STATIC_ASSERT(
31334     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription>::value,
31335     "VertexInputAttributeDescription is not nothrow_move_constructible!" );
31336 
31337   struct PipelineVertexInputStateCreateInfo
31338   {
31339     using NativeType = VkPipelineVertexInputStateCreateInfo;
31340 
31341     static const bool                                  allowDuplicate = false;
31342     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
31343       StructureType::ePipelineVertexInputStateCreateInfo;
31344 
31345 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineVertexInputStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo31346     VULKAN_HPP_CONSTEXPR PipelineVertexInputStateCreateInfo(
31347       VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateFlags     flags_                           = {},
31348       uint32_t                                                      vertexBindingDescriptionCount_   = {},
31349       const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription *   pVertexBindingDescriptions_      = {},
31350       uint32_t                                                      vertexAttributeDescriptionCount_ = {},
31351       const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription * pVertexAttributeDescriptions_    = {} )
31352       VULKAN_HPP_NOEXCEPT
31353       : flags( flags_ )
31354       , vertexBindingDescriptionCount( vertexBindingDescriptionCount_ )
31355       , pVertexBindingDescriptions( pVertexBindingDescriptions_ )
31356       , vertexAttributeDescriptionCount( vertexAttributeDescriptionCount_ )
31357       , pVertexAttributeDescriptions( pVertexAttributeDescriptions_ )
31358     {}
31359 
31360     VULKAN_HPP_CONSTEXPR PipelineVertexInputStateCreateInfo( PipelineVertexInputStateCreateInfo const & rhs )
31361       VULKAN_HPP_NOEXCEPT = default;
31362 
PipelineVertexInputStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo31363     PipelineVertexInputStateCreateInfo( VkPipelineVertexInputStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
31364       : PipelineVertexInputStateCreateInfo( *reinterpret_cast<PipelineVertexInputStateCreateInfo const *>( &rhs ) )
31365     {}
31366 
31367 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineVertexInputStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo31368     PipelineVertexInputStateCreateInfo(
31369       VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateFlags flags_,
31370       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription> const &
31371         vertexBindingDescriptions_,
31372       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription> const &
31373         vertexAttributeDescriptions_ = {} )
31374       : flags( flags_ )
31375       , vertexBindingDescriptionCount( static_cast<uint32_t>( vertexBindingDescriptions_.size() ) )
31376       , pVertexBindingDescriptions( vertexBindingDescriptions_.data() )
31377       , vertexAttributeDescriptionCount( static_cast<uint32_t>( vertexAttributeDescriptions_.size() ) )
31378       , pVertexAttributeDescriptions( vertexAttributeDescriptions_.data() )
31379     {}
31380 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31381 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31382 
31383     PipelineVertexInputStateCreateInfo &
31384       operator=( PipelineVertexInputStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31385 
31386     PipelineVertexInputStateCreateInfo &
operator =VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo31387       operator=( VkPipelineVertexInputStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
31388     {
31389       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo const *>( &rhs );
31390       return *this;
31391     }
31392 
31393 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo31394     VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
31395     {
31396       pNext = pNext_;
31397       return *this;
31398     }
31399 
31400     VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo31401       setFlags( VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
31402     {
31403       flags = flags_;
31404       return *this;
31405     }
31406 
31407     VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo &
setVertexBindingDescriptionCountVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo31408       setVertexBindingDescriptionCount( uint32_t vertexBindingDescriptionCount_ ) VULKAN_HPP_NOEXCEPT
31409     {
31410       vertexBindingDescriptionCount = vertexBindingDescriptionCount_;
31411       return *this;
31412     }
31413 
setPVertexBindingDescriptionsVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo31414     VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo & setPVertexBindingDescriptions(
31415       const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription * pVertexBindingDescriptions_ ) VULKAN_HPP_NOEXCEPT
31416     {
31417       pVertexBindingDescriptions = pVertexBindingDescriptions_;
31418       return *this;
31419     }
31420 
31421 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setVertexBindingDescriptionsVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo31422     PipelineVertexInputStateCreateInfo & setVertexBindingDescriptions(
31423       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription> const &
31424         vertexBindingDescriptions_ ) VULKAN_HPP_NOEXCEPT
31425     {
31426       vertexBindingDescriptionCount = static_cast<uint32_t>( vertexBindingDescriptions_.size() );
31427       pVertexBindingDescriptions    = vertexBindingDescriptions_.data();
31428       return *this;
31429     }
31430 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31431 
31432     VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo &
setVertexAttributeDescriptionCountVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo31433       setVertexAttributeDescriptionCount( uint32_t vertexAttributeDescriptionCount_ ) VULKAN_HPP_NOEXCEPT
31434     {
31435       vertexAttributeDescriptionCount = vertexAttributeDescriptionCount_;
31436       return *this;
31437     }
31438 
setPVertexAttributeDescriptionsVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo31439     VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo & setPVertexAttributeDescriptions(
31440       const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription * pVertexAttributeDescriptions_ ) VULKAN_HPP_NOEXCEPT
31441     {
31442       pVertexAttributeDescriptions = pVertexAttributeDescriptions_;
31443       return *this;
31444     }
31445 
31446 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setVertexAttributeDescriptionsVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo31447     PipelineVertexInputStateCreateInfo & setVertexAttributeDescriptions(
31448       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription> const &
31449         vertexAttributeDescriptions_ ) VULKAN_HPP_NOEXCEPT
31450     {
31451       vertexAttributeDescriptionCount = static_cast<uint32_t>( vertexAttributeDescriptions_.size() );
31452       pVertexAttributeDescriptions    = vertexAttributeDescriptions_.data();
31453       return *this;
31454     }
31455 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31456 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
31457 
operator VkPipelineVertexInputStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo31458     explicit operator VkPipelineVertexInputStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
31459     {
31460       return *reinterpret_cast<const VkPipelineVertexInputStateCreateInfo *>( this );
31461     }
31462 
operator VkPipelineVertexInputStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo31463     explicit operator VkPipelineVertexInputStateCreateInfo &() VULKAN_HPP_NOEXCEPT
31464     {
31465       return *reinterpret_cast<VkPipelineVertexInputStateCreateInfo *>( this );
31466     }
31467 
31468 #if 14 <= VULKAN_HPP_CPP_VERSION
31469     auto
31470 #else
31471     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
31472                const void * const &,
31473                VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateFlags const &,
31474                uint32_t const &,
31475                const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription * const &,
31476                uint32_t const &,
31477                const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription * const &>
31478 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo31479       reflect() const VULKAN_HPP_NOEXCEPT
31480     {
31481       return std::tie( sType,
31482                        pNext,
31483                        flags,
31484                        vertexBindingDescriptionCount,
31485                        pVertexBindingDescriptions,
31486                        vertexAttributeDescriptionCount,
31487                        pVertexAttributeDescriptions );
31488     }
31489 
31490 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
31491     auto operator<=>( PipelineVertexInputStateCreateInfo const & ) const = default;
31492 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo31493     bool operator==( PipelineVertexInputStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
31494     {
31495       return this->reflect() == rhs.reflect();
31496     }
31497 
operator !=VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo31498     bool operator!=( PipelineVertexInputStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
31499     {
31500       return this->reflect() != rhs.reflect();
31501     }
31502 #endif
31503 
31504   public:
31505     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineVertexInputStateCreateInfo;
31506     const void *                        pNext = {};
31507     VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateFlags     flags                           = {};
31508     uint32_t                                                      vertexBindingDescriptionCount   = {};
31509     const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription *   pVertexBindingDescriptions      = {};
31510     uint32_t                                                      vertexAttributeDescriptionCount = {};
31511     const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription * pVertexAttributeDescriptions    = {};
31512   };
31513   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo ) ==
31514                               sizeof( VkPipelineVertexInputStateCreateInfo ),
31515                             "struct and wrapper have different size!" );
31516   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo>::value,
31517                             "struct wrapper is not a standard layout!" );
31518   VULKAN_HPP_STATIC_ASSERT(
31519     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo>::value,
31520     "PipelineVertexInputStateCreateInfo is not nothrow_move_constructible!" );
31521 
31522   template <>
31523   struct CppType<StructureType, StructureType::ePipelineVertexInputStateCreateInfo>
31524   {
31525     using Type = PipelineVertexInputStateCreateInfo;
31526   };
31527 
31528   struct PipelineInputAssemblyStateCreateInfo
31529   {
31530     using NativeType = VkPipelineInputAssemblyStateCreateInfo;
31531 
31532     static const bool                                  allowDuplicate = false;
31533     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
31534       StructureType::ePipelineInputAssemblyStateCreateInfo;
31535 
31536 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineInputAssemblyStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo31537     VULKAN_HPP_CONSTEXPR PipelineInputAssemblyStateCreateInfo(
31538       VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateFlags flags_ = {},
31539       VULKAN_HPP_NAMESPACE::PrimitiveTopology topology_ = VULKAN_HPP_NAMESPACE::PrimitiveTopology::ePointList,
31540       VULKAN_HPP_NAMESPACE::Bool32            primitiveRestartEnable_ = {} ) VULKAN_HPP_NOEXCEPT
31541       : flags( flags_ )
31542       , topology( topology_ )
31543       , primitiveRestartEnable( primitiveRestartEnable_ )
31544     {}
31545 
31546     VULKAN_HPP_CONSTEXPR PipelineInputAssemblyStateCreateInfo( PipelineInputAssemblyStateCreateInfo const & rhs )
31547       VULKAN_HPP_NOEXCEPT = default;
31548 
PipelineInputAssemblyStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo31549     PipelineInputAssemblyStateCreateInfo( VkPipelineInputAssemblyStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
31550       : PipelineInputAssemblyStateCreateInfo( *reinterpret_cast<PipelineInputAssemblyStateCreateInfo const *>( &rhs ) )
31551     {}
31552 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31553 
31554     PipelineInputAssemblyStateCreateInfo &
31555       operator=( PipelineInputAssemblyStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31556 
31557     PipelineInputAssemblyStateCreateInfo &
operator =VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo31558       operator=( VkPipelineInputAssemblyStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
31559     {
31560       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo const *>( &rhs );
31561       return *this;
31562     }
31563 
31564 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo31565     VULKAN_HPP_CONSTEXPR_14 PipelineInputAssemblyStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
31566     {
31567       pNext = pNext_;
31568       return *this;
31569     }
31570 
31571     VULKAN_HPP_CONSTEXPR_14 PipelineInputAssemblyStateCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo31572       setFlags( VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
31573     {
31574       flags = flags_;
31575       return *this;
31576     }
31577 
31578     VULKAN_HPP_CONSTEXPR_14 PipelineInputAssemblyStateCreateInfo &
setTopologyVULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo31579                             setTopology( VULKAN_HPP_NAMESPACE::PrimitiveTopology topology_ ) VULKAN_HPP_NOEXCEPT
31580     {
31581       topology = topology_;
31582       return *this;
31583     }
31584 
31585     VULKAN_HPP_CONSTEXPR_14 PipelineInputAssemblyStateCreateInfo &
setPrimitiveRestartEnableVULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo31586       setPrimitiveRestartEnable( VULKAN_HPP_NAMESPACE::Bool32 primitiveRestartEnable_ ) VULKAN_HPP_NOEXCEPT
31587     {
31588       primitiveRestartEnable = primitiveRestartEnable_;
31589       return *this;
31590     }
31591 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
31592 
operator VkPipelineInputAssemblyStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo31593     explicit operator VkPipelineInputAssemblyStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
31594     {
31595       return *reinterpret_cast<const VkPipelineInputAssemblyStateCreateInfo *>( this );
31596     }
31597 
operator VkPipelineInputAssemblyStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo31598     explicit operator VkPipelineInputAssemblyStateCreateInfo &() VULKAN_HPP_NOEXCEPT
31599     {
31600       return *reinterpret_cast<VkPipelineInputAssemblyStateCreateInfo *>( this );
31601     }
31602 
31603 #if 14 <= VULKAN_HPP_CPP_VERSION
31604     auto
31605 #else
31606     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
31607                const void * const &,
31608                VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateFlags const &,
31609                VULKAN_HPP_NAMESPACE::PrimitiveTopology const &,
31610                VULKAN_HPP_NAMESPACE::Bool32 const &>
31611 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo31612       reflect() const VULKAN_HPP_NOEXCEPT
31613     {
31614       return std::tie( sType, pNext, flags, topology, primitiveRestartEnable );
31615     }
31616 
31617 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
31618     auto operator<=>( PipelineInputAssemblyStateCreateInfo const & ) const = default;
31619 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo31620     bool operator==( PipelineInputAssemblyStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
31621     {
31622       return this->reflect() == rhs.reflect();
31623     }
31624 
operator !=VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo31625     bool operator!=( PipelineInputAssemblyStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
31626     {
31627       return this->reflect() != rhs.reflect();
31628     }
31629 #endif
31630 
31631   public:
31632     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineInputAssemblyStateCreateInfo;
31633     const void *                        pNext = {};
31634     VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateFlags flags = {};
31635     VULKAN_HPP_NAMESPACE::PrimitiveTopology topology = VULKAN_HPP_NAMESPACE::PrimitiveTopology::ePointList;
31636     VULKAN_HPP_NAMESPACE::Bool32            primitiveRestartEnable = {};
31637   };
31638   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo ) ==
31639                               sizeof( VkPipelineInputAssemblyStateCreateInfo ),
31640                             "struct and wrapper have different size!" );
31641   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo>::value,
31642                             "struct wrapper is not a standard layout!" );
31643   VULKAN_HPP_STATIC_ASSERT(
31644     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo>::value,
31645     "PipelineInputAssemblyStateCreateInfo is not nothrow_move_constructible!" );
31646 
31647   template <>
31648   struct CppType<StructureType, StructureType::ePipelineInputAssemblyStateCreateInfo>
31649   {
31650     using Type = PipelineInputAssemblyStateCreateInfo;
31651   };
31652 
31653   struct PipelineTessellationStateCreateInfo
31654   {
31655     using NativeType = VkPipelineTessellationStateCreateInfo;
31656 
31657     static const bool                                  allowDuplicate = false;
31658     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
31659       StructureType::ePipelineTessellationStateCreateInfo;
31660 
31661 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
31662     VULKAN_HPP_CONSTEXPR
PipelineTessellationStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo31663       PipelineTessellationStateCreateInfo( VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateFlags flags_ = {},
31664                                            uint32_t patchControlPoints_ = {} ) VULKAN_HPP_NOEXCEPT
31665       : flags( flags_ )
31666       , patchControlPoints( patchControlPoints_ )
31667     {}
31668 
31669     VULKAN_HPP_CONSTEXPR PipelineTessellationStateCreateInfo( PipelineTessellationStateCreateInfo const & rhs )
31670       VULKAN_HPP_NOEXCEPT = default;
31671 
PipelineTessellationStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo31672     PipelineTessellationStateCreateInfo( VkPipelineTessellationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
31673       : PipelineTessellationStateCreateInfo( *reinterpret_cast<PipelineTessellationStateCreateInfo const *>( &rhs ) )
31674     {}
31675 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31676 
31677     PipelineTessellationStateCreateInfo &
31678       operator=( PipelineTessellationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31679 
31680     PipelineTessellationStateCreateInfo &
operator =VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo31681       operator=( VkPipelineTessellationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
31682     {
31683       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo const *>( &rhs );
31684       return *this;
31685     }
31686 
31687 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo31688     VULKAN_HPP_CONSTEXPR_14 PipelineTessellationStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
31689     {
31690       pNext = pNext_;
31691       return *this;
31692     }
31693 
31694     VULKAN_HPP_CONSTEXPR_14 PipelineTessellationStateCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo31695       setFlags( VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
31696     {
31697       flags = flags_;
31698       return *this;
31699     }
31700 
31701     VULKAN_HPP_CONSTEXPR_14 PipelineTessellationStateCreateInfo &
setPatchControlPointsVULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo31702                             setPatchControlPoints( uint32_t patchControlPoints_ ) VULKAN_HPP_NOEXCEPT
31703     {
31704       patchControlPoints = patchControlPoints_;
31705       return *this;
31706     }
31707 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
31708 
operator VkPipelineTessellationStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo31709     explicit operator VkPipelineTessellationStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
31710     {
31711       return *reinterpret_cast<const VkPipelineTessellationStateCreateInfo *>( this );
31712     }
31713 
operator VkPipelineTessellationStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo31714     explicit operator VkPipelineTessellationStateCreateInfo &() VULKAN_HPP_NOEXCEPT
31715     {
31716       return *reinterpret_cast<VkPipelineTessellationStateCreateInfo *>( this );
31717     }
31718 
31719 #if 14 <= VULKAN_HPP_CPP_VERSION
31720     auto
31721 #else
31722     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
31723                const void * const &,
31724                VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateFlags const &,
31725                uint32_t const &>
31726 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo31727       reflect() const VULKAN_HPP_NOEXCEPT
31728     {
31729       return std::tie( sType, pNext, flags, patchControlPoints );
31730     }
31731 
31732 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
31733     auto operator<=>( PipelineTessellationStateCreateInfo const & ) const = default;
31734 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo31735     bool operator==( PipelineTessellationStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
31736     {
31737       return this->reflect() == rhs.reflect();
31738     }
31739 
operator !=VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo31740     bool operator!=( PipelineTessellationStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
31741     {
31742       return this->reflect() != rhs.reflect();
31743     }
31744 #endif
31745 
31746   public:
31747     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineTessellationStateCreateInfo;
31748     const void *                        pNext = {};
31749     VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateFlags flags              = {};
31750     uint32_t                                                   patchControlPoints = {};
31751   };
31752   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo ) ==
31753                               sizeof( VkPipelineTessellationStateCreateInfo ),
31754                             "struct and wrapper have different size!" );
31755   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo>::value,
31756                             "struct wrapper is not a standard layout!" );
31757   VULKAN_HPP_STATIC_ASSERT(
31758     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo>::value,
31759     "PipelineTessellationStateCreateInfo is not nothrow_move_constructible!" );
31760 
31761   template <>
31762   struct CppType<StructureType, StructureType::ePipelineTessellationStateCreateInfo>
31763   {
31764     using Type = PipelineTessellationStateCreateInfo;
31765   };
31766 
31767   struct PipelineViewportStateCreateInfo
31768   {
31769     using NativeType = VkPipelineViewportStateCreateInfo;
31770 
31771     static const bool                                  allowDuplicate = false;
31772     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineViewportStateCreateInfo;
31773 
31774 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
31775     VULKAN_HPP_CONSTEXPR
PipelineViewportStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo31776       PipelineViewportStateCreateInfo( VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateFlags flags_         = {},
31777                                        uint32_t                                               viewportCount_ = {},
31778                                        const VULKAN_HPP_NAMESPACE::Viewport *                 pViewports_    = {},
31779                                        uint32_t                                               scissorCount_  = {},
31780                                        const VULKAN_HPP_NAMESPACE::Rect2D * pScissors_ = {} ) VULKAN_HPP_NOEXCEPT
31781       : flags( flags_ )
31782       , viewportCount( viewportCount_ )
31783       , pViewports( pViewports_ )
31784       , scissorCount( scissorCount_ )
31785       , pScissors( pScissors_ )
31786     {}
31787 
31788     VULKAN_HPP_CONSTEXPR
31789       PipelineViewportStateCreateInfo( PipelineViewportStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31790 
PipelineViewportStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo31791     PipelineViewportStateCreateInfo( VkPipelineViewportStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
31792       : PipelineViewportStateCreateInfo( *reinterpret_cast<PipelineViewportStateCreateInfo const *>( &rhs ) )
31793     {}
31794 
31795 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineViewportStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo31796     PipelineViewportStateCreateInfo(
31797       VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateFlags                                      flags_,
31798       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Viewport> const & viewports_,
31799       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const &   scissors_ = {} )
31800       : flags( flags_ )
31801       , viewportCount( static_cast<uint32_t>( viewports_.size() ) )
31802       , pViewports( viewports_.data() )
31803       , scissorCount( static_cast<uint32_t>( scissors_.size() ) )
31804       , pScissors( scissors_.data() )
31805     {}
31806 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31807 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31808 
31809     PipelineViewportStateCreateInfo &
31810       operator=( PipelineViewportStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31811 
operator =VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo31812     PipelineViewportStateCreateInfo & operator=( VkPipelineViewportStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
31813     {
31814       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo const *>( &rhs );
31815       return *this;
31816     }
31817 
31818 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo31819     VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
31820     {
31821       pNext = pNext_;
31822       return *this;
31823     }
31824 
31825     VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo31826       setFlags( VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
31827     {
31828       flags = flags_;
31829       return *this;
31830     }
31831 
31832     VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo &
setViewportCountVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo31833                             setViewportCount( uint32_t viewportCount_ ) VULKAN_HPP_NOEXCEPT
31834     {
31835       viewportCount = viewportCount_;
31836       return *this;
31837     }
31838 
31839     VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo &
setPViewportsVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo31840                             setPViewports( const VULKAN_HPP_NAMESPACE::Viewport * pViewports_ ) VULKAN_HPP_NOEXCEPT
31841     {
31842       pViewports = pViewports_;
31843       return *this;
31844     }
31845 
31846 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setViewportsVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo31847     PipelineViewportStateCreateInfo & setViewports(
31848       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Viewport> const & viewports_ )
31849       VULKAN_HPP_NOEXCEPT
31850     {
31851       viewportCount = static_cast<uint32_t>( viewports_.size() );
31852       pViewports    = viewports_.data();
31853       return *this;
31854     }
31855 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31856 
31857     VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo &
setScissorCountVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo31858                             setScissorCount( uint32_t scissorCount_ ) VULKAN_HPP_NOEXCEPT
31859     {
31860       scissorCount = scissorCount_;
31861       return *this;
31862     }
31863 
31864     VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo &
setPScissorsVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo31865                             setPScissors( const VULKAN_HPP_NAMESPACE::Rect2D * pScissors_ ) VULKAN_HPP_NOEXCEPT
31866     {
31867       pScissors = pScissors_;
31868       return *this;
31869     }
31870 
31871 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
31872     PipelineViewportStateCreateInfo &
setScissorsVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo31873       setScissors( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & scissors_ )
31874         VULKAN_HPP_NOEXCEPT
31875     {
31876       scissorCount = static_cast<uint32_t>( scissors_.size() );
31877       pScissors    = scissors_.data();
31878       return *this;
31879     }
31880 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31881 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
31882 
operator VkPipelineViewportStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo31883     explicit operator VkPipelineViewportStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
31884     {
31885       return *reinterpret_cast<const VkPipelineViewportStateCreateInfo *>( this );
31886     }
31887 
operator VkPipelineViewportStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo31888     explicit operator VkPipelineViewportStateCreateInfo &() VULKAN_HPP_NOEXCEPT
31889     {
31890       return *reinterpret_cast<VkPipelineViewportStateCreateInfo *>( this );
31891     }
31892 
31893 #if 14 <= VULKAN_HPP_CPP_VERSION
31894     auto
31895 #else
31896     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
31897                const void * const &,
31898                VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateFlags const &,
31899                uint32_t const &,
31900                const VULKAN_HPP_NAMESPACE::Viewport * const &,
31901                uint32_t const &,
31902                const VULKAN_HPP_NAMESPACE::Rect2D * const &>
31903 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo31904       reflect() const VULKAN_HPP_NOEXCEPT
31905     {
31906       return std::tie( sType, pNext, flags, viewportCount, pViewports, scissorCount, pScissors );
31907     }
31908 
31909 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
31910     auto operator<=>( PipelineViewportStateCreateInfo const & ) const = default;
31911 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo31912     bool operator==( PipelineViewportStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
31913     {
31914       return this->reflect() == rhs.reflect();
31915     }
31916 
operator !=VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo31917     bool operator!=( PipelineViewportStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
31918     {
31919       return this->reflect() != rhs.reflect();
31920     }
31921 #endif
31922 
31923   public:
31924     VULKAN_HPP_NAMESPACE::StructureType                    sType = StructureType::ePipelineViewportStateCreateInfo;
31925     const void *                                           pNext = {};
31926     VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateFlags flags = {};
31927     uint32_t                                               viewportCount = {};
31928     const VULKAN_HPP_NAMESPACE::Viewport *                 pViewports    = {};
31929     uint32_t                                               scissorCount  = {};
31930     const VULKAN_HPP_NAMESPACE::Rect2D *                   pScissors     = {};
31931   };
31932   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo ) ==
31933                               sizeof( VkPipelineViewportStateCreateInfo ),
31934                             "struct and wrapper have different size!" );
31935   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo>::value,
31936                             "struct wrapper is not a standard layout!" );
31937   VULKAN_HPP_STATIC_ASSERT(
31938     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo>::value,
31939     "PipelineViewportStateCreateInfo is not nothrow_move_constructible!" );
31940 
31941   template <>
31942   struct CppType<StructureType, StructureType::ePipelineViewportStateCreateInfo>
31943   {
31944     using Type = PipelineViewportStateCreateInfo;
31945   };
31946 
31947   struct PipelineRasterizationStateCreateInfo
31948   {
31949     using NativeType = VkPipelineRasterizationStateCreateInfo;
31950 
31951     static const bool                                  allowDuplicate = false;
31952     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
31953       StructureType::ePipelineRasterizationStateCreateInfo;
31954 
31955 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineRasterizationStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo31956     VULKAN_HPP_CONSTEXPR PipelineRasterizationStateCreateInfo(
31957       VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateFlags flags_                   = {},
31958       VULKAN_HPP_NAMESPACE::Bool32                                depthClampEnable_        = {},
31959       VULKAN_HPP_NAMESPACE::Bool32                                rasterizerDiscardEnable_ = {},
31960       VULKAN_HPP_NAMESPACE::PolygonMode   polygonMode_             = VULKAN_HPP_NAMESPACE::PolygonMode::eFill,
31961       VULKAN_HPP_NAMESPACE::CullModeFlags cullMode_                = {},
31962       VULKAN_HPP_NAMESPACE::FrontFace     frontFace_               = VULKAN_HPP_NAMESPACE::FrontFace::eCounterClockwise,
31963       VULKAN_HPP_NAMESPACE::Bool32        depthBiasEnable_         = {},
31964       float                               depthBiasConstantFactor_ = {},
31965       float                               depthBiasClamp_          = {},
31966       float                               depthBiasSlopeFactor_    = {},
31967       float                               lineWidth_               = {} ) VULKAN_HPP_NOEXCEPT
31968       : flags( flags_ )
31969       , depthClampEnable( depthClampEnable_ )
31970       , rasterizerDiscardEnable( rasterizerDiscardEnable_ )
31971       , polygonMode( polygonMode_ )
31972       , cullMode( cullMode_ )
31973       , frontFace( frontFace_ )
31974       , depthBiasEnable( depthBiasEnable_ )
31975       , depthBiasConstantFactor( depthBiasConstantFactor_ )
31976       , depthBiasClamp( depthBiasClamp_ )
31977       , depthBiasSlopeFactor( depthBiasSlopeFactor_ )
31978       , lineWidth( lineWidth_ )
31979     {}
31980 
31981     VULKAN_HPP_CONSTEXPR PipelineRasterizationStateCreateInfo( PipelineRasterizationStateCreateInfo const & rhs )
31982       VULKAN_HPP_NOEXCEPT = default;
31983 
PipelineRasterizationStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo31984     PipelineRasterizationStateCreateInfo( VkPipelineRasterizationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
31985       : PipelineRasterizationStateCreateInfo( *reinterpret_cast<PipelineRasterizationStateCreateInfo const *>( &rhs ) )
31986     {}
31987 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31988 
31989     PipelineRasterizationStateCreateInfo &
31990       operator=( PipelineRasterizationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31991 
31992     PipelineRasterizationStateCreateInfo &
operator =VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo31993       operator=( VkPipelineRasterizationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
31994     {
31995       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo const *>( &rhs );
31996       return *this;
31997     }
31998 
31999 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo32000     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
32001     {
32002       pNext = pNext_;
32003       return *this;
32004     }
32005 
32006     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo32007       setFlags( VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
32008     {
32009       flags = flags_;
32010       return *this;
32011     }
32012 
32013     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo &
setDepthClampEnableVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo32014                             setDepthClampEnable( VULKAN_HPP_NAMESPACE::Bool32 depthClampEnable_ ) VULKAN_HPP_NOEXCEPT
32015     {
32016       depthClampEnable = depthClampEnable_;
32017       return *this;
32018     }
32019 
32020     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo &
setRasterizerDiscardEnableVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo32021       setRasterizerDiscardEnable( VULKAN_HPP_NAMESPACE::Bool32 rasterizerDiscardEnable_ ) VULKAN_HPP_NOEXCEPT
32022     {
32023       rasterizerDiscardEnable = rasterizerDiscardEnable_;
32024       return *this;
32025     }
32026 
32027     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo &
setPolygonModeVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo32028                             setPolygonMode( VULKAN_HPP_NAMESPACE::PolygonMode polygonMode_ ) VULKAN_HPP_NOEXCEPT
32029     {
32030       polygonMode = polygonMode_;
32031       return *this;
32032     }
32033 
32034     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo &
setCullModeVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo32035                             setCullMode( VULKAN_HPP_NAMESPACE::CullModeFlags cullMode_ ) VULKAN_HPP_NOEXCEPT
32036     {
32037       cullMode = cullMode_;
32038       return *this;
32039     }
32040 
32041     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo &
setFrontFaceVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo32042                             setFrontFace( VULKAN_HPP_NAMESPACE::FrontFace frontFace_ ) VULKAN_HPP_NOEXCEPT
32043     {
32044       frontFace = frontFace_;
32045       return *this;
32046     }
32047 
32048     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo &
setDepthBiasEnableVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo32049                             setDepthBiasEnable( VULKAN_HPP_NAMESPACE::Bool32 depthBiasEnable_ ) VULKAN_HPP_NOEXCEPT
32050     {
32051       depthBiasEnable = depthBiasEnable_;
32052       return *this;
32053     }
32054 
32055     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo &
setDepthBiasConstantFactorVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo32056                             setDepthBiasConstantFactor( float depthBiasConstantFactor_ ) VULKAN_HPP_NOEXCEPT
32057     {
32058       depthBiasConstantFactor = depthBiasConstantFactor_;
32059       return *this;
32060     }
32061 
32062     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo &
setDepthBiasClampVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo32063                             setDepthBiasClamp( float depthBiasClamp_ ) VULKAN_HPP_NOEXCEPT
32064     {
32065       depthBiasClamp = depthBiasClamp_;
32066       return *this;
32067     }
32068 
32069     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo &
setDepthBiasSlopeFactorVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo32070                             setDepthBiasSlopeFactor( float depthBiasSlopeFactor_ ) VULKAN_HPP_NOEXCEPT
32071     {
32072       depthBiasSlopeFactor = depthBiasSlopeFactor_;
32073       return *this;
32074     }
32075 
setLineWidthVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo32076     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setLineWidth( float lineWidth_ ) VULKAN_HPP_NOEXCEPT
32077     {
32078       lineWidth = lineWidth_;
32079       return *this;
32080     }
32081 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
32082 
operator VkPipelineRasterizationStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo32083     explicit operator VkPipelineRasterizationStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
32084     {
32085       return *reinterpret_cast<const VkPipelineRasterizationStateCreateInfo *>( this );
32086     }
32087 
operator VkPipelineRasterizationStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo32088     explicit operator VkPipelineRasterizationStateCreateInfo &() VULKAN_HPP_NOEXCEPT
32089     {
32090       return *reinterpret_cast<VkPipelineRasterizationStateCreateInfo *>( this );
32091     }
32092 
32093 #if 14 <= VULKAN_HPP_CPP_VERSION
32094     auto
32095 #else
32096     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
32097                const void * const &,
32098                VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateFlags const &,
32099                VULKAN_HPP_NAMESPACE::Bool32 const &,
32100                VULKAN_HPP_NAMESPACE::Bool32 const &,
32101                VULKAN_HPP_NAMESPACE::PolygonMode const &,
32102                VULKAN_HPP_NAMESPACE::CullModeFlags const &,
32103                VULKAN_HPP_NAMESPACE::FrontFace const &,
32104                VULKAN_HPP_NAMESPACE::Bool32 const &,
32105                float const &,
32106                float const &,
32107                float const &,
32108                float const &>
32109 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo32110       reflect() const VULKAN_HPP_NOEXCEPT
32111     {
32112       return std::tie( sType,
32113                        pNext,
32114                        flags,
32115                        depthClampEnable,
32116                        rasterizerDiscardEnable,
32117                        polygonMode,
32118                        cullMode,
32119                        frontFace,
32120                        depthBiasEnable,
32121                        depthBiasConstantFactor,
32122                        depthBiasClamp,
32123                        depthBiasSlopeFactor,
32124                        lineWidth );
32125     }
32126 
32127 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
32128     auto operator<=>( PipelineRasterizationStateCreateInfo const & ) const = default;
32129 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo32130     bool operator==( PipelineRasterizationStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
32131     {
32132       return this->reflect() == rhs.reflect();
32133     }
32134 
operator !=VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo32135     bool operator!=( PipelineRasterizationStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
32136     {
32137       return this->reflect() != rhs.reflect();
32138     }
32139 #endif
32140 
32141   public:
32142     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRasterizationStateCreateInfo;
32143     const void *                        pNext = {};
32144     VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateFlags flags                   = {};
32145     VULKAN_HPP_NAMESPACE::Bool32                                depthClampEnable        = {};
32146     VULKAN_HPP_NAMESPACE::Bool32                                rasterizerDiscardEnable = {};
32147     VULKAN_HPP_NAMESPACE::PolygonMode                           polygonMode = VULKAN_HPP_NAMESPACE::PolygonMode::eFill;
32148     VULKAN_HPP_NAMESPACE::CullModeFlags                         cullMode    = {};
32149     VULKAN_HPP_NAMESPACE::FrontFace frontFace               = VULKAN_HPP_NAMESPACE::FrontFace::eCounterClockwise;
32150     VULKAN_HPP_NAMESPACE::Bool32    depthBiasEnable         = {};
32151     float                           depthBiasConstantFactor = {};
32152     float                           depthBiasClamp          = {};
32153     float                           depthBiasSlopeFactor    = {};
32154     float                           lineWidth               = {};
32155   };
32156   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo ) ==
32157                               sizeof( VkPipelineRasterizationStateCreateInfo ),
32158                             "struct and wrapper have different size!" );
32159   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo>::value,
32160                             "struct wrapper is not a standard layout!" );
32161   VULKAN_HPP_STATIC_ASSERT(
32162     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo>::value,
32163     "PipelineRasterizationStateCreateInfo is not nothrow_move_constructible!" );
32164 
32165   template <>
32166   struct CppType<StructureType, StructureType::ePipelineRasterizationStateCreateInfo>
32167   {
32168     using Type = PipelineRasterizationStateCreateInfo;
32169   };
32170 
32171   struct PipelineMultisampleStateCreateInfo
32172   {
32173     using NativeType = VkPipelineMultisampleStateCreateInfo;
32174 
32175     static const bool                                  allowDuplicate = false;
32176     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
32177       StructureType::ePipelineMultisampleStateCreateInfo;
32178 
32179 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineMultisampleStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo32180     VULKAN_HPP_CONSTEXPR PipelineMultisampleStateCreateInfo(
32181       VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateFlags flags_ = {},
32182       VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples_  = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1,
32183       VULKAN_HPP_NAMESPACE::Bool32              sampleShadingEnable_   = {},
32184       float                                     minSampleShading_      = {},
32185       const VULKAN_HPP_NAMESPACE::SampleMask *  pSampleMask_           = {},
32186       VULKAN_HPP_NAMESPACE::Bool32              alphaToCoverageEnable_ = {},
32187       VULKAN_HPP_NAMESPACE::Bool32              alphaToOneEnable_      = {} ) VULKAN_HPP_NOEXCEPT
32188       : flags( flags_ )
32189       , rasterizationSamples( rasterizationSamples_ )
32190       , sampleShadingEnable( sampleShadingEnable_ )
32191       , minSampleShading( minSampleShading_ )
32192       , pSampleMask( pSampleMask_ )
32193       , alphaToCoverageEnable( alphaToCoverageEnable_ )
32194       , alphaToOneEnable( alphaToOneEnable_ )
32195     {}
32196 
32197     VULKAN_HPP_CONSTEXPR PipelineMultisampleStateCreateInfo( PipelineMultisampleStateCreateInfo const & rhs )
32198       VULKAN_HPP_NOEXCEPT = default;
32199 
PipelineMultisampleStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo32200     PipelineMultisampleStateCreateInfo( VkPipelineMultisampleStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
32201       : PipelineMultisampleStateCreateInfo( *reinterpret_cast<PipelineMultisampleStateCreateInfo const *>( &rhs ) )
32202     {}
32203 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
32204 
32205     PipelineMultisampleStateCreateInfo &
32206       operator=( PipelineMultisampleStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32207 
32208     PipelineMultisampleStateCreateInfo &
operator =VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo32209       operator=( VkPipelineMultisampleStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
32210     {
32211       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo const *>( &rhs );
32212       return *this;
32213     }
32214 
32215 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo32216     VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
32217     {
32218       pNext = pNext_;
32219       return *this;
32220     }
32221 
32222     VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo32223       setFlags( VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
32224     {
32225       flags = flags_;
32226       return *this;
32227     }
32228 
32229     VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo &
setRasterizationSamplesVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo32230       setRasterizationSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples_ ) VULKAN_HPP_NOEXCEPT
32231     {
32232       rasterizationSamples = rasterizationSamples_;
32233       return *this;
32234     }
32235 
32236     VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo &
setSampleShadingEnableVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo32237       setSampleShadingEnable( VULKAN_HPP_NAMESPACE::Bool32 sampleShadingEnable_ ) VULKAN_HPP_NOEXCEPT
32238     {
32239       sampleShadingEnable = sampleShadingEnable_;
32240       return *this;
32241     }
32242 
32243     VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo &
setMinSampleShadingVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo32244                             setMinSampleShading( float minSampleShading_ ) VULKAN_HPP_NOEXCEPT
32245     {
32246       minSampleShading = minSampleShading_;
32247       return *this;
32248     }
32249 
32250     VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo &
setPSampleMaskVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo32251                             setPSampleMask( const VULKAN_HPP_NAMESPACE::SampleMask * pSampleMask_ ) VULKAN_HPP_NOEXCEPT
32252     {
32253       pSampleMask = pSampleMask_;
32254       return *this;
32255     }
32256 
32257     VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo &
setAlphaToCoverageEnableVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo32258       setAlphaToCoverageEnable( VULKAN_HPP_NAMESPACE::Bool32 alphaToCoverageEnable_ ) VULKAN_HPP_NOEXCEPT
32259     {
32260       alphaToCoverageEnable = alphaToCoverageEnable_;
32261       return *this;
32262     }
32263 
32264     VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo &
setAlphaToOneEnableVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo32265                             setAlphaToOneEnable( VULKAN_HPP_NAMESPACE::Bool32 alphaToOneEnable_ ) VULKAN_HPP_NOEXCEPT
32266     {
32267       alphaToOneEnable = alphaToOneEnable_;
32268       return *this;
32269     }
32270 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
32271 
operator VkPipelineMultisampleStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo32272     explicit operator VkPipelineMultisampleStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
32273     {
32274       return *reinterpret_cast<const VkPipelineMultisampleStateCreateInfo *>( this );
32275     }
32276 
operator VkPipelineMultisampleStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo32277     explicit operator VkPipelineMultisampleStateCreateInfo &() VULKAN_HPP_NOEXCEPT
32278     {
32279       return *reinterpret_cast<VkPipelineMultisampleStateCreateInfo *>( this );
32280     }
32281 
32282 #if 14 <= VULKAN_HPP_CPP_VERSION
32283     auto
32284 #else
32285     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
32286                const void * const &,
32287                VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateFlags const &,
32288                VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &,
32289                VULKAN_HPP_NAMESPACE::Bool32 const &,
32290                float const &,
32291                const VULKAN_HPP_NAMESPACE::SampleMask * const &,
32292                VULKAN_HPP_NAMESPACE::Bool32 const &,
32293                VULKAN_HPP_NAMESPACE::Bool32 const &>
32294 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo32295       reflect() const VULKAN_HPP_NOEXCEPT
32296     {
32297       return std::tie( sType,
32298                        pNext,
32299                        flags,
32300                        rasterizationSamples,
32301                        sampleShadingEnable,
32302                        minSampleShading,
32303                        pSampleMask,
32304                        alphaToCoverageEnable,
32305                        alphaToOneEnable );
32306     }
32307 
32308 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
32309     auto operator<=>( PipelineMultisampleStateCreateInfo const & ) const = default;
32310 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo32311     bool operator==( PipelineMultisampleStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
32312     {
32313       return this->reflect() == rhs.reflect();
32314     }
32315 
operator !=VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo32316     bool operator!=( PipelineMultisampleStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
32317     {
32318       return this->reflect() != rhs.reflect();
32319     }
32320 #endif
32321 
32322   public:
32323     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineMultisampleStateCreateInfo;
32324     const void *                        pNext = {};
32325     VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateFlags flags = {};
32326     VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples  = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
32327     VULKAN_HPP_NAMESPACE::Bool32              sampleShadingEnable   = {};
32328     float                                     minSampleShading      = {};
32329     const VULKAN_HPP_NAMESPACE::SampleMask *  pSampleMask           = {};
32330     VULKAN_HPP_NAMESPACE::Bool32              alphaToCoverageEnable = {};
32331     VULKAN_HPP_NAMESPACE::Bool32              alphaToOneEnable      = {};
32332   };
32333   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo ) ==
32334                               sizeof( VkPipelineMultisampleStateCreateInfo ),
32335                             "struct and wrapper have different size!" );
32336   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo>::value,
32337                             "struct wrapper is not a standard layout!" );
32338   VULKAN_HPP_STATIC_ASSERT(
32339     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo>::value,
32340     "PipelineMultisampleStateCreateInfo is not nothrow_move_constructible!" );
32341 
32342   template <>
32343   struct CppType<StructureType, StructureType::ePipelineMultisampleStateCreateInfo>
32344   {
32345     using Type = PipelineMultisampleStateCreateInfo;
32346   };
32347 
32348   struct StencilOpState
32349   {
32350     using NativeType = VkStencilOpState;
32351 
32352 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
32353     VULKAN_HPP_CONSTEXPR
StencilOpStateVULKAN_HPP_NAMESPACE::StencilOpState32354       StencilOpState( VULKAN_HPP_NAMESPACE::StencilOp failOp_      = VULKAN_HPP_NAMESPACE::StencilOp::eKeep,
32355                       VULKAN_HPP_NAMESPACE::StencilOp passOp_      = VULKAN_HPP_NAMESPACE::StencilOp::eKeep,
32356                       VULKAN_HPP_NAMESPACE::StencilOp depthFailOp_ = VULKAN_HPP_NAMESPACE::StencilOp::eKeep,
32357                       VULKAN_HPP_NAMESPACE::CompareOp compareOp_   = VULKAN_HPP_NAMESPACE::CompareOp::eNever,
32358                       uint32_t                        compareMask_ = {},
32359                       uint32_t                        writeMask_   = {},
32360                       uint32_t                        reference_   = {} ) VULKAN_HPP_NOEXCEPT
32361       : failOp( failOp_ )
32362       , passOp( passOp_ )
32363       , depthFailOp( depthFailOp_ )
32364       , compareOp( compareOp_ )
32365       , compareMask( compareMask_ )
32366       , writeMask( writeMask_ )
32367       , reference( reference_ )
32368     {}
32369 
32370     VULKAN_HPP_CONSTEXPR StencilOpState( StencilOpState const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32371 
StencilOpStateVULKAN_HPP_NAMESPACE::StencilOpState32372     StencilOpState( VkStencilOpState const & rhs ) VULKAN_HPP_NOEXCEPT
32373       : StencilOpState( *reinterpret_cast<StencilOpState const *>( &rhs ) )
32374     {}
32375 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
32376 
32377     StencilOpState & operator=( StencilOpState const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32378 
operator =VULKAN_HPP_NAMESPACE::StencilOpState32379     StencilOpState & operator=( VkStencilOpState const & rhs ) VULKAN_HPP_NOEXCEPT
32380     {
32381       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::StencilOpState const *>( &rhs );
32382       return *this;
32383     }
32384 
32385 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setFailOpVULKAN_HPP_NAMESPACE::StencilOpState32386     VULKAN_HPP_CONSTEXPR_14 StencilOpState & setFailOp( VULKAN_HPP_NAMESPACE::StencilOp failOp_ ) VULKAN_HPP_NOEXCEPT
32387     {
32388       failOp = failOp_;
32389       return *this;
32390     }
32391 
setPassOpVULKAN_HPP_NAMESPACE::StencilOpState32392     VULKAN_HPP_CONSTEXPR_14 StencilOpState & setPassOp( VULKAN_HPP_NAMESPACE::StencilOp passOp_ ) VULKAN_HPP_NOEXCEPT
32393     {
32394       passOp = passOp_;
32395       return *this;
32396     }
32397 
32398     VULKAN_HPP_CONSTEXPR_14 StencilOpState &
setDepthFailOpVULKAN_HPP_NAMESPACE::StencilOpState32399                             setDepthFailOp( VULKAN_HPP_NAMESPACE::StencilOp depthFailOp_ ) VULKAN_HPP_NOEXCEPT
32400     {
32401       depthFailOp = depthFailOp_;
32402       return *this;
32403     }
32404 
32405     VULKAN_HPP_CONSTEXPR_14 StencilOpState &
setCompareOpVULKAN_HPP_NAMESPACE::StencilOpState32406                             setCompareOp( VULKAN_HPP_NAMESPACE::CompareOp compareOp_ ) VULKAN_HPP_NOEXCEPT
32407     {
32408       compareOp = compareOp_;
32409       return *this;
32410     }
32411 
setCompareMaskVULKAN_HPP_NAMESPACE::StencilOpState32412     VULKAN_HPP_CONSTEXPR_14 StencilOpState & setCompareMask( uint32_t compareMask_ ) VULKAN_HPP_NOEXCEPT
32413     {
32414       compareMask = compareMask_;
32415       return *this;
32416     }
32417 
setWriteMaskVULKAN_HPP_NAMESPACE::StencilOpState32418     VULKAN_HPP_CONSTEXPR_14 StencilOpState & setWriteMask( uint32_t writeMask_ ) VULKAN_HPP_NOEXCEPT
32419     {
32420       writeMask = writeMask_;
32421       return *this;
32422     }
32423 
setReferenceVULKAN_HPP_NAMESPACE::StencilOpState32424     VULKAN_HPP_CONSTEXPR_14 StencilOpState & setReference( uint32_t reference_ ) VULKAN_HPP_NOEXCEPT
32425     {
32426       reference = reference_;
32427       return *this;
32428     }
32429 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
32430 
operator VkStencilOpState const&VULKAN_HPP_NAMESPACE::StencilOpState32431     explicit operator VkStencilOpState const &() const VULKAN_HPP_NOEXCEPT
32432     {
32433       return *reinterpret_cast<const VkStencilOpState *>( this );
32434     }
32435 
operator VkStencilOpState&VULKAN_HPP_NAMESPACE::StencilOpState32436     explicit operator VkStencilOpState &() VULKAN_HPP_NOEXCEPT
32437     {
32438       return *reinterpret_cast<VkStencilOpState *>( this );
32439     }
32440 
32441 #if 14 <= VULKAN_HPP_CPP_VERSION
32442     auto
32443 #else
32444     std::tuple<VULKAN_HPP_NAMESPACE::StencilOp const &,
32445                VULKAN_HPP_NAMESPACE::StencilOp const &,
32446                VULKAN_HPP_NAMESPACE::StencilOp const &,
32447                VULKAN_HPP_NAMESPACE::CompareOp const &,
32448                uint32_t const &,
32449                uint32_t const &,
32450                uint32_t const &>
32451 #endif
reflectVULKAN_HPP_NAMESPACE::StencilOpState32452       reflect() const VULKAN_HPP_NOEXCEPT
32453     {
32454       return std::tie( failOp, passOp, depthFailOp, compareOp, compareMask, writeMask, reference );
32455     }
32456 
32457 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
32458     auto operator<=>( StencilOpState const & ) const = default;
32459 #else
operator ==VULKAN_HPP_NAMESPACE::StencilOpState32460     bool operator==( StencilOpState const & rhs ) const VULKAN_HPP_NOEXCEPT
32461     {
32462       return this->reflect() == rhs.reflect();
32463     }
32464 
operator !=VULKAN_HPP_NAMESPACE::StencilOpState32465     bool operator!=( StencilOpState const & rhs ) const VULKAN_HPP_NOEXCEPT
32466     {
32467       return this->reflect() != rhs.reflect();
32468     }
32469 #endif
32470 
32471   public:
32472     VULKAN_HPP_NAMESPACE::StencilOp failOp      = VULKAN_HPP_NAMESPACE::StencilOp::eKeep;
32473     VULKAN_HPP_NAMESPACE::StencilOp passOp      = VULKAN_HPP_NAMESPACE::StencilOp::eKeep;
32474     VULKAN_HPP_NAMESPACE::StencilOp depthFailOp = VULKAN_HPP_NAMESPACE::StencilOp::eKeep;
32475     VULKAN_HPP_NAMESPACE::CompareOp compareOp   = VULKAN_HPP_NAMESPACE::CompareOp::eNever;
32476     uint32_t                        compareMask = {};
32477     uint32_t                        writeMask   = {};
32478     uint32_t                        reference   = {};
32479   };
32480   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::StencilOpState ) == sizeof( VkStencilOpState ),
32481                             "struct and wrapper have different size!" );
32482   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::StencilOpState>::value,
32483                             "struct wrapper is not a standard layout!" );
32484   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::StencilOpState>::value,
32485                             "StencilOpState is not nothrow_move_constructible!" );
32486 
32487   struct PipelineDepthStencilStateCreateInfo
32488   {
32489     using NativeType = VkPipelineDepthStencilStateCreateInfo;
32490 
32491     static const bool                                  allowDuplicate = false;
32492     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
32493       StructureType::ePipelineDepthStencilStateCreateInfo;
32494 
32495 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineDepthStencilStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo32496     VULKAN_HPP_CONSTEXPR PipelineDepthStencilStateCreateInfo(
32497       VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateFlags flags_            = {},
32498       VULKAN_HPP_NAMESPACE::Bool32                               depthTestEnable_  = {},
32499       VULKAN_HPP_NAMESPACE::Bool32                               depthWriteEnable_ = {},
32500       VULKAN_HPP_NAMESPACE::CompareOp      depthCompareOp_        = VULKAN_HPP_NAMESPACE::CompareOp::eNever,
32501       VULKAN_HPP_NAMESPACE::Bool32         depthBoundsTestEnable_ = {},
32502       VULKAN_HPP_NAMESPACE::Bool32         stencilTestEnable_     = {},
32503       VULKAN_HPP_NAMESPACE::StencilOpState front_                 = {},
32504       VULKAN_HPP_NAMESPACE::StencilOpState back_                  = {},
32505       float                                minDepthBounds_        = {},
32506       float                                maxDepthBounds_        = {} ) VULKAN_HPP_NOEXCEPT
32507       : flags( flags_ )
32508       , depthTestEnable( depthTestEnable_ )
32509       , depthWriteEnable( depthWriteEnable_ )
32510       , depthCompareOp( depthCompareOp_ )
32511       , depthBoundsTestEnable( depthBoundsTestEnable_ )
32512       , stencilTestEnable( stencilTestEnable_ )
32513       , front( front_ )
32514       , back( back_ )
32515       , minDepthBounds( minDepthBounds_ )
32516       , maxDepthBounds( maxDepthBounds_ )
32517     {}
32518 
32519     VULKAN_HPP_CONSTEXPR PipelineDepthStencilStateCreateInfo( PipelineDepthStencilStateCreateInfo const & rhs )
32520       VULKAN_HPP_NOEXCEPT = default;
32521 
PipelineDepthStencilStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo32522     PipelineDepthStencilStateCreateInfo( VkPipelineDepthStencilStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
32523       : PipelineDepthStencilStateCreateInfo( *reinterpret_cast<PipelineDepthStencilStateCreateInfo const *>( &rhs ) )
32524     {}
32525 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
32526 
32527     PipelineDepthStencilStateCreateInfo &
32528       operator=( PipelineDepthStencilStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32529 
32530     PipelineDepthStencilStateCreateInfo &
operator =VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo32531       operator=( VkPipelineDepthStencilStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
32532     {
32533       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo const *>( &rhs );
32534       return *this;
32535     }
32536 
32537 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo32538     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
32539     {
32540       pNext = pNext_;
32541       return *this;
32542     }
32543 
32544     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo32545       setFlags( VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
32546     {
32547       flags = flags_;
32548       return *this;
32549     }
32550 
32551     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo &
setDepthTestEnableVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo32552                             setDepthTestEnable( VULKAN_HPP_NAMESPACE::Bool32 depthTestEnable_ ) VULKAN_HPP_NOEXCEPT
32553     {
32554       depthTestEnable = depthTestEnable_;
32555       return *this;
32556     }
32557 
32558     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo &
setDepthWriteEnableVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo32559                             setDepthWriteEnable( VULKAN_HPP_NAMESPACE::Bool32 depthWriteEnable_ ) VULKAN_HPP_NOEXCEPT
32560     {
32561       depthWriteEnable = depthWriteEnable_;
32562       return *this;
32563     }
32564 
32565     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo &
setDepthCompareOpVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo32566                             setDepthCompareOp( VULKAN_HPP_NAMESPACE::CompareOp depthCompareOp_ ) VULKAN_HPP_NOEXCEPT
32567     {
32568       depthCompareOp = depthCompareOp_;
32569       return *this;
32570     }
32571 
32572     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo &
setDepthBoundsTestEnableVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo32573       setDepthBoundsTestEnable( VULKAN_HPP_NAMESPACE::Bool32 depthBoundsTestEnable_ ) VULKAN_HPP_NOEXCEPT
32574     {
32575       depthBoundsTestEnable = depthBoundsTestEnable_;
32576       return *this;
32577     }
32578 
32579     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo &
setStencilTestEnableVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo32580                             setStencilTestEnable( VULKAN_HPP_NAMESPACE::Bool32 stencilTestEnable_ ) VULKAN_HPP_NOEXCEPT
32581     {
32582       stencilTestEnable = stencilTestEnable_;
32583       return *this;
32584     }
32585 
32586     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo &
setFrontVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo32587                             setFront( VULKAN_HPP_NAMESPACE::StencilOpState const & front_ ) VULKAN_HPP_NOEXCEPT
32588     {
32589       front = front_;
32590       return *this;
32591     }
32592 
32593     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo &
setBackVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo32594                             setBack( VULKAN_HPP_NAMESPACE::StencilOpState const & back_ ) VULKAN_HPP_NOEXCEPT
32595     {
32596       back = back_;
32597       return *this;
32598     }
32599 
32600     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo &
setMinDepthBoundsVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo32601                             setMinDepthBounds( float minDepthBounds_ ) VULKAN_HPP_NOEXCEPT
32602     {
32603       minDepthBounds = minDepthBounds_;
32604       return *this;
32605     }
32606 
32607     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo &
setMaxDepthBoundsVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo32608                             setMaxDepthBounds( float maxDepthBounds_ ) VULKAN_HPP_NOEXCEPT
32609     {
32610       maxDepthBounds = maxDepthBounds_;
32611       return *this;
32612     }
32613 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
32614 
operator VkPipelineDepthStencilStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo32615     explicit operator VkPipelineDepthStencilStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
32616     {
32617       return *reinterpret_cast<const VkPipelineDepthStencilStateCreateInfo *>( this );
32618     }
32619 
operator VkPipelineDepthStencilStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo32620     explicit operator VkPipelineDepthStencilStateCreateInfo &() VULKAN_HPP_NOEXCEPT
32621     {
32622       return *reinterpret_cast<VkPipelineDepthStencilStateCreateInfo *>( this );
32623     }
32624 
32625 #if 14 <= VULKAN_HPP_CPP_VERSION
32626     auto
32627 #else
32628     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
32629                const void * const &,
32630                VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateFlags const &,
32631                VULKAN_HPP_NAMESPACE::Bool32 const &,
32632                VULKAN_HPP_NAMESPACE::Bool32 const &,
32633                VULKAN_HPP_NAMESPACE::CompareOp const &,
32634                VULKAN_HPP_NAMESPACE::Bool32 const &,
32635                VULKAN_HPP_NAMESPACE::Bool32 const &,
32636                VULKAN_HPP_NAMESPACE::StencilOpState const &,
32637                VULKAN_HPP_NAMESPACE::StencilOpState const &,
32638                float const &,
32639                float const &>
32640 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo32641       reflect() const VULKAN_HPP_NOEXCEPT
32642     {
32643       return std::tie( sType,
32644                        pNext,
32645                        flags,
32646                        depthTestEnable,
32647                        depthWriteEnable,
32648                        depthCompareOp,
32649                        depthBoundsTestEnable,
32650                        stencilTestEnable,
32651                        front,
32652                        back,
32653                        minDepthBounds,
32654                        maxDepthBounds );
32655     }
32656 
32657 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
32658     auto operator<=>( PipelineDepthStencilStateCreateInfo const & ) const = default;
32659 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo32660     bool operator==( PipelineDepthStencilStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
32661     {
32662       return this->reflect() == rhs.reflect();
32663     }
32664 
operator !=VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo32665     bool operator!=( PipelineDepthStencilStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
32666     {
32667       return this->reflect() != rhs.reflect();
32668     }
32669 #endif
32670 
32671   public:
32672     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineDepthStencilStateCreateInfo;
32673     const void *                        pNext = {};
32674     VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateFlags flags            = {};
32675     VULKAN_HPP_NAMESPACE::Bool32                               depthTestEnable  = {};
32676     VULKAN_HPP_NAMESPACE::Bool32                               depthWriteEnable = {};
32677     VULKAN_HPP_NAMESPACE::CompareOp                            depthCompareOp = VULKAN_HPP_NAMESPACE::CompareOp::eNever;
32678     VULKAN_HPP_NAMESPACE::Bool32                               depthBoundsTestEnable = {};
32679     VULKAN_HPP_NAMESPACE::Bool32                               stencilTestEnable     = {};
32680     VULKAN_HPP_NAMESPACE::StencilOpState                       front                 = {};
32681     VULKAN_HPP_NAMESPACE::StencilOpState                       back                  = {};
32682     float                                                      minDepthBounds        = {};
32683     float                                                      maxDepthBounds        = {};
32684   };
32685   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo ) ==
32686                               sizeof( VkPipelineDepthStencilStateCreateInfo ),
32687                             "struct and wrapper have different size!" );
32688   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo>::value,
32689                             "struct wrapper is not a standard layout!" );
32690   VULKAN_HPP_STATIC_ASSERT(
32691     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo>::value,
32692     "PipelineDepthStencilStateCreateInfo is not nothrow_move_constructible!" );
32693 
32694   template <>
32695   struct CppType<StructureType, StructureType::ePipelineDepthStencilStateCreateInfo>
32696   {
32697     using Type = PipelineDepthStencilStateCreateInfo;
32698   };
32699 
32700   struct PipelineColorBlendAttachmentState
32701   {
32702     using NativeType = VkPipelineColorBlendAttachmentState;
32703 
32704 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineColorBlendAttachmentStateVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState32705     VULKAN_HPP_CONSTEXPR PipelineColorBlendAttachmentState(
32706       VULKAN_HPP_NAMESPACE::Bool32              blendEnable_         = {},
32707       VULKAN_HPP_NAMESPACE::BlendFactor         srcColorBlendFactor_ = VULKAN_HPP_NAMESPACE::BlendFactor::eZero,
32708       VULKAN_HPP_NAMESPACE::BlendFactor         dstColorBlendFactor_ = VULKAN_HPP_NAMESPACE::BlendFactor::eZero,
32709       VULKAN_HPP_NAMESPACE::BlendOp             colorBlendOp_        = VULKAN_HPP_NAMESPACE::BlendOp::eAdd,
32710       VULKAN_HPP_NAMESPACE::BlendFactor         srcAlphaBlendFactor_ = VULKAN_HPP_NAMESPACE::BlendFactor::eZero,
32711       VULKAN_HPP_NAMESPACE::BlendFactor         dstAlphaBlendFactor_ = VULKAN_HPP_NAMESPACE::BlendFactor::eZero,
32712       VULKAN_HPP_NAMESPACE::BlendOp             alphaBlendOp_        = VULKAN_HPP_NAMESPACE::BlendOp::eAdd,
32713       VULKAN_HPP_NAMESPACE::ColorComponentFlags colorWriteMask_      = {} ) VULKAN_HPP_NOEXCEPT
32714       : blendEnable( blendEnable_ )
32715       , srcColorBlendFactor( srcColorBlendFactor_ )
32716       , dstColorBlendFactor( dstColorBlendFactor_ )
32717       , colorBlendOp( colorBlendOp_ )
32718       , srcAlphaBlendFactor( srcAlphaBlendFactor_ )
32719       , dstAlphaBlendFactor( dstAlphaBlendFactor_ )
32720       , alphaBlendOp( alphaBlendOp_ )
32721       , colorWriteMask( colorWriteMask_ )
32722     {}
32723 
32724     VULKAN_HPP_CONSTEXPR
32725       PipelineColorBlendAttachmentState( PipelineColorBlendAttachmentState const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32726 
PipelineColorBlendAttachmentStateVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState32727     PipelineColorBlendAttachmentState( VkPipelineColorBlendAttachmentState const & rhs ) VULKAN_HPP_NOEXCEPT
32728       : PipelineColorBlendAttachmentState( *reinterpret_cast<PipelineColorBlendAttachmentState const *>( &rhs ) )
32729     {}
32730 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
32731 
32732     PipelineColorBlendAttachmentState &
32733       operator=( PipelineColorBlendAttachmentState const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32734 
operator =VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState32735     PipelineColorBlendAttachmentState & operator=( VkPipelineColorBlendAttachmentState const & rhs ) VULKAN_HPP_NOEXCEPT
32736     {
32737       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState const *>( &rhs );
32738       return *this;
32739     }
32740 
32741 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
32742     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState &
setBlendEnableVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState32743                             setBlendEnable( VULKAN_HPP_NAMESPACE::Bool32 blendEnable_ ) VULKAN_HPP_NOEXCEPT
32744     {
32745       blendEnable = blendEnable_;
32746       return *this;
32747     }
32748 
32749     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState &
setSrcColorBlendFactorVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState32750       setSrcColorBlendFactor( VULKAN_HPP_NAMESPACE::BlendFactor srcColorBlendFactor_ ) VULKAN_HPP_NOEXCEPT
32751     {
32752       srcColorBlendFactor = srcColorBlendFactor_;
32753       return *this;
32754     }
32755 
32756     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState &
setDstColorBlendFactorVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState32757       setDstColorBlendFactor( VULKAN_HPP_NAMESPACE::BlendFactor dstColorBlendFactor_ ) VULKAN_HPP_NOEXCEPT
32758     {
32759       dstColorBlendFactor = dstColorBlendFactor_;
32760       return *this;
32761     }
32762 
32763     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState &
setColorBlendOpVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState32764                             setColorBlendOp( VULKAN_HPP_NAMESPACE::BlendOp colorBlendOp_ ) VULKAN_HPP_NOEXCEPT
32765     {
32766       colorBlendOp = colorBlendOp_;
32767       return *this;
32768     }
32769 
32770     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState &
setSrcAlphaBlendFactorVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState32771       setSrcAlphaBlendFactor( VULKAN_HPP_NAMESPACE::BlendFactor srcAlphaBlendFactor_ ) VULKAN_HPP_NOEXCEPT
32772     {
32773       srcAlphaBlendFactor = srcAlphaBlendFactor_;
32774       return *this;
32775     }
32776 
32777     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState &
setDstAlphaBlendFactorVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState32778       setDstAlphaBlendFactor( VULKAN_HPP_NAMESPACE::BlendFactor dstAlphaBlendFactor_ ) VULKAN_HPP_NOEXCEPT
32779     {
32780       dstAlphaBlendFactor = dstAlphaBlendFactor_;
32781       return *this;
32782     }
32783 
32784     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState &
setAlphaBlendOpVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState32785                             setAlphaBlendOp( VULKAN_HPP_NAMESPACE::BlendOp alphaBlendOp_ ) VULKAN_HPP_NOEXCEPT
32786     {
32787       alphaBlendOp = alphaBlendOp_;
32788       return *this;
32789     }
32790 
32791     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState &
setColorWriteMaskVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState32792       setColorWriteMask( VULKAN_HPP_NAMESPACE::ColorComponentFlags colorWriteMask_ ) VULKAN_HPP_NOEXCEPT
32793     {
32794       colorWriteMask = colorWriteMask_;
32795       return *this;
32796     }
32797 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
32798 
operator VkPipelineColorBlendAttachmentState const&VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState32799     explicit operator VkPipelineColorBlendAttachmentState const &() const VULKAN_HPP_NOEXCEPT
32800     {
32801       return *reinterpret_cast<const VkPipelineColorBlendAttachmentState *>( this );
32802     }
32803 
operator VkPipelineColorBlendAttachmentState&VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState32804     explicit operator VkPipelineColorBlendAttachmentState &() VULKAN_HPP_NOEXCEPT
32805     {
32806       return *reinterpret_cast<VkPipelineColorBlendAttachmentState *>( this );
32807     }
32808 
32809 #if 14 <= VULKAN_HPP_CPP_VERSION
32810     auto
32811 #else
32812     std::tuple<VULKAN_HPP_NAMESPACE::Bool32 const &,
32813                VULKAN_HPP_NAMESPACE::BlendFactor const &,
32814                VULKAN_HPP_NAMESPACE::BlendFactor const &,
32815                VULKAN_HPP_NAMESPACE::BlendOp const &,
32816                VULKAN_HPP_NAMESPACE::BlendFactor const &,
32817                VULKAN_HPP_NAMESPACE::BlendFactor const &,
32818                VULKAN_HPP_NAMESPACE::BlendOp const &,
32819                VULKAN_HPP_NAMESPACE::ColorComponentFlags const &>
32820 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState32821       reflect() const VULKAN_HPP_NOEXCEPT
32822     {
32823       return std::tie( blendEnable,
32824                        srcColorBlendFactor,
32825                        dstColorBlendFactor,
32826                        colorBlendOp,
32827                        srcAlphaBlendFactor,
32828                        dstAlphaBlendFactor,
32829                        alphaBlendOp,
32830                        colorWriteMask );
32831     }
32832 
32833 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
32834     auto operator<=>( PipelineColorBlendAttachmentState const & ) const = default;
32835 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState32836     bool operator==( PipelineColorBlendAttachmentState const & rhs ) const VULKAN_HPP_NOEXCEPT
32837     {
32838       return this->reflect() == rhs.reflect();
32839     }
32840 
operator !=VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState32841     bool operator!=( PipelineColorBlendAttachmentState const & rhs ) const VULKAN_HPP_NOEXCEPT
32842     {
32843       return this->reflect() != rhs.reflect();
32844     }
32845 #endif
32846 
32847   public:
32848     VULKAN_HPP_NAMESPACE::Bool32              blendEnable         = {};
32849     VULKAN_HPP_NAMESPACE::BlendFactor         srcColorBlendFactor = VULKAN_HPP_NAMESPACE::BlendFactor::eZero;
32850     VULKAN_HPP_NAMESPACE::BlendFactor         dstColorBlendFactor = VULKAN_HPP_NAMESPACE::BlendFactor::eZero;
32851     VULKAN_HPP_NAMESPACE::BlendOp             colorBlendOp        = VULKAN_HPP_NAMESPACE::BlendOp::eAdd;
32852     VULKAN_HPP_NAMESPACE::BlendFactor         srcAlphaBlendFactor = VULKAN_HPP_NAMESPACE::BlendFactor::eZero;
32853     VULKAN_HPP_NAMESPACE::BlendFactor         dstAlphaBlendFactor = VULKAN_HPP_NAMESPACE::BlendFactor::eZero;
32854     VULKAN_HPP_NAMESPACE::BlendOp             alphaBlendOp        = VULKAN_HPP_NAMESPACE::BlendOp::eAdd;
32855     VULKAN_HPP_NAMESPACE::ColorComponentFlags colorWriteMask      = {};
32856   };
32857   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState ) ==
32858                               sizeof( VkPipelineColorBlendAttachmentState ),
32859                             "struct and wrapper have different size!" );
32860   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState>::value,
32861                             "struct wrapper is not a standard layout!" );
32862   VULKAN_HPP_STATIC_ASSERT(
32863     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState>::value,
32864     "PipelineColorBlendAttachmentState is not nothrow_move_constructible!" );
32865 
32866   struct PipelineColorBlendStateCreateInfo
32867   {
32868     using NativeType = VkPipelineColorBlendStateCreateInfo;
32869 
32870     static const bool                                  allowDuplicate = false;
32871     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
32872       StructureType::ePipelineColorBlendStateCreateInfo;
32873 
32874 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineColorBlendStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo32875     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo(
32876       VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateFlags        flags_         = {},
32877       VULKAN_HPP_NAMESPACE::Bool32                                    logicOpEnable_ = {},
32878       VULKAN_HPP_NAMESPACE::LogicOp                                   logicOp_ = VULKAN_HPP_NAMESPACE::LogicOp::eClear,
32879       uint32_t                                                        attachmentCount_ = {},
32880       const VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState * pAttachments_    = {},
32881       std::array<float, 4> const &                                    blendConstants_  = {} ) VULKAN_HPP_NOEXCEPT
32882       : flags( flags_ )
32883       , logicOpEnable( logicOpEnable_ )
32884       , logicOp( logicOp_ )
32885       , attachmentCount( attachmentCount_ )
32886       , pAttachments( pAttachments_ )
32887       , blendConstants( blendConstants_ )
32888     {}
32889 
32890     VULKAN_HPP_CONSTEXPR_14
32891       PipelineColorBlendStateCreateInfo( PipelineColorBlendStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32892 
PipelineColorBlendStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo32893     PipelineColorBlendStateCreateInfo( VkPipelineColorBlendStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
32894       : PipelineColorBlendStateCreateInfo( *reinterpret_cast<PipelineColorBlendStateCreateInfo const *>( &rhs ) )
32895     {}
32896 
32897 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineColorBlendStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo32898     PipelineColorBlendStateCreateInfo(
32899       VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateFlags flags_,
32900       VULKAN_HPP_NAMESPACE::Bool32                             logicOpEnable_,
32901       VULKAN_HPP_NAMESPACE::LogicOp                            logicOp_,
32902       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<
32903         const VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState> const & attachments_,
32904       std::array<float, 4> const &                                             blendConstants_ = {} )
32905       : flags( flags_ )
32906       , logicOpEnable( logicOpEnable_ )
32907       , logicOp( logicOp_ )
32908       , attachmentCount( static_cast<uint32_t>( attachments_.size() ) )
32909       , pAttachments( attachments_.data() )
32910       , blendConstants( blendConstants_ )
32911     {}
32912 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32913 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
32914 
32915     PipelineColorBlendStateCreateInfo &
32916       operator=( PipelineColorBlendStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32917 
operator =VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo32918     PipelineColorBlendStateCreateInfo & operator=( VkPipelineColorBlendStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
32919     {
32920       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo const *>( &rhs );
32921       return *this;
32922     }
32923 
32924 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo32925     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
32926     {
32927       pNext = pNext_;
32928       return *this;
32929     }
32930 
32931     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo32932       setFlags( VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
32933     {
32934       flags = flags_;
32935       return *this;
32936     }
32937 
32938     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo &
setLogicOpEnableVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo32939                             setLogicOpEnable( VULKAN_HPP_NAMESPACE::Bool32 logicOpEnable_ ) VULKAN_HPP_NOEXCEPT
32940     {
32941       logicOpEnable = logicOpEnable_;
32942       return *this;
32943     }
32944 
32945     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo &
setLogicOpVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo32946                             setLogicOp( VULKAN_HPP_NAMESPACE::LogicOp logicOp_ ) VULKAN_HPP_NOEXCEPT
32947     {
32948       logicOp = logicOp_;
32949       return *this;
32950     }
32951 
32952     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo &
setAttachmentCountVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo32953                             setAttachmentCount( uint32_t attachmentCount_ ) VULKAN_HPP_NOEXCEPT
32954     {
32955       attachmentCount = attachmentCount_;
32956       return *this;
32957     }
32958 
setPAttachmentsVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo32959     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo & setPAttachments(
32960       const VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState * pAttachments_ ) VULKAN_HPP_NOEXCEPT
32961     {
32962       pAttachments = pAttachments_;
32963       return *this;
32964     }
32965 
32966 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAttachmentsVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo32967     PipelineColorBlendStateCreateInfo & setAttachments(
32968       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<
32969         const VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState> const & attachments_ ) VULKAN_HPP_NOEXCEPT
32970     {
32971       attachmentCount = static_cast<uint32_t>( attachments_.size() );
32972       pAttachments    = attachments_.data();
32973       return *this;
32974     }
32975 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32976 
32977     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo &
setBlendConstantsVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo32978                             setBlendConstants( std::array<float, 4> blendConstants_ ) VULKAN_HPP_NOEXCEPT
32979     {
32980       blendConstants = blendConstants_;
32981       return *this;
32982     }
32983 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
32984 
operator VkPipelineColorBlendStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo32985     explicit operator VkPipelineColorBlendStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
32986     {
32987       return *reinterpret_cast<const VkPipelineColorBlendStateCreateInfo *>( this );
32988     }
32989 
operator VkPipelineColorBlendStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo32990     explicit operator VkPipelineColorBlendStateCreateInfo &() VULKAN_HPP_NOEXCEPT
32991     {
32992       return *reinterpret_cast<VkPipelineColorBlendStateCreateInfo *>( this );
32993     }
32994 
32995 #if 14 <= VULKAN_HPP_CPP_VERSION
32996     auto
32997 #else
32998     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
32999                const void * const &,
33000                VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateFlags const &,
33001                VULKAN_HPP_NAMESPACE::Bool32 const &,
33002                VULKAN_HPP_NAMESPACE::LogicOp const &,
33003                uint32_t const &,
33004                const VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState * const &,
33005                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 4> const &>
33006 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo33007       reflect() const VULKAN_HPP_NOEXCEPT
33008     {
33009       return std::tie( sType, pNext, flags, logicOpEnable, logicOp, attachmentCount, pAttachments, blendConstants );
33010     }
33011 
33012 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
33013     auto operator<=>( PipelineColorBlendStateCreateInfo const & ) const = default;
33014 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo33015     bool operator==( PipelineColorBlendStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
33016     {
33017       return this->reflect() == rhs.reflect();
33018     }
33019 
operator !=VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo33020     bool operator!=( PipelineColorBlendStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
33021     {
33022       return this->reflect() != rhs.reflect();
33023     }
33024 #endif
33025 
33026   public:
33027     VULKAN_HPP_NAMESPACE::StructureType                      sType = StructureType::ePipelineColorBlendStateCreateInfo;
33028     const void *                                             pNext = {};
33029     VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateFlags flags = {};
33030     VULKAN_HPP_NAMESPACE::Bool32                             logicOpEnable   = {};
33031     VULKAN_HPP_NAMESPACE::LogicOp                            logicOp         = VULKAN_HPP_NAMESPACE::LogicOp::eClear;
33032     uint32_t                                                 attachmentCount = {};
33033     const VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState * pAttachments   = {};
33034     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 4>                  blendConstants = {};
33035   };
33036   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo ) ==
33037                               sizeof( VkPipelineColorBlendStateCreateInfo ),
33038                             "struct and wrapper have different size!" );
33039   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo>::value,
33040                             "struct wrapper is not a standard layout!" );
33041   VULKAN_HPP_STATIC_ASSERT(
33042     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo>::value,
33043     "PipelineColorBlendStateCreateInfo is not nothrow_move_constructible!" );
33044 
33045   template <>
33046   struct CppType<StructureType, StructureType::ePipelineColorBlendStateCreateInfo>
33047   {
33048     using Type = PipelineColorBlendStateCreateInfo;
33049   };
33050 
33051   struct PipelineDynamicStateCreateInfo
33052   {
33053     using NativeType = VkPipelineDynamicStateCreateInfo;
33054 
33055     static const bool                                  allowDuplicate = false;
33056     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineDynamicStateCreateInfo;
33057 
33058 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineDynamicStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo33059     VULKAN_HPP_CONSTEXPR PipelineDynamicStateCreateInfo(
33060       VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateFlags flags_             = {},
33061       uint32_t                                              dynamicStateCount_ = {},
33062       const VULKAN_HPP_NAMESPACE::DynamicState *            pDynamicStates_    = {} ) VULKAN_HPP_NOEXCEPT
33063       : flags( flags_ )
33064       , dynamicStateCount( dynamicStateCount_ )
33065       , pDynamicStates( pDynamicStates_ )
33066     {}
33067 
33068     VULKAN_HPP_CONSTEXPR
33069       PipelineDynamicStateCreateInfo( PipelineDynamicStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33070 
PipelineDynamicStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo33071     PipelineDynamicStateCreateInfo( VkPipelineDynamicStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
33072       : PipelineDynamicStateCreateInfo( *reinterpret_cast<PipelineDynamicStateCreateInfo const *>( &rhs ) )
33073     {}
33074 
33075 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineDynamicStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo33076     PipelineDynamicStateCreateInfo(
33077       VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateFlags                                           flags_,
33078       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DynamicState> const & dynamicStates_ )
33079       : flags( flags_ )
33080       , dynamicStateCount( static_cast<uint32_t>( dynamicStates_.size() ) )
33081       , pDynamicStates( dynamicStates_.data() )
33082     {}
33083 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33084 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
33085 
33086     PipelineDynamicStateCreateInfo &
33087       operator=( PipelineDynamicStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33088 
operator =VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo33089     PipelineDynamicStateCreateInfo & operator=( VkPipelineDynamicStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
33090     {
33091       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo const *>( &rhs );
33092       return *this;
33093     }
33094 
33095 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo33096     VULKAN_HPP_CONSTEXPR_14 PipelineDynamicStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
33097     {
33098       pNext = pNext_;
33099       return *this;
33100     }
33101 
33102     VULKAN_HPP_CONSTEXPR_14 PipelineDynamicStateCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo33103                             setFlags( VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
33104     {
33105       flags = flags_;
33106       return *this;
33107     }
33108 
33109     VULKAN_HPP_CONSTEXPR_14 PipelineDynamicStateCreateInfo &
setDynamicStateCountVULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo33110                             setDynamicStateCount( uint32_t dynamicStateCount_ ) VULKAN_HPP_NOEXCEPT
33111     {
33112       dynamicStateCount = dynamicStateCount_;
33113       return *this;
33114     }
33115 
33116     VULKAN_HPP_CONSTEXPR_14 PipelineDynamicStateCreateInfo &
setPDynamicStatesVULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo33117       setPDynamicStates( const VULKAN_HPP_NAMESPACE::DynamicState * pDynamicStates_ ) VULKAN_HPP_NOEXCEPT
33118     {
33119       pDynamicStates = pDynamicStates_;
33120       return *this;
33121     }
33122 
33123 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDynamicStatesVULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo33124     PipelineDynamicStateCreateInfo & setDynamicStates(
33125       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DynamicState> const & dynamicStates_ )
33126       VULKAN_HPP_NOEXCEPT
33127     {
33128       dynamicStateCount = static_cast<uint32_t>( dynamicStates_.size() );
33129       pDynamicStates    = dynamicStates_.data();
33130       return *this;
33131     }
33132 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33133 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
33134 
operator VkPipelineDynamicStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo33135     explicit operator VkPipelineDynamicStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
33136     {
33137       return *reinterpret_cast<const VkPipelineDynamicStateCreateInfo *>( this );
33138     }
33139 
operator VkPipelineDynamicStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo33140     explicit operator VkPipelineDynamicStateCreateInfo &() VULKAN_HPP_NOEXCEPT
33141     {
33142       return *reinterpret_cast<VkPipelineDynamicStateCreateInfo *>( this );
33143     }
33144 
33145 #if 14 <= VULKAN_HPP_CPP_VERSION
33146     auto
33147 #else
33148     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
33149                const void * const &,
33150                VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateFlags const &,
33151                uint32_t const &,
33152                const VULKAN_HPP_NAMESPACE::DynamicState * const &>
33153 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo33154       reflect() const VULKAN_HPP_NOEXCEPT
33155     {
33156       return std::tie( sType, pNext, flags, dynamicStateCount, pDynamicStates );
33157     }
33158 
33159 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
33160     auto operator<=>( PipelineDynamicStateCreateInfo const & ) const = default;
33161 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo33162     bool operator==( PipelineDynamicStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
33163     {
33164       return this->reflect() == rhs.reflect();
33165     }
33166 
operator !=VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo33167     bool operator!=( PipelineDynamicStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
33168     {
33169       return this->reflect() != rhs.reflect();
33170     }
33171 #endif
33172 
33173   public:
33174     VULKAN_HPP_NAMESPACE::StructureType                   sType = StructureType::ePipelineDynamicStateCreateInfo;
33175     const void *                                          pNext = {};
33176     VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateFlags flags = {};
33177     uint32_t                                              dynamicStateCount = {};
33178     const VULKAN_HPP_NAMESPACE::DynamicState *            pDynamicStates    = {};
33179   };
33180   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo ) ==
33181                               sizeof( VkPipelineDynamicStateCreateInfo ),
33182                             "struct and wrapper have different size!" );
33183   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo>::value,
33184                             "struct wrapper is not a standard layout!" );
33185   VULKAN_HPP_STATIC_ASSERT(
33186     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo>::value,
33187     "PipelineDynamicStateCreateInfo is not nothrow_move_constructible!" );
33188 
33189   template <>
33190   struct CppType<StructureType, StructureType::ePipelineDynamicStateCreateInfo>
33191   {
33192     using Type = PipelineDynamicStateCreateInfo;
33193   };
33194 
33195   struct GraphicsPipelineCreateInfo
33196   {
33197     using NativeType = VkGraphicsPipelineCreateInfo;
33198 
33199     static const bool                                  allowDuplicate = false;
33200     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eGraphicsPipelineCreateInfo;
33201 
33202 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
GraphicsPipelineCreateInfoVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo33203     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo(
33204       VULKAN_HPP_NAMESPACE::PipelineCreateFlags                          flags_               = {},
33205       uint32_t                                                           stageCount_          = {},
33206       const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo *        pStages_             = {},
33207       const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo *   pVertexInputState_   = {},
33208       const VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo * pInputAssemblyState_ = {},
33209       const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo *  pTessellationState_  = {},
33210       const VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo *      pViewportState_      = {},
33211       const VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo * pRasterizationState_ = {},
33212       const VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo *   pMultisampleState_   = {},
33213       const VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo *  pDepthStencilState_  = {},
33214       const VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo *    pColorBlendState_    = {},
33215       const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo *       pDynamicState_       = {},
33216       VULKAN_HPP_NAMESPACE::PipelineLayout                               layout_              = {},
33217       VULKAN_HPP_NAMESPACE::RenderPass                                   renderPass_          = {},
33218       uint32_t                                                           subpass_             = {},
33219       VULKAN_HPP_NAMESPACE::Pipeline                                     basePipelineHandle_  = {},
33220       int32_t                                                            basePipelineIndex_   = {} ) VULKAN_HPP_NOEXCEPT
33221       : flags( flags_ )
33222       , stageCount( stageCount_ )
33223       , pStages( pStages_ )
33224       , pVertexInputState( pVertexInputState_ )
33225       , pInputAssemblyState( pInputAssemblyState_ )
33226       , pTessellationState( pTessellationState_ )
33227       , pViewportState( pViewportState_ )
33228       , pRasterizationState( pRasterizationState_ )
33229       , pMultisampleState( pMultisampleState_ )
33230       , pDepthStencilState( pDepthStencilState_ )
33231       , pColorBlendState( pColorBlendState_ )
33232       , pDynamicState( pDynamicState_ )
33233       , layout( layout_ )
33234       , renderPass( renderPass_ )
33235       , subpass( subpass_ )
33236       , basePipelineHandle( basePipelineHandle_ )
33237       , basePipelineIndex( basePipelineIndex_ )
33238     {}
33239 
33240     VULKAN_HPP_CONSTEXPR_14
33241       GraphicsPipelineCreateInfo( GraphicsPipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33242 
GraphicsPipelineCreateInfoVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo33243     GraphicsPipelineCreateInfo( VkGraphicsPipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
33244       : GraphicsPipelineCreateInfo( *reinterpret_cast<GraphicsPipelineCreateInfo const *>( &rhs ) )
33245     {}
33246 
33247 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
GraphicsPipelineCreateInfoVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo33248     GraphicsPipelineCreateInfo(
33249       VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_,
33250       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo> const &
33251                                                                          stages_,
33252       const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo *   pVertexInputState_   = {},
33253       const VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo * pInputAssemblyState_ = {},
33254       const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo *  pTessellationState_  = {},
33255       const VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo *      pViewportState_      = {},
33256       const VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo * pRasterizationState_ = {},
33257       const VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo *   pMultisampleState_   = {},
33258       const VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo *  pDepthStencilState_  = {},
33259       const VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo *    pColorBlendState_    = {},
33260       const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo *       pDynamicState_       = {},
33261       VULKAN_HPP_NAMESPACE::PipelineLayout                               layout_              = {},
33262       VULKAN_HPP_NAMESPACE::RenderPass                                   renderPass_          = {},
33263       uint32_t                                                           subpass_             = {},
33264       VULKAN_HPP_NAMESPACE::Pipeline                                     basePipelineHandle_  = {},
33265       int32_t                                                            basePipelineIndex_   = {} )
33266       : flags( flags_ )
33267       , stageCount( static_cast<uint32_t>( stages_.size() ) )
33268       , pStages( stages_.data() )
33269       , pVertexInputState( pVertexInputState_ )
33270       , pInputAssemblyState( pInputAssemblyState_ )
33271       , pTessellationState( pTessellationState_ )
33272       , pViewportState( pViewportState_ )
33273       , pRasterizationState( pRasterizationState_ )
33274       , pMultisampleState( pMultisampleState_ )
33275       , pDepthStencilState( pDepthStencilState_ )
33276       , pColorBlendState( pColorBlendState_ )
33277       , pDynamicState( pDynamicState_ )
33278       , layout( layout_ )
33279       , renderPass( renderPass_ )
33280       , subpass( subpass_ )
33281       , basePipelineHandle( basePipelineHandle_ )
33282       , basePipelineIndex( basePipelineIndex_ )
33283     {}
33284 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33285 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
33286 
33287     GraphicsPipelineCreateInfo & operator=( GraphicsPipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33288 
operator =VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo33289     GraphicsPipelineCreateInfo & operator=( VkGraphicsPipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
33290     {
33291       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo const *>( &rhs );
33292       return *this;
33293     }
33294 
33295 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo33296     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
33297     {
33298       pNext = pNext_;
33299       return *this;
33300     }
33301 
33302     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo33303                             setFlags( VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
33304     {
33305       flags = flags_;
33306       return *this;
33307     }
33308 
setStageCountVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo33309     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setStageCount( uint32_t stageCount_ ) VULKAN_HPP_NOEXCEPT
33310     {
33311       stageCount = stageCount_;
33312       return *this;
33313     }
33314 
33315     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo &
setPStagesVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo33316       setPStages( const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * pStages_ ) VULKAN_HPP_NOEXCEPT
33317     {
33318       pStages = pStages_;
33319       return *this;
33320     }
33321 
33322 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setStagesVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo33323     GraphicsPipelineCreateInfo & setStages(
33324       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo> const &
33325         stages_ ) VULKAN_HPP_NOEXCEPT
33326     {
33327       stageCount = static_cast<uint32_t>( stages_.size() );
33328       pStages    = stages_.data();
33329       return *this;
33330     }
33331 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33332 
setPVertexInputStateVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo33333     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPVertexInputState(
33334       const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo * pVertexInputState_ ) VULKAN_HPP_NOEXCEPT
33335     {
33336       pVertexInputState = pVertexInputState_;
33337       return *this;
33338     }
33339 
setPInputAssemblyStateVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo33340     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPInputAssemblyState(
33341       const VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo * pInputAssemblyState_ ) VULKAN_HPP_NOEXCEPT
33342     {
33343       pInputAssemblyState = pInputAssemblyState_;
33344       return *this;
33345     }
33346 
setPTessellationStateVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo33347     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPTessellationState(
33348       const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo * pTessellationState_ ) VULKAN_HPP_NOEXCEPT
33349     {
33350       pTessellationState = pTessellationState_;
33351       return *this;
33352     }
33353 
setPViewportStateVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo33354     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPViewportState(
33355       const VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo * pViewportState_ ) VULKAN_HPP_NOEXCEPT
33356     {
33357       pViewportState = pViewportState_;
33358       return *this;
33359     }
33360 
setPRasterizationStateVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo33361     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPRasterizationState(
33362       const VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo * pRasterizationState_ ) VULKAN_HPP_NOEXCEPT
33363     {
33364       pRasterizationState = pRasterizationState_;
33365       return *this;
33366     }
33367 
setPMultisampleStateVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo33368     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPMultisampleState(
33369       const VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo * pMultisampleState_ ) VULKAN_HPP_NOEXCEPT
33370     {
33371       pMultisampleState = pMultisampleState_;
33372       return *this;
33373     }
33374 
setPDepthStencilStateVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo33375     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPDepthStencilState(
33376       const VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo * pDepthStencilState_ ) VULKAN_HPP_NOEXCEPT
33377     {
33378       pDepthStencilState = pDepthStencilState_;
33379       return *this;
33380     }
33381 
setPColorBlendStateVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo33382     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPColorBlendState(
33383       const VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo * pColorBlendState_ ) VULKAN_HPP_NOEXCEPT
33384     {
33385       pColorBlendState = pColorBlendState_;
33386       return *this;
33387     }
33388 
setPDynamicStateVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo33389     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPDynamicState(
33390       const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo * pDynamicState_ ) VULKAN_HPP_NOEXCEPT
33391     {
33392       pDynamicState = pDynamicState_;
33393       return *this;
33394     }
33395 
33396     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo &
setLayoutVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo33397                             setLayout( VULKAN_HPP_NAMESPACE::PipelineLayout layout_ ) VULKAN_HPP_NOEXCEPT
33398     {
33399       layout = layout_;
33400       return *this;
33401     }
33402 
33403     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo &
setRenderPassVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo33404                             setRenderPass( VULKAN_HPP_NAMESPACE::RenderPass renderPass_ ) VULKAN_HPP_NOEXCEPT
33405     {
33406       renderPass = renderPass_;
33407       return *this;
33408     }
33409 
setSubpassVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo33410     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setSubpass( uint32_t subpass_ ) VULKAN_HPP_NOEXCEPT
33411     {
33412       subpass = subpass_;
33413       return *this;
33414     }
33415 
33416     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo &
setBasePipelineHandleVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo33417       setBasePipelineHandle( VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ ) VULKAN_HPP_NOEXCEPT
33418     {
33419       basePipelineHandle = basePipelineHandle_;
33420       return *this;
33421     }
33422 
33423     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo &
setBasePipelineIndexVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo33424                             setBasePipelineIndex( int32_t basePipelineIndex_ ) VULKAN_HPP_NOEXCEPT
33425     {
33426       basePipelineIndex = basePipelineIndex_;
33427       return *this;
33428     }
33429 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
33430 
operator VkGraphicsPipelineCreateInfo const&VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo33431     explicit operator VkGraphicsPipelineCreateInfo const &() const VULKAN_HPP_NOEXCEPT
33432     {
33433       return *reinterpret_cast<const VkGraphicsPipelineCreateInfo *>( this );
33434     }
33435 
operator VkGraphicsPipelineCreateInfo&VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo33436     explicit operator VkGraphicsPipelineCreateInfo &() VULKAN_HPP_NOEXCEPT
33437     {
33438       return *reinterpret_cast<VkGraphicsPipelineCreateInfo *>( this );
33439     }
33440 
33441 #if 14 <= VULKAN_HPP_CPP_VERSION
33442     auto
33443 #else
33444     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
33445                const void * const &,
33446                VULKAN_HPP_NAMESPACE::PipelineCreateFlags const &,
33447                uint32_t const &,
33448                const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * const &,
33449                const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo * const &,
33450                const VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo * const &,
33451                const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo * const &,
33452                const VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo * const &,
33453                const VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo * const &,
33454                const VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo * const &,
33455                const VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo * const &,
33456                const VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo * const &,
33457                const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo * const &,
33458                VULKAN_HPP_NAMESPACE::PipelineLayout const &,
33459                VULKAN_HPP_NAMESPACE::RenderPass const &,
33460                uint32_t const &,
33461                VULKAN_HPP_NAMESPACE::Pipeline const &,
33462                int32_t const &>
33463 #endif
reflectVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo33464       reflect() const VULKAN_HPP_NOEXCEPT
33465     {
33466       return std::tie( sType,
33467                        pNext,
33468                        flags,
33469                        stageCount,
33470                        pStages,
33471                        pVertexInputState,
33472                        pInputAssemblyState,
33473                        pTessellationState,
33474                        pViewportState,
33475                        pRasterizationState,
33476                        pMultisampleState,
33477                        pDepthStencilState,
33478                        pColorBlendState,
33479                        pDynamicState,
33480                        layout,
33481                        renderPass,
33482                        subpass,
33483                        basePipelineHandle,
33484                        basePipelineIndex );
33485     }
33486 
33487 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
33488     auto operator<=>( GraphicsPipelineCreateInfo const & ) const = default;
33489 #else
operator ==VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo33490     bool operator==( GraphicsPipelineCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
33491     {
33492       return this->reflect() == rhs.reflect();
33493     }
33494 
operator !=VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo33495     bool operator!=( GraphicsPipelineCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
33496     {
33497       return this->reflect() != rhs.reflect();
33498     }
33499 #endif
33500 
33501   public:
33502     VULKAN_HPP_NAMESPACE::StructureType                              sType = StructureType::eGraphicsPipelineCreateInfo;
33503     const void *                                                     pNext = {};
33504     VULKAN_HPP_NAMESPACE::PipelineCreateFlags                        flags = {};
33505     uint32_t                                                         stageCount            = {};
33506     const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo *      pStages               = {};
33507     const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo * pVertexInputState     = {};
33508     const VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo * pInputAssemblyState = {};
33509     const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo *  pTessellationState  = {};
33510     const VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo *      pViewportState      = {};
33511     const VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo * pRasterizationState = {};
33512     const VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo *   pMultisampleState   = {};
33513     const VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo *  pDepthStencilState  = {};
33514     const VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo *    pColorBlendState    = {};
33515     const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo *       pDynamicState       = {};
33516     VULKAN_HPP_NAMESPACE::PipelineLayout                               layout              = {};
33517     VULKAN_HPP_NAMESPACE::RenderPass                                   renderPass          = {};
33518     uint32_t                                                           subpass             = {};
33519     VULKAN_HPP_NAMESPACE::Pipeline                                     basePipelineHandle  = {};
33520     int32_t                                                            basePipelineIndex   = {};
33521   };
33522   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo ) ==
33523                               sizeof( VkGraphicsPipelineCreateInfo ),
33524                             "struct and wrapper have different size!" );
33525   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo>::value,
33526                             "struct wrapper is not a standard layout!" );
33527   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo>::value,
33528                             "GraphicsPipelineCreateInfo is not nothrow_move_constructible!" );
33529 
33530   template <>
33531   struct CppType<StructureType, StructureType::eGraphicsPipelineCreateInfo>
33532   {
33533     using Type = GraphicsPipelineCreateInfo;
33534   };
33535 
33536   struct GraphicsShaderGroupCreateInfoNV
33537   {
33538     using NativeType = VkGraphicsShaderGroupCreateInfoNV;
33539 
33540     static const bool                                  allowDuplicate = false;
33541     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eGraphicsShaderGroupCreateInfoNV;
33542 
33543 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
GraphicsShaderGroupCreateInfoNVVULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV33544     VULKAN_HPP_CONSTEXPR GraphicsShaderGroupCreateInfoNV(
33545       uint32_t                                                          stageCount_         = {},
33546       const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo *       pStages_            = {},
33547       const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo *  pVertexInputState_  = {},
33548       const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo * pTessellationState_ = {} ) VULKAN_HPP_NOEXCEPT
33549       : stageCount( stageCount_ )
33550       , pStages( pStages_ )
33551       , pVertexInputState( pVertexInputState_ )
33552       , pTessellationState( pTessellationState_ )
33553     {}
33554 
33555     VULKAN_HPP_CONSTEXPR
33556       GraphicsShaderGroupCreateInfoNV( GraphicsShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33557 
GraphicsShaderGroupCreateInfoNVVULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV33558     GraphicsShaderGroupCreateInfoNV( VkGraphicsShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
33559       : GraphicsShaderGroupCreateInfoNV( *reinterpret_cast<GraphicsShaderGroupCreateInfoNV const *>( &rhs ) )
33560     {}
33561 
33562 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
GraphicsShaderGroupCreateInfoNVVULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV33563     GraphicsShaderGroupCreateInfoNV(
33564       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo> const &
33565                                                                         stages_,
33566       const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo *  pVertexInputState_  = {},
33567       const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo * pTessellationState_ = {} )
33568       : stageCount( static_cast<uint32_t>( stages_.size() ) )
33569       , pStages( stages_.data() )
33570       , pVertexInputState( pVertexInputState_ )
33571       , pTessellationState( pTessellationState_ )
33572     {}
33573 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33574 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
33575 
33576     GraphicsShaderGroupCreateInfoNV &
33577       operator=( GraphicsShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33578 
operator =VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV33579     GraphicsShaderGroupCreateInfoNV & operator=( VkGraphicsShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
33580     {
33581       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV const *>( &rhs );
33582       return *this;
33583     }
33584 
33585 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV33586     VULKAN_HPP_CONSTEXPR_14 GraphicsShaderGroupCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
33587     {
33588       pNext = pNext_;
33589       return *this;
33590     }
33591 
setStageCountVULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV33592     VULKAN_HPP_CONSTEXPR_14 GraphicsShaderGroupCreateInfoNV & setStageCount( uint32_t stageCount_ ) VULKAN_HPP_NOEXCEPT
33593     {
33594       stageCount = stageCount_;
33595       return *this;
33596     }
33597 
33598     VULKAN_HPP_CONSTEXPR_14 GraphicsShaderGroupCreateInfoNV &
setPStagesVULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV33599       setPStages( const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * pStages_ ) VULKAN_HPP_NOEXCEPT
33600     {
33601       pStages = pStages_;
33602       return *this;
33603     }
33604 
33605 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setStagesVULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV33606     GraphicsShaderGroupCreateInfoNV & setStages(
33607       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo> const &
33608         stages_ ) VULKAN_HPP_NOEXCEPT
33609     {
33610       stageCount = static_cast<uint32_t>( stages_.size() );
33611       pStages    = stages_.data();
33612       return *this;
33613     }
33614 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33615 
setPVertexInputStateVULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV33616     VULKAN_HPP_CONSTEXPR_14 GraphicsShaderGroupCreateInfoNV & setPVertexInputState(
33617       const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo * pVertexInputState_ ) VULKAN_HPP_NOEXCEPT
33618     {
33619       pVertexInputState = pVertexInputState_;
33620       return *this;
33621     }
33622 
setPTessellationStateVULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV33623     VULKAN_HPP_CONSTEXPR_14 GraphicsShaderGroupCreateInfoNV & setPTessellationState(
33624       const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo * pTessellationState_ ) VULKAN_HPP_NOEXCEPT
33625     {
33626       pTessellationState = pTessellationState_;
33627       return *this;
33628     }
33629 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
33630 
operator VkGraphicsShaderGroupCreateInfoNV const&VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV33631     explicit operator VkGraphicsShaderGroupCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
33632     {
33633       return *reinterpret_cast<const VkGraphicsShaderGroupCreateInfoNV *>( this );
33634     }
33635 
operator VkGraphicsShaderGroupCreateInfoNV&VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV33636     explicit operator VkGraphicsShaderGroupCreateInfoNV &() VULKAN_HPP_NOEXCEPT
33637     {
33638       return *reinterpret_cast<VkGraphicsShaderGroupCreateInfoNV *>( this );
33639     }
33640 
33641 #if 14 <= VULKAN_HPP_CPP_VERSION
33642     auto
33643 #else
33644     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
33645                const void * const &,
33646                uint32_t const &,
33647                const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * const &,
33648                const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo * const &,
33649                const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo * const &>
33650 #endif
reflectVULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV33651       reflect() const VULKAN_HPP_NOEXCEPT
33652     {
33653       return std::tie( sType, pNext, stageCount, pStages, pVertexInputState, pTessellationState );
33654     }
33655 
33656 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
33657     auto operator<=>( GraphicsShaderGroupCreateInfoNV const & ) const = default;
33658 #else
operator ==VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV33659     bool operator==( GraphicsShaderGroupCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
33660     {
33661       return this->reflect() == rhs.reflect();
33662     }
33663 
operator !=VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV33664     bool operator!=( GraphicsShaderGroupCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
33665     {
33666       return this->reflect() != rhs.reflect();
33667     }
33668 #endif
33669 
33670   public:
33671     VULKAN_HPP_NAMESPACE::StructureType                         sType = StructureType::eGraphicsShaderGroupCreateInfoNV;
33672     const void *                                                pNext = {};
33673     uint32_t                                                    stageCount               = {};
33674     const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * pStages                  = {};
33675     const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo *  pVertexInputState  = {};
33676     const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo * pTessellationState = {};
33677   };
33678   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV ) ==
33679                               sizeof( VkGraphicsShaderGroupCreateInfoNV ),
33680                             "struct and wrapper have different size!" );
33681   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV>::value,
33682                             "struct wrapper is not a standard layout!" );
33683   VULKAN_HPP_STATIC_ASSERT(
33684     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV>::value,
33685     "GraphicsShaderGroupCreateInfoNV is not nothrow_move_constructible!" );
33686 
33687   template <>
33688   struct CppType<StructureType, StructureType::eGraphicsShaderGroupCreateInfoNV>
33689   {
33690     using Type = GraphicsShaderGroupCreateInfoNV;
33691   };
33692 
33693   struct GraphicsPipelineShaderGroupsCreateInfoNV
33694   {
33695     using NativeType = VkGraphicsPipelineShaderGroupsCreateInfoNV;
33696 
33697     static const bool                                  allowDuplicate = false;
33698     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
33699       StructureType::eGraphicsPipelineShaderGroupsCreateInfoNV;
33700 
33701 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
GraphicsPipelineShaderGroupsCreateInfoNVVULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV33702     VULKAN_HPP_CONSTEXPR GraphicsPipelineShaderGroupsCreateInfoNV(
33703       uint32_t                                                      groupCount_    = {},
33704       const VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV * pGroups_       = {},
33705       uint32_t                                                      pipelineCount_ = {},
33706       const VULKAN_HPP_NAMESPACE::Pipeline *                        pPipelines_    = {} ) VULKAN_HPP_NOEXCEPT
33707       : groupCount( groupCount_ )
33708       , pGroups( pGroups_ )
33709       , pipelineCount( pipelineCount_ )
33710       , pPipelines( pPipelines_ )
33711     {}
33712 
33713     VULKAN_HPP_CONSTEXPR GraphicsPipelineShaderGroupsCreateInfoNV(
33714       GraphicsPipelineShaderGroupsCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33715 
GraphicsPipelineShaderGroupsCreateInfoNVVULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV33716     GraphicsPipelineShaderGroupsCreateInfoNV( VkGraphicsPipelineShaderGroupsCreateInfoNV const & rhs )
33717       VULKAN_HPP_NOEXCEPT
33718       : GraphicsPipelineShaderGroupsCreateInfoNV(
33719           *reinterpret_cast<GraphicsPipelineShaderGroupsCreateInfoNV const *>( &rhs ) )
33720     {}
33721 
33722 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
GraphicsPipelineShaderGroupsCreateInfoNVVULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV33723     GraphicsPipelineShaderGroupsCreateInfoNV(
33724       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV> const &
33725                                                                                                   groups_,
33726       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Pipeline> const & pipelines_ = {} )
33727       : groupCount( static_cast<uint32_t>( groups_.size() ) )
33728       , pGroups( groups_.data() )
33729       , pipelineCount( static_cast<uint32_t>( pipelines_.size() ) )
33730       , pPipelines( pipelines_.data() )
33731     {}
33732 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33733 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
33734 
33735     GraphicsPipelineShaderGroupsCreateInfoNV &
33736       operator=( GraphicsPipelineShaderGroupsCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33737 
33738     GraphicsPipelineShaderGroupsCreateInfoNV &
operator =VULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV33739       operator=( VkGraphicsPipelineShaderGroupsCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
33740     {
33741       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV const *>( &rhs );
33742       return *this;
33743     }
33744 
33745 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
33746     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineShaderGroupsCreateInfoNV &
setPNextVULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV33747                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
33748     {
33749       pNext = pNext_;
33750       return *this;
33751     }
33752 
33753     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineShaderGroupsCreateInfoNV &
setGroupCountVULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV33754                             setGroupCount( uint32_t groupCount_ ) VULKAN_HPP_NOEXCEPT
33755     {
33756       groupCount = groupCount_;
33757       return *this;
33758     }
33759 
33760     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineShaderGroupsCreateInfoNV &
setPGroupsVULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV33761       setPGroups( const VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV * pGroups_ ) VULKAN_HPP_NOEXCEPT
33762     {
33763       pGroups = pGroups_;
33764       return *this;
33765     }
33766 
33767 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setGroupsVULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV33768     GraphicsPipelineShaderGroupsCreateInfoNV & setGroups(
33769       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV> const &
33770         groups_ ) VULKAN_HPP_NOEXCEPT
33771     {
33772       groupCount = static_cast<uint32_t>( groups_.size() );
33773       pGroups    = groups_.data();
33774       return *this;
33775     }
33776 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33777 
33778     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineShaderGroupsCreateInfoNV &
setPipelineCountVULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV33779                             setPipelineCount( uint32_t pipelineCount_ ) VULKAN_HPP_NOEXCEPT
33780     {
33781       pipelineCount = pipelineCount_;
33782       return *this;
33783     }
33784 
33785     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineShaderGroupsCreateInfoNV &
setPPipelinesVULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV33786                             setPPipelines( const VULKAN_HPP_NAMESPACE::Pipeline * pPipelines_ ) VULKAN_HPP_NOEXCEPT
33787     {
33788       pPipelines = pPipelines_;
33789       return *this;
33790     }
33791 
33792 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPipelinesVULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV33793     GraphicsPipelineShaderGroupsCreateInfoNV & setPipelines(
33794       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Pipeline> const & pipelines_ )
33795       VULKAN_HPP_NOEXCEPT
33796     {
33797       pipelineCount = static_cast<uint32_t>( pipelines_.size() );
33798       pPipelines    = pipelines_.data();
33799       return *this;
33800     }
33801 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33802 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
33803 
operator VkGraphicsPipelineShaderGroupsCreateInfoNV const&VULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV33804     explicit operator VkGraphicsPipelineShaderGroupsCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
33805     {
33806       return *reinterpret_cast<const VkGraphicsPipelineShaderGroupsCreateInfoNV *>( this );
33807     }
33808 
operator VkGraphicsPipelineShaderGroupsCreateInfoNV&VULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV33809     explicit operator VkGraphicsPipelineShaderGroupsCreateInfoNV &() VULKAN_HPP_NOEXCEPT
33810     {
33811       return *reinterpret_cast<VkGraphicsPipelineShaderGroupsCreateInfoNV *>( this );
33812     }
33813 
33814 #if 14 <= VULKAN_HPP_CPP_VERSION
33815     auto
33816 #else
33817     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
33818                const void * const &,
33819                uint32_t const &,
33820                const VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV * const &,
33821                uint32_t const &,
33822                const VULKAN_HPP_NAMESPACE::Pipeline * const &>
33823 #endif
reflectVULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV33824       reflect() const VULKAN_HPP_NOEXCEPT
33825     {
33826       return std::tie( sType, pNext, groupCount, pGroups, pipelineCount, pPipelines );
33827     }
33828 
33829 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
33830     auto operator<=>( GraphicsPipelineShaderGroupsCreateInfoNV const & ) const = default;
33831 #else
operator ==VULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV33832     bool operator==( GraphicsPipelineShaderGroupsCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
33833     {
33834       return this->reflect() == rhs.reflect();
33835     }
33836 
operator !=VULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV33837     bool operator!=( GraphicsPipelineShaderGroupsCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
33838     {
33839       return this->reflect() != rhs.reflect();
33840     }
33841 #endif
33842 
33843   public:
33844     VULKAN_HPP_NAMESPACE::StructureType sType      = StructureType::eGraphicsPipelineShaderGroupsCreateInfoNV;
33845     const void *                        pNext      = {};
33846     uint32_t                            groupCount = {};
33847     const VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV * pGroups       = {};
33848     uint32_t                                                      pipelineCount = {};
33849     const VULKAN_HPP_NAMESPACE::Pipeline *                        pPipelines    = {};
33850   };
33851   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV ) ==
33852                               sizeof( VkGraphicsPipelineShaderGroupsCreateInfoNV ),
33853                             "struct and wrapper have different size!" );
33854   VULKAN_HPP_STATIC_ASSERT(
33855     std::is_standard_layout<VULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV>::value,
33856     "struct wrapper is not a standard layout!" );
33857   VULKAN_HPP_STATIC_ASSERT(
33858     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV>::value,
33859     "GraphicsPipelineShaderGroupsCreateInfoNV is not nothrow_move_constructible!" );
33860 
33861   template <>
33862   struct CppType<StructureType, StructureType::eGraphicsPipelineShaderGroupsCreateInfoNV>
33863   {
33864     using Type = GraphicsPipelineShaderGroupsCreateInfoNV;
33865   };
33866 
33867   struct XYColorEXT
33868   {
33869     using NativeType = VkXYColorEXT;
33870 
33871 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
XYColorEXTVULKAN_HPP_NAMESPACE::XYColorEXT33872     VULKAN_HPP_CONSTEXPR XYColorEXT( float x_ = {}, float y_ = {} ) VULKAN_HPP_NOEXCEPT
33873       : x( x_ )
33874       , y( y_ )
33875     {}
33876 
33877     VULKAN_HPP_CONSTEXPR XYColorEXT( XYColorEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33878 
XYColorEXTVULKAN_HPP_NAMESPACE::XYColorEXT33879     XYColorEXT( VkXYColorEXT const & rhs ) VULKAN_HPP_NOEXCEPT
33880       : XYColorEXT( *reinterpret_cast<XYColorEXT const *>( &rhs ) )
33881     {}
33882 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
33883 
33884     XYColorEXT & operator=( XYColorEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33885 
operator =VULKAN_HPP_NAMESPACE::XYColorEXT33886     XYColorEXT & operator=( VkXYColorEXT const & rhs ) VULKAN_HPP_NOEXCEPT
33887     {
33888       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::XYColorEXT const *>( &rhs );
33889       return *this;
33890     }
33891 
33892 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setXVULKAN_HPP_NAMESPACE::XYColorEXT33893     VULKAN_HPP_CONSTEXPR_14 XYColorEXT & setX( float x_ ) VULKAN_HPP_NOEXCEPT
33894     {
33895       x = x_;
33896       return *this;
33897     }
33898 
setYVULKAN_HPP_NAMESPACE::XYColorEXT33899     VULKAN_HPP_CONSTEXPR_14 XYColorEXT & setY( float y_ ) VULKAN_HPP_NOEXCEPT
33900     {
33901       y = y_;
33902       return *this;
33903     }
33904 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
33905 
operator VkXYColorEXT const&VULKAN_HPP_NAMESPACE::XYColorEXT33906     explicit operator VkXYColorEXT const &() const VULKAN_HPP_NOEXCEPT
33907     {
33908       return *reinterpret_cast<const VkXYColorEXT *>( this );
33909     }
33910 
operator VkXYColorEXT&VULKAN_HPP_NAMESPACE::XYColorEXT33911     explicit operator VkXYColorEXT &() VULKAN_HPP_NOEXCEPT
33912     {
33913       return *reinterpret_cast<VkXYColorEXT *>( this );
33914     }
33915 
33916 #if 14 <= VULKAN_HPP_CPP_VERSION
33917     auto
33918 #else
33919     std::tuple<float const &, float const &>
33920 #endif
reflectVULKAN_HPP_NAMESPACE::XYColorEXT33921       reflect() const VULKAN_HPP_NOEXCEPT
33922     {
33923       return std::tie( x, y );
33924     }
33925 
33926 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
33927     auto operator<=>( XYColorEXT const & ) const = default;
33928 #else
operator ==VULKAN_HPP_NAMESPACE::XYColorEXT33929     bool operator==( XYColorEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
33930     {
33931       return this->reflect() == rhs.reflect();
33932     }
33933 
operator !=VULKAN_HPP_NAMESPACE::XYColorEXT33934     bool operator!=( XYColorEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
33935     {
33936       return this->reflect() != rhs.reflect();
33937     }
33938 #endif
33939 
33940   public:
33941     float x = {};
33942     float y = {};
33943   };
33944   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::XYColorEXT ) == sizeof( VkXYColorEXT ),
33945                             "struct and wrapper have different size!" );
33946   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::XYColorEXT>::value,
33947                             "struct wrapper is not a standard layout!" );
33948   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::XYColorEXT>::value,
33949                             "XYColorEXT is not nothrow_move_constructible!" );
33950 
33951   struct HdrMetadataEXT
33952   {
33953     using NativeType = VkHdrMetadataEXT;
33954 
33955     static const bool                                  allowDuplicate = false;
33956     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eHdrMetadataEXT;
33957 
33958 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
HdrMetadataEXTVULKAN_HPP_NAMESPACE::HdrMetadataEXT33959     VULKAN_HPP_CONSTEXPR HdrMetadataEXT( VULKAN_HPP_NAMESPACE::XYColorEXT displayPrimaryRed_    = {},
33960                                          VULKAN_HPP_NAMESPACE::XYColorEXT displayPrimaryGreen_  = {},
33961                                          VULKAN_HPP_NAMESPACE::XYColorEXT displayPrimaryBlue_   = {},
33962                                          VULKAN_HPP_NAMESPACE::XYColorEXT whitePoint_           = {},
33963                                          float                            maxLuminance_         = {},
33964                                          float                            minLuminance_         = {},
33965                                          float                            maxContentLightLevel_ = {},
33966                                          float maxFrameAverageLightLevel_ = {} ) VULKAN_HPP_NOEXCEPT
33967       : displayPrimaryRed( displayPrimaryRed_ )
33968       , displayPrimaryGreen( displayPrimaryGreen_ )
33969       , displayPrimaryBlue( displayPrimaryBlue_ )
33970       , whitePoint( whitePoint_ )
33971       , maxLuminance( maxLuminance_ )
33972       , minLuminance( minLuminance_ )
33973       , maxContentLightLevel( maxContentLightLevel_ )
33974       , maxFrameAverageLightLevel( maxFrameAverageLightLevel_ )
33975     {}
33976 
33977     VULKAN_HPP_CONSTEXPR HdrMetadataEXT( HdrMetadataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33978 
HdrMetadataEXTVULKAN_HPP_NAMESPACE::HdrMetadataEXT33979     HdrMetadataEXT( VkHdrMetadataEXT const & rhs ) VULKAN_HPP_NOEXCEPT
33980       : HdrMetadataEXT( *reinterpret_cast<HdrMetadataEXT const *>( &rhs ) )
33981     {}
33982 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
33983 
33984     HdrMetadataEXT & operator=( HdrMetadataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33985 
operator =VULKAN_HPP_NAMESPACE::HdrMetadataEXT33986     HdrMetadataEXT & operator=( VkHdrMetadataEXT const & rhs ) VULKAN_HPP_NOEXCEPT
33987     {
33988       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::HdrMetadataEXT const *>( &rhs );
33989       return *this;
33990     }
33991 
33992 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::HdrMetadataEXT33993     VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
33994     {
33995       pNext = pNext_;
33996       return *this;
33997     }
33998 
33999     VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT &
setDisplayPrimaryRedVULKAN_HPP_NAMESPACE::HdrMetadataEXT34000       setDisplayPrimaryRed( VULKAN_HPP_NAMESPACE::XYColorEXT const & displayPrimaryRed_ ) VULKAN_HPP_NOEXCEPT
34001     {
34002       displayPrimaryRed = displayPrimaryRed_;
34003       return *this;
34004     }
34005 
34006     VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT &
setDisplayPrimaryGreenVULKAN_HPP_NAMESPACE::HdrMetadataEXT34007       setDisplayPrimaryGreen( VULKAN_HPP_NAMESPACE::XYColorEXT const & displayPrimaryGreen_ ) VULKAN_HPP_NOEXCEPT
34008     {
34009       displayPrimaryGreen = displayPrimaryGreen_;
34010       return *this;
34011     }
34012 
34013     VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT &
setDisplayPrimaryBlueVULKAN_HPP_NAMESPACE::HdrMetadataEXT34014       setDisplayPrimaryBlue( VULKAN_HPP_NAMESPACE::XYColorEXT const & displayPrimaryBlue_ ) VULKAN_HPP_NOEXCEPT
34015     {
34016       displayPrimaryBlue = displayPrimaryBlue_;
34017       return *this;
34018     }
34019 
34020     VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT &
setWhitePointVULKAN_HPP_NAMESPACE::HdrMetadataEXT34021                             setWhitePoint( VULKAN_HPP_NAMESPACE::XYColorEXT const & whitePoint_ ) VULKAN_HPP_NOEXCEPT
34022     {
34023       whitePoint = whitePoint_;
34024       return *this;
34025     }
34026 
setMaxLuminanceVULKAN_HPP_NAMESPACE::HdrMetadataEXT34027     VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setMaxLuminance( float maxLuminance_ ) VULKAN_HPP_NOEXCEPT
34028     {
34029       maxLuminance = maxLuminance_;
34030       return *this;
34031     }
34032 
setMinLuminanceVULKAN_HPP_NAMESPACE::HdrMetadataEXT34033     VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setMinLuminance( float minLuminance_ ) VULKAN_HPP_NOEXCEPT
34034     {
34035       minLuminance = minLuminance_;
34036       return *this;
34037     }
34038 
setMaxContentLightLevelVULKAN_HPP_NAMESPACE::HdrMetadataEXT34039     VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setMaxContentLightLevel( float maxContentLightLevel_ ) VULKAN_HPP_NOEXCEPT
34040     {
34041       maxContentLightLevel = maxContentLightLevel_;
34042       return *this;
34043     }
34044 
34045     VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT &
setMaxFrameAverageLightLevelVULKAN_HPP_NAMESPACE::HdrMetadataEXT34046                             setMaxFrameAverageLightLevel( float maxFrameAverageLightLevel_ ) VULKAN_HPP_NOEXCEPT
34047     {
34048       maxFrameAverageLightLevel = maxFrameAverageLightLevel_;
34049       return *this;
34050     }
34051 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
34052 
operator VkHdrMetadataEXT const&VULKAN_HPP_NAMESPACE::HdrMetadataEXT34053     explicit operator VkHdrMetadataEXT const &() const VULKAN_HPP_NOEXCEPT
34054     {
34055       return *reinterpret_cast<const VkHdrMetadataEXT *>( this );
34056     }
34057 
operator VkHdrMetadataEXT&VULKAN_HPP_NAMESPACE::HdrMetadataEXT34058     explicit operator VkHdrMetadataEXT &() VULKAN_HPP_NOEXCEPT
34059     {
34060       return *reinterpret_cast<VkHdrMetadataEXT *>( this );
34061     }
34062 
34063 #if 14 <= VULKAN_HPP_CPP_VERSION
34064     auto
34065 #else
34066     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
34067                const void * const &,
34068                VULKAN_HPP_NAMESPACE::XYColorEXT const &,
34069                VULKAN_HPP_NAMESPACE::XYColorEXT const &,
34070                VULKAN_HPP_NAMESPACE::XYColorEXT const &,
34071                VULKAN_HPP_NAMESPACE::XYColorEXT const &,
34072                float const &,
34073                float const &,
34074                float const &,
34075                float const &>
34076 #endif
reflectVULKAN_HPP_NAMESPACE::HdrMetadataEXT34077       reflect() const VULKAN_HPP_NOEXCEPT
34078     {
34079       return std::tie( sType,
34080                        pNext,
34081                        displayPrimaryRed,
34082                        displayPrimaryGreen,
34083                        displayPrimaryBlue,
34084                        whitePoint,
34085                        maxLuminance,
34086                        minLuminance,
34087                        maxContentLightLevel,
34088                        maxFrameAverageLightLevel );
34089     }
34090 
34091 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
34092     auto operator<=>( HdrMetadataEXT const & ) const = default;
34093 #else
operator ==VULKAN_HPP_NAMESPACE::HdrMetadataEXT34094     bool operator==( HdrMetadataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
34095     {
34096       return this->reflect() == rhs.reflect();
34097     }
34098 
operator !=VULKAN_HPP_NAMESPACE::HdrMetadataEXT34099     bool operator!=( HdrMetadataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
34100     {
34101       return this->reflect() != rhs.reflect();
34102     }
34103 #endif
34104 
34105   public:
34106     VULKAN_HPP_NAMESPACE::StructureType sType                     = StructureType::eHdrMetadataEXT;
34107     const void *                        pNext                     = {};
34108     VULKAN_HPP_NAMESPACE::XYColorEXT    displayPrimaryRed         = {};
34109     VULKAN_HPP_NAMESPACE::XYColorEXT    displayPrimaryGreen       = {};
34110     VULKAN_HPP_NAMESPACE::XYColorEXT    displayPrimaryBlue        = {};
34111     VULKAN_HPP_NAMESPACE::XYColorEXT    whitePoint                = {};
34112     float                               maxLuminance              = {};
34113     float                               minLuminance              = {};
34114     float                               maxContentLightLevel      = {};
34115     float                               maxFrameAverageLightLevel = {};
34116   };
34117   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::HdrMetadataEXT ) == sizeof( VkHdrMetadataEXT ),
34118                             "struct and wrapper have different size!" );
34119   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::HdrMetadataEXT>::value,
34120                             "struct wrapper is not a standard layout!" );
34121   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::HdrMetadataEXT>::value,
34122                             "HdrMetadataEXT is not nothrow_move_constructible!" );
34123 
34124   template <>
34125   struct CppType<StructureType, StructureType::eHdrMetadataEXT>
34126   {
34127     using Type = HdrMetadataEXT;
34128   };
34129 
34130   struct HeadlessSurfaceCreateInfoEXT
34131   {
34132     using NativeType = VkHeadlessSurfaceCreateInfoEXT;
34133 
34134     static const bool                                  allowDuplicate = false;
34135     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eHeadlessSurfaceCreateInfoEXT;
34136 
34137 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
HeadlessSurfaceCreateInfoEXTVULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT34138     VULKAN_HPP_CONSTEXPR HeadlessSurfaceCreateInfoEXT( VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateFlagsEXT flags_ = {} )
34139       VULKAN_HPP_NOEXCEPT : flags( flags_ )
34140     {}
34141 
34142     VULKAN_HPP_CONSTEXPR
34143       HeadlessSurfaceCreateInfoEXT( HeadlessSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34144 
HeadlessSurfaceCreateInfoEXTVULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT34145     HeadlessSurfaceCreateInfoEXT( VkHeadlessSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
34146       : HeadlessSurfaceCreateInfoEXT( *reinterpret_cast<HeadlessSurfaceCreateInfoEXT const *>( &rhs ) )
34147     {}
34148 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
34149 
34150     HeadlessSurfaceCreateInfoEXT & operator=( HeadlessSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34151 
operator =VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT34152     HeadlessSurfaceCreateInfoEXT & operator=( VkHeadlessSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
34153     {
34154       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT const *>( &rhs );
34155       return *this;
34156     }
34157 
34158 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT34159     VULKAN_HPP_CONSTEXPR_14 HeadlessSurfaceCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
34160     {
34161       pNext = pNext_;
34162       return *this;
34163     }
34164 
34165     VULKAN_HPP_CONSTEXPR_14 HeadlessSurfaceCreateInfoEXT &
setFlagsVULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT34166                             setFlags( VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
34167     {
34168       flags = flags_;
34169       return *this;
34170     }
34171 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
34172 
operator VkHeadlessSurfaceCreateInfoEXT const&VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT34173     explicit operator VkHeadlessSurfaceCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
34174     {
34175       return *reinterpret_cast<const VkHeadlessSurfaceCreateInfoEXT *>( this );
34176     }
34177 
operator VkHeadlessSurfaceCreateInfoEXT&VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT34178     explicit operator VkHeadlessSurfaceCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
34179     {
34180       return *reinterpret_cast<VkHeadlessSurfaceCreateInfoEXT *>( this );
34181     }
34182 
34183 #if 14 <= VULKAN_HPP_CPP_VERSION
34184     auto
34185 #else
34186     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
34187                const void * const &,
34188                VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateFlagsEXT const &>
34189 #endif
reflectVULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT34190       reflect() const VULKAN_HPP_NOEXCEPT
34191     {
34192       return std::tie( sType, pNext, flags );
34193     }
34194 
34195 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
34196     auto operator<=>( HeadlessSurfaceCreateInfoEXT const & ) const = default;
34197 #else
operator ==VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT34198     bool operator==( HeadlessSurfaceCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
34199     {
34200       return this->reflect() == rhs.reflect();
34201     }
34202 
operator !=VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT34203     bool operator!=( HeadlessSurfaceCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
34204     {
34205       return this->reflect() != rhs.reflect();
34206     }
34207 #endif
34208 
34209   public:
34210     VULKAN_HPP_NAMESPACE::StructureType                 sType = StructureType::eHeadlessSurfaceCreateInfoEXT;
34211     const void *                                        pNext = {};
34212     VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateFlagsEXT flags = {};
34213   };
34214   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT ) ==
34215                               sizeof( VkHeadlessSurfaceCreateInfoEXT ),
34216                             "struct and wrapper have different size!" );
34217   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT>::value,
34218                             "struct wrapper is not a standard layout!" );
34219   VULKAN_HPP_STATIC_ASSERT(
34220     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT>::value,
34221     "HeadlessSurfaceCreateInfoEXT is not nothrow_move_constructible!" );
34222 
34223   template <>
34224   struct CppType<StructureType, StructureType::eHeadlessSurfaceCreateInfoEXT>
34225   {
34226     using Type = HeadlessSurfaceCreateInfoEXT;
34227   };
34228 
34229 #if defined( VK_USE_PLATFORM_IOS_MVK )
34230   struct IOSSurfaceCreateInfoMVK
34231   {
34232     using NativeType = VkIOSSurfaceCreateInfoMVK;
34233 
34234     static const bool                                  allowDuplicate = false;
34235     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eIosSurfaceCreateInfoMVK;
34236 
34237 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
IOSSurfaceCreateInfoMVKVULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK34238     VULKAN_HPP_CONSTEXPR IOSSurfaceCreateInfoMVK( VULKAN_HPP_NAMESPACE::IOSSurfaceCreateFlagsMVK flags_ = {},
34239                                                   const void * pView_ = {} ) VULKAN_HPP_NOEXCEPT
34240       : flags( flags_ )
34241       , pView( pView_ )
34242     {}
34243 
34244     VULKAN_HPP_CONSTEXPR IOSSurfaceCreateInfoMVK( IOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34245 
IOSSurfaceCreateInfoMVKVULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK34246     IOSSurfaceCreateInfoMVK( VkIOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT
34247       : IOSSurfaceCreateInfoMVK( *reinterpret_cast<IOSSurfaceCreateInfoMVK const *>( &rhs ) )
34248     {}
34249 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
34250 
34251     IOSSurfaceCreateInfoMVK & operator=( IOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34252 
operator =VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK34253     IOSSurfaceCreateInfoMVK & operator=( VkIOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT
34254     {
34255       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK const *>( &rhs );
34256       return *this;
34257     }
34258 
34259 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK34260     VULKAN_HPP_CONSTEXPR_14 IOSSurfaceCreateInfoMVK & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
34261     {
34262       pNext = pNext_;
34263       return *this;
34264     }
34265 
34266     VULKAN_HPP_CONSTEXPR_14 IOSSurfaceCreateInfoMVK &
setFlagsVULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK34267                             setFlags( VULKAN_HPP_NAMESPACE::IOSSurfaceCreateFlagsMVK flags_ ) VULKAN_HPP_NOEXCEPT
34268     {
34269       flags = flags_;
34270       return *this;
34271     }
34272 
setPViewVULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK34273     VULKAN_HPP_CONSTEXPR_14 IOSSurfaceCreateInfoMVK & setPView( const void * pView_ ) VULKAN_HPP_NOEXCEPT
34274     {
34275       pView = pView_;
34276       return *this;
34277     }
34278 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
34279 
operator VkIOSSurfaceCreateInfoMVK const&VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK34280     explicit operator VkIOSSurfaceCreateInfoMVK const &() const VULKAN_HPP_NOEXCEPT
34281     {
34282       return *reinterpret_cast<const VkIOSSurfaceCreateInfoMVK *>( this );
34283     }
34284 
operator VkIOSSurfaceCreateInfoMVK&VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK34285     explicit operator VkIOSSurfaceCreateInfoMVK &() VULKAN_HPP_NOEXCEPT
34286     {
34287       return *reinterpret_cast<VkIOSSurfaceCreateInfoMVK *>( this );
34288     }
34289 
34290 #  if 14 <= VULKAN_HPP_CPP_VERSION
34291     auto
34292 #  else
34293     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
34294                const void * const &,
34295                VULKAN_HPP_NAMESPACE::IOSSurfaceCreateFlagsMVK const &,
34296                const void * const &>
34297 #  endif
reflectVULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK34298       reflect() const VULKAN_HPP_NOEXCEPT
34299     {
34300       return std::tie( sType, pNext, flags, pView );
34301     }
34302 
34303 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
34304     auto operator<=>( IOSSurfaceCreateInfoMVK const & ) const = default;
34305 #  else
operator ==VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK34306     bool operator==( IOSSurfaceCreateInfoMVK const & rhs ) const VULKAN_HPP_NOEXCEPT
34307     {
34308       return this->reflect() == rhs.reflect();
34309     }
34310 
operator !=VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK34311     bool operator!=( IOSSurfaceCreateInfoMVK const & rhs ) const VULKAN_HPP_NOEXCEPT
34312     {
34313       return this->reflect() != rhs.reflect();
34314     }
34315 #  endif
34316 
34317   public:
34318     VULKAN_HPP_NAMESPACE::StructureType            sType = StructureType::eIosSurfaceCreateInfoMVK;
34319     const void *                                   pNext = {};
34320     VULKAN_HPP_NAMESPACE::IOSSurfaceCreateFlagsMVK flags = {};
34321     const void *                                   pView = {};
34322   };
34323   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK ) ==
34324                               sizeof( VkIOSSurfaceCreateInfoMVK ),
34325                             "struct and wrapper have different size!" );
34326   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK>::value,
34327                             "struct wrapper is not a standard layout!" );
34328   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK>::value,
34329                             "IOSSurfaceCreateInfoMVK is not nothrow_move_constructible!" );
34330 
34331   template <>
34332   struct CppType<StructureType, StructureType::eIosSurfaceCreateInfoMVK>
34333   {
34334     using Type = IOSSurfaceCreateInfoMVK;
34335   };
34336 #endif /*VK_USE_PLATFORM_IOS_MVK*/
34337 
34338   struct ImageBlit
34339   {
34340     using NativeType = VkImageBlit;
34341 
34342 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
34343     VULKAN_HPP_CONSTEXPR_14
ImageBlitVULKAN_HPP_NAMESPACE::ImageBlit34344       ImageBlit( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers          srcSubresource_ = {},
34345                  std::array<VULKAN_HPP_NAMESPACE::Offset3D, 2> const & srcOffsets_     = {},
34346                  VULKAN_HPP_NAMESPACE::ImageSubresourceLayers          dstSubresource_ = {},
34347                  std::array<VULKAN_HPP_NAMESPACE::Offset3D, 2> const & dstOffsets_     = {} ) VULKAN_HPP_NOEXCEPT
34348       : srcSubresource( srcSubresource_ )
34349       , srcOffsets( srcOffsets_ )
34350       , dstSubresource( dstSubresource_ )
34351       , dstOffsets( dstOffsets_ )
34352     {}
34353 
34354     VULKAN_HPP_CONSTEXPR_14 ImageBlit( ImageBlit const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34355 
ImageBlitVULKAN_HPP_NAMESPACE::ImageBlit34356     ImageBlit( VkImageBlit const & rhs ) VULKAN_HPP_NOEXCEPT : ImageBlit( *reinterpret_cast<ImageBlit const *>( &rhs ) )
34357     {}
34358 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
34359 
34360     ImageBlit & operator=( ImageBlit const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34361 
operator =VULKAN_HPP_NAMESPACE::ImageBlit34362     ImageBlit & operator=( VkImageBlit const & rhs ) VULKAN_HPP_NOEXCEPT
34363     {
34364       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageBlit const *>( &rhs );
34365       return *this;
34366     }
34367 
34368 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
34369     VULKAN_HPP_CONSTEXPR_14 ImageBlit &
setSrcSubresourceVULKAN_HPP_NAMESPACE::ImageBlit34370       setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT
34371     {
34372       srcSubresource = srcSubresource_;
34373       return *this;
34374     }
34375 
34376     VULKAN_HPP_CONSTEXPR_14 ImageBlit &
setSrcOffsetsVULKAN_HPP_NAMESPACE::ImageBlit34377       setSrcOffsets( std::array<VULKAN_HPP_NAMESPACE::Offset3D, 2> const & srcOffsets_ ) VULKAN_HPP_NOEXCEPT
34378     {
34379       srcOffsets = srcOffsets_;
34380       return *this;
34381     }
34382 
34383     VULKAN_HPP_CONSTEXPR_14 ImageBlit &
setDstSubresourceVULKAN_HPP_NAMESPACE::ImageBlit34384       setDstSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & dstSubresource_ ) VULKAN_HPP_NOEXCEPT
34385     {
34386       dstSubresource = dstSubresource_;
34387       return *this;
34388     }
34389 
34390     VULKAN_HPP_CONSTEXPR_14 ImageBlit &
setDstOffsetsVULKAN_HPP_NAMESPACE::ImageBlit34391       setDstOffsets( std::array<VULKAN_HPP_NAMESPACE::Offset3D, 2> const & dstOffsets_ ) VULKAN_HPP_NOEXCEPT
34392     {
34393       dstOffsets = dstOffsets_;
34394       return *this;
34395     }
34396 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
34397 
operator VkImageBlit const&VULKAN_HPP_NAMESPACE::ImageBlit34398     explicit operator VkImageBlit const &() const VULKAN_HPP_NOEXCEPT
34399     {
34400       return *reinterpret_cast<const VkImageBlit *>( this );
34401     }
34402 
operator VkImageBlit&VULKAN_HPP_NAMESPACE::ImageBlit34403     explicit operator VkImageBlit &() VULKAN_HPP_NOEXCEPT
34404     {
34405       return *reinterpret_cast<VkImageBlit *>( this );
34406     }
34407 
34408 #if 14 <= VULKAN_HPP_CPP_VERSION
34409     auto
34410 #else
34411     std::tuple<VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
34412                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::Offset3D, 2> const &,
34413                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
34414                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::Offset3D, 2> const &>
34415 #endif
reflectVULKAN_HPP_NAMESPACE::ImageBlit34416       reflect() const VULKAN_HPP_NOEXCEPT
34417     {
34418       return std::tie( srcSubresource, srcOffsets, dstSubresource, dstOffsets );
34419     }
34420 
34421 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
34422     auto operator<=>( ImageBlit const & ) const = default;
34423 #else
operator ==VULKAN_HPP_NAMESPACE::ImageBlit34424     bool operator==( ImageBlit const & rhs ) const VULKAN_HPP_NOEXCEPT
34425     {
34426       return this->reflect() == rhs.reflect();
34427     }
34428 
operator !=VULKAN_HPP_NAMESPACE::ImageBlit34429     bool operator!=( ImageBlit const & rhs ) const VULKAN_HPP_NOEXCEPT
34430     {
34431       return this->reflect() != rhs.reflect();
34432     }
34433 #endif
34434 
34435   public:
34436     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers                            srcSubresource = {};
34437     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::Offset3D, 2> srcOffsets     = {};
34438     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers                            dstSubresource = {};
34439     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::Offset3D, 2> dstOffsets     = {};
34440   };
34441   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageBlit ) == sizeof( VkImageBlit ),
34442                             "struct and wrapper have different size!" );
34443   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImageBlit>::value,
34444                             "struct wrapper is not a standard layout!" );
34445   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImageBlit>::value,
34446                             "ImageBlit is not nothrow_move_constructible!" );
34447 
34448 #if defined( VK_USE_PLATFORM_FUCHSIA )
34449   struct ImageFormatConstraintsInfoFUCHSIA
34450   {
34451     using NativeType = VkImageFormatConstraintsInfoFUCHSIA;
34452 
34453     static const bool                                  allowDuplicate = false;
34454     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
34455       StructureType::eImageFormatConstraintsInfoFUCHSIA;
34456 
34457 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageFormatConstraintsInfoFUCHSIAVULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA34458     VULKAN_HPP_CONSTEXPR ImageFormatConstraintsInfoFUCHSIA(
34459       VULKAN_HPP_NAMESPACE::ImageCreateInfo                    imageCreateInfo_        = {},
34460       VULKAN_HPP_NAMESPACE::FormatFeatureFlags                 requiredFormatFeatures_ = {},
34461       VULKAN_HPP_NAMESPACE::ImageFormatConstraintsFlagsFUCHSIA flags_                  = {},
34462       uint64_t                                                 sysmemPixelFormat_      = {},
34463       uint32_t                                                 colorSpaceCount_        = {},
34464       const VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA *    pColorSpaces_           = {} ) VULKAN_HPP_NOEXCEPT
34465       : imageCreateInfo( imageCreateInfo_ )
34466       , requiredFormatFeatures( requiredFormatFeatures_ )
34467       , flags( flags_ )
34468       , sysmemPixelFormat( sysmemPixelFormat_ )
34469       , colorSpaceCount( colorSpaceCount_ )
34470       , pColorSpaces( pColorSpaces_ )
34471     {}
34472 
34473     VULKAN_HPP_CONSTEXPR
34474       ImageFormatConstraintsInfoFUCHSIA( ImageFormatConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34475 
ImageFormatConstraintsInfoFUCHSIAVULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA34476     ImageFormatConstraintsInfoFUCHSIA( VkImageFormatConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
34477       : ImageFormatConstraintsInfoFUCHSIA( *reinterpret_cast<ImageFormatConstraintsInfoFUCHSIA const *>( &rhs ) )
34478     {}
34479 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
34480 
34481     ImageFormatConstraintsInfoFUCHSIA &
34482       operator=( ImageFormatConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34483 
operator =VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA34484     ImageFormatConstraintsInfoFUCHSIA & operator=( VkImageFormatConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
34485     {
34486       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA const *>( &rhs );
34487       return *this;
34488     }
34489 
34490 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA34491     VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
34492     {
34493       pNext = pNext_;
34494       return *this;
34495     }
34496 
34497     VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA &
setImageCreateInfoVULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA34498       setImageCreateInfo( VULKAN_HPP_NAMESPACE::ImageCreateInfo const & imageCreateInfo_ ) VULKAN_HPP_NOEXCEPT
34499     {
34500       imageCreateInfo = imageCreateInfo_;
34501       return *this;
34502     }
34503 
34504     VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA &
setRequiredFormatFeaturesVULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA34505       setRequiredFormatFeatures( VULKAN_HPP_NAMESPACE::FormatFeatureFlags requiredFormatFeatures_ ) VULKAN_HPP_NOEXCEPT
34506     {
34507       requiredFormatFeatures = requiredFormatFeatures_;
34508       return *this;
34509     }
34510 
34511     VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA &
setFlagsVULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA34512       setFlags( VULKAN_HPP_NAMESPACE::ImageFormatConstraintsFlagsFUCHSIA flags_ ) VULKAN_HPP_NOEXCEPT
34513     {
34514       flags = flags_;
34515       return *this;
34516     }
34517 
34518     VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA &
setSysmemPixelFormatVULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA34519                             setSysmemPixelFormat( uint64_t sysmemPixelFormat_ ) VULKAN_HPP_NOEXCEPT
34520     {
34521       sysmemPixelFormat = sysmemPixelFormat_;
34522       return *this;
34523     }
34524 
34525     VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA &
setColorSpaceCountVULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA34526                             setColorSpaceCount( uint32_t colorSpaceCount_ ) VULKAN_HPP_NOEXCEPT
34527     {
34528       colorSpaceCount = colorSpaceCount_;
34529       return *this;
34530     }
34531 
34532     VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA &
setPColorSpacesVULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA34533       setPColorSpaces( const VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA * pColorSpaces_ ) VULKAN_HPP_NOEXCEPT
34534     {
34535       pColorSpaces = pColorSpaces_;
34536       return *this;
34537     }
34538 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
34539 
operator VkImageFormatConstraintsInfoFUCHSIA const&VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA34540     explicit operator VkImageFormatConstraintsInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
34541     {
34542       return *reinterpret_cast<const VkImageFormatConstraintsInfoFUCHSIA *>( this );
34543     }
34544 
operator VkImageFormatConstraintsInfoFUCHSIA&VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA34545     explicit operator VkImageFormatConstraintsInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT
34546     {
34547       return *reinterpret_cast<VkImageFormatConstraintsInfoFUCHSIA *>( this );
34548     }
34549 
34550 #  if 14 <= VULKAN_HPP_CPP_VERSION
34551     auto
34552 #  else
34553     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
34554                const void * const &,
34555                VULKAN_HPP_NAMESPACE::ImageCreateInfo const &,
34556                VULKAN_HPP_NAMESPACE::FormatFeatureFlags const &,
34557                VULKAN_HPP_NAMESPACE::ImageFormatConstraintsFlagsFUCHSIA const &,
34558                uint64_t const &,
34559                uint32_t const &,
34560                const VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA * const &>
34561 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA34562       reflect() const VULKAN_HPP_NOEXCEPT
34563     {
34564       return std::tie( sType,
34565                        pNext,
34566                        imageCreateInfo,
34567                        requiredFormatFeatures,
34568                        flags,
34569                        sysmemPixelFormat,
34570                        colorSpaceCount,
34571                        pColorSpaces );
34572     }
34573 
34574 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
34575     auto operator<=>( ImageFormatConstraintsInfoFUCHSIA const & ) const = default;
34576 #  else
operator ==VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA34577     bool operator==( ImageFormatConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
34578     {
34579       return this->reflect() == rhs.reflect();
34580     }
34581 
operator !=VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA34582     bool operator!=( ImageFormatConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
34583     {
34584       return this->reflect() != rhs.reflect();
34585     }
34586 #  endif
34587 
34588   public:
34589     VULKAN_HPP_NAMESPACE::StructureType                      sType = StructureType::eImageFormatConstraintsInfoFUCHSIA;
34590     const void *                                             pNext = {};
34591     VULKAN_HPP_NAMESPACE::ImageCreateInfo                    imageCreateInfo        = {};
34592     VULKAN_HPP_NAMESPACE::FormatFeatureFlags                 requiredFormatFeatures = {};
34593     VULKAN_HPP_NAMESPACE::ImageFormatConstraintsFlagsFUCHSIA flags                  = {};
34594     uint64_t                                                 sysmemPixelFormat      = {};
34595     uint32_t                                                 colorSpaceCount        = {};
34596     const VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA *    pColorSpaces           = {};
34597   };
34598   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA ) ==
34599                               sizeof( VkImageFormatConstraintsInfoFUCHSIA ),
34600                             "struct and wrapper have different size!" );
34601   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA>::value,
34602                             "struct wrapper is not a standard layout!" );
34603   VULKAN_HPP_STATIC_ASSERT(
34604     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA>::value,
34605     "ImageFormatConstraintsInfoFUCHSIA is not nothrow_move_constructible!" );
34606 
34607   template <>
34608   struct CppType<StructureType, StructureType::eImageFormatConstraintsInfoFUCHSIA>
34609   {
34610     using Type = ImageFormatConstraintsInfoFUCHSIA;
34611   };
34612 #endif /*VK_USE_PLATFORM_FUCHSIA*/
34613 
34614 #if defined( VK_USE_PLATFORM_FUCHSIA )
34615   struct ImageConstraintsInfoFUCHSIA
34616   {
34617     using NativeType = VkImageConstraintsInfoFUCHSIA;
34618 
34619     static const bool                                  allowDuplicate = false;
34620     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageConstraintsInfoFUCHSIA;
34621 
34622 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageConstraintsInfoFUCHSIAVULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA34623     VULKAN_HPP_CONSTEXPR ImageConstraintsInfoFUCHSIA(
34624       uint32_t                                                        formatConstraintsCount_      = {},
34625       const VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA * pFormatConstraints_          = {},
34626       VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA    bufferCollectionConstraints_ = {},
34627       VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFlagsFUCHSIA          flags_ = {} ) VULKAN_HPP_NOEXCEPT
34628       : formatConstraintsCount( formatConstraintsCount_ )
34629       , pFormatConstraints( pFormatConstraints_ )
34630       , bufferCollectionConstraints( bufferCollectionConstraints_ )
34631       , flags( flags_ )
34632     {}
34633 
34634     VULKAN_HPP_CONSTEXPR
34635       ImageConstraintsInfoFUCHSIA( ImageConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34636 
ImageConstraintsInfoFUCHSIAVULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA34637     ImageConstraintsInfoFUCHSIA( VkImageConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
34638       : ImageConstraintsInfoFUCHSIA( *reinterpret_cast<ImageConstraintsInfoFUCHSIA const *>( &rhs ) )
34639     {}
34640 
34641 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ImageConstraintsInfoFUCHSIAVULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA34642     ImageConstraintsInfoFUCHSIA(
34643       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<
34644         const VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA> const & formatConstraints_,
34645       VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA             bufferCollectionConstraints_ = {},
34646       VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFlagsFUCHSIA                   flags_                       = {} )
34647       : formatConstraintsCount( static_cast<uint32_t>( formatConstraints_.size() ) )
34648       , pFormatConstraints( formatConstraints_.data() )
34649       , bufferCollectionConstraints( bufferCollectionConstraints_ )
34650       , flags( flags_ )
34651     {}
34652 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34653 #  endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
34654 
34655     ImageConstraintsInfoFUCHSIA & operator=( ImageConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34656 
operator =VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA34657     ImageConstraintsInfoFUCHSIA & operator=( VkImageConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
34658     {
34659       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA const *>( &rhs );
34660       return *this;
34661     }
34662 
34663 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA34664     VULKAN_HPP_CONSTEXPR_14 ImageConstraintsInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
34665     {
34666       pNext = pNext_;
34667       return *this;
34668     }
34669 
34670     VULKAN_HPP_CONSTEXPR_14 ImageConstraintsInfoFUCHSIA &
setFormatConstraintsCountVULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA34671                             setFormatConstraintsCount( uint32_t formatConstraintsCount_ ) VULKAN_HPP_NOEXCEPT
34672     {
34673       formatConstraintsCount = formatConstraintsCount_;
34674       return *this;
34675     }
34676 
setPFormatConstraintsVULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA34677     VULKAN_HPP_CONSTEXPR_14 ImageConstraintsInfoFUCHSIA & setPFormatConstraints(
34678       const VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA * pFormatConstraints_ ) VULKAN_HPP_NOEXCEPT
34679     {
34680       pFormatConstraints = pFormatConstraints_;
34681       return *this;
34682     }
34683 
34684 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setFormatConstraintsVULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA34685     ImageConstraintsInfoFUCHSIA & setFormatConstraints(
34686       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<
34687         const VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA> const & formatConstraints_ ) VULKAN_HPP_NOEXCEPT
34688     {
34689       formatConstraintsCount = static_cast<uint32_t>( formatConstraints_.size() );
34690       pFormatConstraints     = formatConstraints_.data();
34691       return *this;
34692     }
34693 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34694 
setBufferCollectionConstraintsVULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA34695     VULKAN_HPP_CONSTEXPR_14 ImageConstraintsInfoFUCHSIA & setBufferCollectionConstraints(
34696       VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA const & bufferCollectionConstraints_ )
34697       VULKAN_HPP_NOEXCEPT
34698     {
34699       bufferCollectionConstraints = bufferCollectionConstraints_;
34700       return *this;
34701     }
34702 
34703     VULKAN_HPP_CONSTEXPR_14 ImageConstraintsInfoFUCHSIA &
setFlagsVULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA34704       setFlags( VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFlagsFUCHSIA flags_ ) VULKAN_HPP_NOEXCEPT
34705     {
34706       flags = flags_;
34707       return *this;
34708     }
34709 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
34710 
operator VkImageConstraintsInfoFUCHSIA const&VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA34711     explicit operator VkImageConstraintsInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
34712     {
34713       return *reinterpret_cast<const VkImageConstraintsInfoFUCHSIA *>( this );
34714     }
34715 
operator VkImageConstraintsInfoFUCHSIA&VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA34716     explicit operator VkImageConstraintsInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT
34717     {
34718       return *reinterpret_cast<VkImageConstraintsInfoFUCHSIA *>( this );
34719     }
34720 
34721 #  if 14 <= VULKAN_HPP_CPP_VERSION
34722     auto
34723 #  else
34724     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
34725                const void * const &,
34726                uint32_t const &,
34727                const VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA * const &,
34728                VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA const &,
34729                VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFlagsFUCHSIA const &>
34730 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA34731       reflect() const VULKAN_HPP_NOEXCEPT
34732     {
34733       return std::tie( sType, pNext, formatConstraintsCount, pFormatConstraints, bufferCollectionConstraints, flags );
34734     }
34735 
34736 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
34737     auto operator<=>( ImageConstraintsInfoFUCHSIA const & ) const = default;
34738 #  else
operator ==VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA34739     bool operator==( ImageConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
34740     {
34741       return this->reflect() == rhs.reflect();
34742     }
34743 
operator !=VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA34744     bool operator!=( ImageConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
34745     {
34746       return this->reflect() != rhs.reflect();
34747     }
34748 #  endif
34749 
34750   public:
34751     VULKAN_HPP_NAMESPACE::StructureType                             sType = StructureType::eImageConstraintsInfoFUCHSIA;
34752     const void *                                                    pNext = {};
34753     uint32_t                                                        formatConstraintsCount      = {};
34754     const VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA * pFormatConstraints          = {};
34755     VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA    bufferCollectionConstraints = {};
34756     VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFlagsFUCHSIA          flags                       = {};
34757   };
34758   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA ) ==
34759                               sizeof( VkImageConstraintsInfoFUCHSIA ),
34760                             "struct and wrapper have different size!" );
34761   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA>::value,
34762                             "struct wrapper is not a standard layout!" );
34763   VULKAN_HPP_STATIC_ASSERT(
34764     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA>::value,
34765     "ImageConstraintsInfoFUCHSIA is not nothrow_move_constructible!" );
34766 
34767   template <>
34768   struct CppType<StructureType, StructureType::eImageConstraintsInfoFUCHSIA>
34769   {
34770     using Type = ImageConstraintsInfoFUCHSIA;
34771   };
34772 #endif /*VK_USE_PLATFORM_FUCHSIA*/
34773 
34774   struct ImageCopy
34775   {
34776     using NativeType = VkImageCopy;
34777 
34778 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageCopyVULKAN_HPP_NAMESPACE::ImageCopy34779     VULKAN_HPP_CONSTEXPR ImageCopy( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource_ = {},
34780                                     VULKAN_HPP_NAMESPACE::Offset3D               srcOffset_      = {},
34781                                     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource_ = {},
34782                                     VULKAN_HPP_NAMESPACE::Offset3D               dstOffset_      = {},
34783                                     VULKAN_HPP_NAMESPACE::Extent3D               extent_ = {} ) VULKAN_HPP_NOEXCEPT
34784       : srcSubresource( srcSubresource_ )
34785       , srcOffset( srcOffset_ )
34786       , dstSubresource( dstSubresource_ )
34787       , dstOffset( dstOffset_ )
34788       , extent( extent_ )
34789     {}
34790 
34791     VULKAN_HPP_CONSTEXPR ImageCopy( ImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34792 
ImageCopyVULKAN_HPP_NAMESPACE::ImageCopy34793     ImageCopy( VkImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT : ImageCopy( *reinterpret_cast<ImageCopy const *>( &rhs ) )
34794     {}
34795 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
34796 
34797     ImageCopy & operator=( ImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34798 
operator =VULKAN_HPP_NAMESPACE::ImageCopy34799     ImageCopy & operator=( VkImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT
34800     {
34801       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageCopy const *>( &rhs );
34802       return *this;
34803     }
34804 
34805 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
34806     VULKAN_HPP_CONSTEXPR_14 ImageCopy &
setSrcSubresourceVULKAN_HPP_NAMESPACE::ImageCopy34807       setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT
34808     {
34809       srcSubresource = srcSubresource_;
34810       return *this;
34811     }
34812 
34813     VULKAN_HPP_CONSTEXPR_14 ImageCopy &
setSrcOffsetVULKAN_HPP_NAMESPACE::ImageCopy34814                             setSrcOffset( VULKAN_HPP_NAMESPACE::Offset3D const & srcOffset_ ) VULKAN_HPP_NOEXCEPT
34815     {
34816       srcOffset = srcOffset_;
34817       return *this;
34818     }
34819 
34820     VULKAN_HPP_CONSTEXPR_14 ImageCopy &
setDstSubresourceVULKAN_HPP_NAMESPACE::ImageCopy34821       setDstSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & dstSubresource_ ) VULKAN_HPP_NOEXCEPT
34822     {
34823       dstSubresource = dstSubresource_;
34824       return *this;
34825     }
34826 
34827     VULKAN_HPP_CONSTEXPR_14 ImageCopy &
setDstOffsetVULKAN_HPP_NAMESPACE::ImageCopy34828                             setDstOffset( VULKAN_HPP_NAMESPACE::Offset3D const & dstOffset_ ) VULKAN_HPP_NOEXCEPT
34829     {
34830       dstOffset = dstOffset_;
34831       return *this;
34832     }
34833 
setExtentVULKAN_HPP_NAMESPACE::ImageCopy34834     VULKAN_HPP_CONSTEXPR_14 ImageCopy & setExtent( VULKAN_HPP_NAMESPACE::Extent3D const & extent_ ) VULKAN_HPP_NOEXCEPT
34835     {
34836       extent = extent_;
34837       return *this;
34838     }
34839 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
34840 
operator VkImageCopy const&VULKAN_HPP_NAMESPACE::ImageCopy34841     explicit operator VkImageCopy const &() const VULKAN_HPP_NOEXCEPT
34842     {
34843       return *reinterpret_cast<const VkImageCopy *>( this );
34844     }
34845 
operator VkImageCopy&VULKAN_HPP_NAMESPACE::ImageCopy34846     explicit operator VkImageCopy &() VULKAN_HPP_NOEXCEPT
34847     {
34848       return *reinterpret_cast<VkImageCopy *>( this );
34849     }
34850 
34851 #if 14 <= VULKAN_HPP_CPP_VERSION
34852     auto
34853 #else
34854     std::tuple<VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
34855                VULKAN_HPP_NAMESPACE::Offset3D const &,
34856                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
34857                VULKAN_HPP_NAMESPACE::Offset3D const &,
34858                VULKAN_HPP_NAMESPACE::Extent3D const &>
34859 #endif
reflectVULKAN_HPP_NAMESPACE::ImageCopy34860       reflect() const VULKAN_HPP_NOEXCEPT
34861     {
34862       return std::tie( srcSubresource, srcOffset, dstSubresource, dstOffset, extent );
34863     }
34864 
34865 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
34866     auto operator<=>( ImageCopy const & ) const = default;
34867 #else
operator ==VULKAN_HPP_NAMESPACE::ImageCopy34868     bool operator==( ImageCopy const & rhs ) const VULKAN_HPP_NOEXCEPT
34869     {
34870       return this->reflect() == rhs.reflect();
34871     }
34872 
operator !=VULKAN_HPP_NAMESPACE::ImageCopy34873     bool operator!=( ImageCopy const & rhs ) const VULKAN_HPP_NOEXCEPT
34874     {
34875       return this->reflect() != rhs.reflect();
34876     }
34877 #endif
34878 
34879   public:
34880     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource = {};
34881     VULKAN_HPP_NAMESPACE::Offset3D               srcOffset      = {};
34882     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource = {};
34883     VULKAN_HPP_NAMESPACE::Offset3D               dstOffset      = {};
34884     VULKAN_HPP_NAMESPACE::Extent3D               extent         = {};
34885   };
34886   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageCopy ) == sizeof( VkImageCopy ),
34887                             "struct and wrapper have different size!" );
34888   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImageCopy>::value,
34889                             "struct wrapper is not a standard layout!" );
34890   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImageCopy>::value,
34891                             "ImageCopy is not nothrow_move_constructible!" );
34892 
34893   struct SubresourceLayout
34894   {
34895     using NativeType = VkSubresourceLayout;
34896 
34897 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubresourceLayoutVULKAN_HPP_NAMESPACE::SubresourceLayout34898     VULKAN_HPP_CONSTEXPR SubresourceLayout( VULKAN_HPP_NAMESPACE::DeviceSize offset_     = {},
34899                                             VULKAN_HPP_NAMESPACE::DeviceSize size_       = {},
34900                                             VULKAN_HPP_NAMESPACE::DeviceSize rowPitch_   = {},
34901                                             VULKAN_HPP_NAMESPACE::DeviceSize arrayPitch_ = {},
34902                                             VULKAN_HPP_NAMESPACE::DeviceSize depthPitch_ = {} ) VULKAN_HPP_NOEXCEPT
34903       : offset( offset_ )
34904       , size( size_ )
34905       , rowPitch( rowPitch_ )
34906       , arrayPitch( arrayPitch_ )
34907       , depthPitch( depthPitch_ )
34908     {}
34909 
34910     VULKAN_HPP_CONSTEXPR SubresourceLayout( SubresourceLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34911 
SubresourceLayoutVULKAN_HPP_NAMESPACE::SubresourceLayout34912     SubresourceLayout( VkSubresourceLayout const & rhs ) VULKAN_HPP_NOEXCEPT
34913       : SubresourceLayout( *reinterpret_cast<SubresourceLayout const *>( &rhs ) )
34914     {}
34915 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
34916 
34917     SubresourceLayout & operator=( SubresourceLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34918 
operator =VULKAN_HPP_NAMESPACE::SubresourceLayout34919     SubresourceLayout & operator=( VkSubresourceLayout const & rhs ) VULKAN_HPP_NOEXCEPT
34920     {
34921       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubresourceLayout const *>( &rhs );
34922       return *this;
34923     }
34924 
operator VkSubresourceLayout const&VULKAN_HPP_NAMESPACE::SubresourceLayout34925     explicit operator VkSubresourceLayout const &() const VULKAN_HPP_NOEXCEPT
34926     {
34927       return *reinterpret_cast<const VkSubresourceLayout *>( this );
34928     }
34929 
operator VkSubresourceLayout&VULKAN_HPP_NAMESPACE::SubresourceLayout34930     explicit operator VkSubresourceLayout &() VULKAN_HPP_NOEXCEPT
34931     {
34932       return *reinterpret_cast<VkSubresourceLayout *>( this );
34933     }
34934 
34935 #if 14 <= VULKAN_HPP_CPP_VERSION
34936     auto
34937 #else
34938     std::tuple<VULKAN_HPP_NAMESPACE::DeviceSize const &,
34939                VULKAN_HPP_NAMESPACE::DeviceSize const &,
34940                VULKAN_HPP_NAMESPACE::DeviceSize const &,
34941                VULKAN_HPP_NAMESPACE::DeviceSize const &,
34942                VULKAN_HPP_NAMESPACE::DeviceSize const &>
34943 #endif
reflectVULKAN_HPP_NAMESPACE::SubresourceLayout34944       reflect() const VULKAN_HPP_NOEXCEPT
34945     {
34946       return std::tie( offset, size, rowPitch, arrayPitch, depthPitch );
34947     }
34948 
34949 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
34950     auto operator<=>( SubresourceLayout const & ) const = default;
34951 #else
operator ==VULKAN_HPP_NAMESPACE::SubresourceLayout34952     bool operator==( SubresourceLayout const & rhs ) const VULKAN_HPP_NOEXCEPT
34953     {
34954       return this->reflect() == rhs.reflect();
34955     }
34956 
operator !=VULKAN_HPP_NAMESPACE::SubresourceLayout34957     bool operator!=( SubresourceLayout const & rhs ) const VULKAN_HPP_NOEXCEPT
34958     {
34959       return this->reflect() != rhs.reflect();
34960     }
34961 #endif
34962 
34963   public:
34964     VULKAN_HPP_NAMESPACE::DeviceSize offset     = {};
34965     VULKAN_HPP_NAMESPACE::DeviceSize size       = {};
34966     VULKAN_HPP_NAMESPACE::DeviceSize rowPitch   = {};
34967     VULKAN_HPP_NAMESPACE::DeviceSize arrayPitch = {};
34968     VULKAN_HPP_NAMESPACE::DeviceSize depthPitch = {};
34969   };
34970   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubresourceLayout ) == sizeof( VkSubresourceLayout ),
34971                             "struct and wrapper have different size!" );
34972   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SubresourceLayout>::value,
34973                             "struct wrapper is not a standard layout!" );
34974   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SubresourceLayout>::value,
34975                             "SubresourceLayout is not nothrow_move_constructible!" );
34976 
34977   struct ImageDrmFormatModifierExplicitCreateInfoEXT
34978   {
34979     using NativeType = VkImageDrmFormatModifierExplicitCreateInfoEXT;
34980 
34981     static const bool                                  allowDuplicate = false;
34982     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
34983       StructureType::eImageDrmFormatModifierExplicitCreateInfoEXT;
34984 
34985 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageDrmFormatModifierExplicitCreateInfoEXTVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT34986     VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierExplicitCreateInfoEXT(
34987       uint64_t                                        drmFormatModifier_           = {},
34988       uint32_t                                        drmFormatModifierPlaneCount_ = {},
34989       const VULKAN_HPP_NAMESPACE::SubresourceLayout * pPlaneLayouts_               = {} ) VULKAN_HPP_NOEXCEPT
34990       : drmFormatModifier( drmFormatModifier_ )
34991       , drmFormatModifierPlaneCount( drmFormatModifierPlaneCount_ )
34992       , pPlaneLayouts( pPlaneLayouts_ )
34993     {}
34994 
34995     VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierExplicitCreateInfoEXT(
34996       ImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34997 
ImageDrmFormatModifierExplicitCreateInfoEXTVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT34998     ImageDrmFormatModifierExplicitCreateInfoEXT( VkImageDrmFormatModifierExplicitCreateInfoEXT const & rhs )
34999       VULKAN_HPP_NOEXCEPT
35000       : ImageDrmFormatModifierExplicitCreateInfoEXT(
35001           *reinterpret_cast<ImageDrmFormatModifierExplicitCreateInfoEXT const *>( &rhs ) )
35002     {}
35003 
35004 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ImageDrmFormatModifierExplicitCreateInfoEXTVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT35005     ImageDrmFormatModifierExplicitCreateInfoEXT(
35006       uint64_t drmFormatModifier_,
35007       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubresourceLayout> const &
35008         planeLayouts_ )
35009       : drmFormatModifier( drmFormatModifier_ )
35010       , drmFormatModifierPlaneCount( static_cast<uint32_t>( planeLayouts_.size() ) )
35011       , pPlaneLayouts( planeLayouts_.data() )
35012     {}
35013 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35014 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35015 
35016     ImageDrmFormatModifierExplicitCreateInfoEXT &
35017       operator=( ImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35018 
35019     ImageDrmFormatModifierExplicitCreateInfoEXT &
operator =VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT35020       operator=( VkImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
35021     {
35022       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT const *>( &rhs );
35023       return *this;
35024     }
35025 
35026 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
35027     VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierExplicitCreateInfoEXT &
setPNextVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT35028                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
35029     {
35030       pNext = pNext_;
35031       return *this;
35032     }
35033 
35034     VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierExplicitCreateInfoEXT &
setDrmFormatModifierVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT35035                             setDrmFormatModifier( uint64_t drmFormatModifier_ ) VULKAN_HPP_NOEXCEPT
35036     {
35037       drmFormatModifier = drmFormatModifier_;
35038       return *this;
35039     }
35040 
35041     VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierExplicitCreateInfoEXT &
setDrmFormatModifierPlaneCountVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT35042                             setDrmFormatModifierPlaneCount( uint32_t drmFormatModifierPlaneCount_ ) VULKAN_HPP_NOEXCEPT
35043     {
35044       drmFormatModifierPlaneCount = drmFormatModifierPlaneCount_;
35045       return *this;
35046     }
35047 
35048     VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierExplicitCreateInfoEXT &
setPPlaneLayoutsVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT35049       setPPlaneLayouts( const VULKAN_HPP_NAMESPACE::SubresourceLayout * pPlaneLayouts_ ) VULKAN_HPP_NOEXCEPT
35050     {
35051       pPlaneLayouts = pPlaneLayouts_;
35052       return *this;
35053     }
35054 
35055 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPlaneLayoutsVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT35056     ImageDrmFormatModifierExplicitCreateInfoEXT & setPlaneLayouts(
35057       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubresourceLayout> const &
35058         planeLayouts_ ) VULKAN_HPP_NOEXCEPT
35059     {
35060       drmFormatModifierPlaneCount = static_cast<uint32_t>( planeLayouts_.size() );
35061       pPlaneLayouts               = planeLayouts_.data();
35062       return *this;
35063     }
35064 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35065 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
35066 
operator VkImageDrmFormatModifierExplicitCreateInfoEXT const&VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT35067     explicit operator VkImageDrmFormatModifierExplicitCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
35068     {
35069       return *reinterpret_cast<const VkImageDrmFormatModifierExplicitCreateInfoEXT *>( this );
35070     }
35071 
operator VkImageDrmFormatModifierExplicitCreateInfoEXT&VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT35072     explicit operator VkImageDrmFormatModifierExplicitCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
35073     {
35074       return *reinterpret_cast<VkImageDrmFormatModifierExplicitCreateInfoEXT *>( this );
35075     }
35076 
35077 #if 14 <= VULKAN_HPP_CPP_VERSION
35078     auto
35079 #else
35080     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
35081                const void * const &,
35082                uint64_t const &,
35083                uint32_t const &,
35084                const VULKAN_HPP_NAMESPACE::SubresourceLayout * const &>
35085 #endif
reflectVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT35086       reflect() const VULKAN_HPP_NOEXCEPT
35087     {
35088       return std::tie( sType, pNext, drmFormatModifier, drmFormatModifierPlaneCount, pPlaneLayouts );
35089     }
35090 
35091 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
35092     auto operator<=>( ImageDrmFormatModifierExplicitCreateInfoEXT const & ) const = default;
35093 #else
operator ==VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT35094     bool operator==( ImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
35095     {
35096       return this->reflect() == rhs.reflect();
35097     }
35098 
operator !=VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT35099     bool operator!=( ImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
35100     {
35101       return this->reflect() != rhs.reflect();
35102     }
35103 #endif
35104 
35105   public:
35106     VULKAN_HPP_NAMESPACE::StructureType             sType = StructureType::eImageDrmFormatModifierExplicitCreateInfoEXT;
35107     const void *                                    pNext = {};
35108     uint64_t                                        drmFormatModifier           = {};
35109     uint32_t                                        drmFormatModifierPlaneCount = {};
35110     const VULKAN_HPP_NAMESPACE::SubresourceLayout * pPlaneLayouts               = {};
35111   };
35112   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT ) ==
35113                               sizeof( VkImageDrmFormatModifierExplicitCreateInfoEXT ),
35114                             "struct and wrapper have different size!" );
35115   VULKAN_HPP_STATIC_ASSERT(
35116     std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT>::value,
35117     "struct wrapper is not a standard layout!" );
35118   VULKAN_HPP_STATIC_ASSERT(
35119     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT>::value,
35120     "ImageDrmFormatModifierExplicitCreateInfoEXT is not nothrow_move_constructible!" );
35121 
35122   template <>
35123   struct CppType<StructureType, StructureType::eImageDrmFormatModifierExplicitCreateInfoEXT>
35124   {
35125     using Type = ImageDrmFormatModifierExplicitCreateInfoEXT;
35126   };
35127 
35128   struct ImageDrmFormatModifierListCreateInfoEXT
35129   {
35130     using NativeType = VkImageDrmFormatModifierListCreateInfoEXT;
35131 
35132     static const bool                                  allowDuplicate = false;
35133     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
35134       StructureType::eImageDrmFormatModifierListCreateInfoEXT;
35135 
35136 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
35137     VULKAN_HPP_CONSTEXPR
ImageDrmFormatModifierListCreateInfoEXTVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT35138       ImageDrmFormatModifierListCreateInfoEXT( uint32_t         drmFormatModifierCount_ = {},
35139                                                const uint64_t * pDrmFormatModifiers_    = {} ) VULKAN_HPP_NOEXCEPT
35140       : drmFormatModifierCount( drmFormatModifierCount_ )
35141       , pDrmFormatModifiers( pDrmFormatModifiers_ )
35142     {}
35143 
35144     VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierListCreateInfoEXT( ImageDrmFormatModifierListCreateInfoEXT const & rhs )
35145       VULKAN_HPP_NOEXCEPT = default;
35146 
ImageDrmFormatModifierListCreateInfoEXTVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT35147     ImageDrmFormatModifierListCreateInfoEXT( VkImageDrmFormatModifierListCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
35148       : ImageDrmFormatModifierListCreateInfoEXT(
35149           *reinterpret_cast<ImageDrmFormatModifierListCreateInfoEXT const *>( &rhs ) )
35150     {}
35151 
35152 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ImageDrmFormatModifierListCreateInfoEXTVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT35153     ImageDrmFormatModifierListCreateInfoEXT(
35154       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & drmFormatModifiers_ )
35155       : drmFormatModifierCount( static_cast<uint32_t>( drmFormatModifiers_.size() ) )
35156       , pDrmFormatModifiers( drmFormatModifiers_.data() )
35157     {}
35158 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35159 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35160 
35161     ImageDrmFormatModifierListCreateInfoEXT &
35162       operator=( ImageDrmFormatModifierListCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35163 
35164     ImageDrmFormatModifierListCreateInfoEXT &
operator =VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT35165       operator=( VkImageDrmFormatModifierListCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
35166     {
35167       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT const *>( &rhs );
35168       return *this;
35169     }
35170 
35171 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
35172     VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierListCreateInfoEXT &
setPNextVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT35173                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
35174     {
35175       pNext = pNext_;
35176       return *this;
35177     }
35178 
35179     VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierListCreateInfoEXT &
setDrmFormatModifierCountVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT35180                             setDrmFormatModifierCount( uint32_t drmFormatModifierCount_ ) VULKAN_HPP_NOEXCEPT
35181     {
35182       drmFormatModifierCount = drmFormatModifierCount_;
35183       return *this;
35184     }
35185 
35186     VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierListCreateInfoEXT &
setPDrmFormatModifiersVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT35187                             setPDrmFormatModifiers( const uint64_t * pDrmFormatModifiers_ ) VULKAN_HPP_NOEXCEPT
35188     {
35189       pDrmFormatModifiers = pDrmFormatModifiers_;
35190       return *this;
35191     }
35192 
35193 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDrmFormatModifiersVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT35194     ImageDrmFormatModifierListCreateInfoEXT & setDrmFormatModifiers(
35195       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & drmFormatModifiers_ ) VULKAN_HPP_NOEXCEPT
35196     {
35197       drmFormatModifierCount = static_cast<uint32_t>( drmFormatModifiers_.size() );
35198       pDrmFormatModifiers    = drmFormatModifiers_.data();
35199       return *this;
35200     }
35201 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35202 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
35203 
operator VkImageDrmFormatModifierListCreateInfoEXT const&VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT35204     explicit operator VkImageDrmFormatModifierListCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
35205     {
35206       return *reinterpret_cast<const VkImageDrmFormatModifierListCreateInfoEXT *>( this );
35207     }
35208 
operator VkImageDrmFormatModifierListCreateInfoEXT&VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT35209     explicit operator VkImageDrmFormatModifierListCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
35210     {
35211       return *reinterpret_cast<VkImageDrmFormatModifierListCreateInfoEXT *>( this );
35212     }
35213 
35214 #if 14 <= VULKAN_HPP_CPP_VERSION
35215     auto
35216 #else
35217     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
35218                const void * const &,
35219                uint32_t const &,
35220                const uint64_t * const &>
35221 #endif
reflectVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT35222       reflect() const VULKAN_HPP_NOEXCEPT
35223     {
35224       return std::tie( sType, pNext, drmFormatModifierCount, pDrmFormatModifiers );
35225     }
35226 
35227 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
35228     auto operator<=>( ImageDrmFormatModifierListCreateInfoEXT const & ) const = default;
35229 #else
operator ==VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT35230     bool operator==( ImageDrmFormatModifierListCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
35231     {
35232       return this->reflect() == rhs.reflect();
35233     }
35234 
operator !=VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT35235     bool operator!=( ImageDrmFormatModifierListCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
35236     {
35237       return this->reflect() != rhs.reflect();
35238     }
35239 #endif
35240 
35241   public:
35242     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageDrmFormatModifierListCreateInfoEXT;
35243     const void *                        pNext = {};
35244     uint32_t                            drmFormatModifierCount = {};
35245     const uint64_t *                    pDrmFormatModifiers    = {};
35246   };
35247   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT ) ==
35248                               sizeof( VkImageDrmFormatModifierListCreateInfoEXT ),
35249                             "struct and wrapper have different size!" );
35250   VULKAN_HPP_STATIC_ASSERT(
35251     std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT>::value,
35252     "struct wrapper is not a standard layout!" );
35253   VULKAN_HPP_STATIC_ASSERT(
35254     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT>::value,
35255     "ImageDrmFormatModifierListCreateInfoEXT is not nothrow_move_constructible!" );
35256 
35257   template <>
35258   struct CppType<StructureType, StructureType::eImageDrmFormatModifierListCreateInfoEXT>
35259   {
35260     using Type = ImageDrmFormatModifierListCreateInfoEXT;
35261   };
35262 
35263   struct ImageDrmFormatModifierPropertiesEXT
35264   {
35265     using NativeType = VkImageDrmFormatModifierPropertiesEXT;
35266 
35267     static const bool                                  allowDuplicate = false;
35268     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
35269       StructureType::eImageDrmFormatModifierPropertiesEXT;
35270 
35271 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageDrmFormatModifierPropertiesEXTVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT35272     VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierPropertiesEXT( uint64_t drmFormatModifier_ = {} ) VULKAN_HPP_NOEXCEPT
35273       : drmFormatModifier( drmFormatModifier_ )
35274     {}
35275 
35276     VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierPropertiesEXT( ImageDrmFormatModifierPropertiesEXT const & rhs )
35277       VULKAN_HPP_NOEXCEPT = default;
35278 
ImageDrmFormatModifierPropertiesEXTVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT35279     ImageDrmFormatModifierPropertiesEXT( VkImageDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
35280       : ImageDrmFormatModifierPropertiesEXT( *reinterpret_cast<ImageDrmFormatModifierPropertiesEXT const *>( &rhs ) )
35281     {}
35282 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35283 
35284     ImageDrmFormatModifierPropertiesEXT &
35285       operator=( ImageDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35286 
35287     ImageDrmFormatModifierPropertiesEXT &
operator =VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT35288       operator=( VkImageDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
35289     {
35290       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT const *>( &rhs );
35291       return *this;
35292     }
35293 
operator VkImageDrmFormatModifierPropertiesEXT const&VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT35294     explicit operator VkImageDrmFormatModifierPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
35295     {
35296       return *reinterpret_cast<const VkImageDrmFormatModifierPropertiesEXT *>( this );
35297     }
35298 
operator VkImageDrmFormatModifierPropertiesEXT&VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT35299     explicit operator VkImageDrmFormatModifierPropertiesEXT &() VULKAN_HPP_NOEXCEPT
35300     {
35301       return *reinterpret_cast<VkImageDrmFormatModifierPropertiesEXT *>( this );
35302     }
35303 
35304 #if 14 <= VULKAN_HPP_CPP_VERSION
35305     auto
35306 #else
35307     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint64_t const &>
35308 #endif
reflectVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT35309       reflect() const VULKAN_HPP_NOEXCEPT
35310     {
35311       return std::tie( sType, pNext, drmFormatModifier );
35312     }
35313 
35314 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
35315     auto operator<=>( ImageDrmFormatModifierPropertiesEXT const & ) const = default;
35316 #else
operator ==VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT35317     bool operator==( ImageDrmFormatModifierPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
35318     {
35319       return this->reflect() == rhs.reflect();
35320     }
35321 
operator !=VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT35322     bool operator!=( ImageDrmFormatModifierPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
35323     {
35324       return this->reflect() != rhs.reflect();
35325     }
35326 #endif
35327 
35328   public:
35329     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::eImageDrmFormatModifierPropertiesEXT;
35330     void *                              pNext             = {};
35331     uint64_t                            drmFormatModifier = {};
35332   };
35333   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT ) ==
35334                               sizeof( VkImageDrmFormatModifierPropertiesEXT ),
35335                             "struct and wrapper have different size!" );
35336   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT>::value,
35337                             "struct wrapper is not a standard layout!" );
35338   VULKAN_HPP_STATIC_ASSERT(
35339     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT>::value,
35340     "ImageDrmFormatModifierPropertiesEXT is not nothrow_move_constructible!" );
35341 
35342   template <>
35343   struct CppType<StructureType, StructureType::eImageDrmFormatModifierPropertiesEXT>
35344   {
35345     using Type = ImageDrmFormatModifierPropertiesEXT;
35346   };
35347 
35348   struct ImageFormatListCreateInfo
35349   {
35350     using NativeType = VkImageFormatListCreateInfo;
35351 
35352     static const bool                                  allowDuplicate = false;
35353     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageFormatListCreateInfo;
35354 
35355 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
35356     VULKAN_HPP_CONSTEXPR
ImageFormatListCreateInfoVULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo35357       ImageFormatListCreateInfo( uint32_t                             viewFormatCount_ = {},
35358                                  const VULKAN_HPP_NAMESPACE::Format * pViewFormats_    = {} ) VULKAN_HPP_NOEXCEPT
35359       : viewFormatCount( viewFormatCount_ )
35360       , pViewFormats( pViewFormats_ )
35361     {}
35362 
35363     VULKAN_HPP_CONSTEXPR
35364       ImageFormatListCreateInfo( ImageFormatListCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35365 
ImageFormatListCreateInfoVULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo35366     ImageFormatListCreateInfo( VkImageFormatListCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
35367       : ImageFormatListCreateInfo( *reinterpret_cast<ImageFormatListCreateInfo const *>( &rhs ) )
35368     {}
35369 
35370 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ImageFormatListCreateInfoVULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo35371     ImageFormatListCreateInfo(
35372       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const & viewFormats_ )
35373       : viewFormatCount( static_cast<uint32_t>( viewFormats_.size() ) ), pViewFormats( viewFormats_.data() )
35374     {}
35375 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35376 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35377 
35378     ImageFormatListCreateInfo & operator=( ImageFormatListCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35379 
operator =VULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo35380     ImageFormatListCreateInfo & operator=( VkImageFormatListCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
35381     {
35382       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo const *>( &rhs );
35383       return *this;
35384     }
35385 
35386 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo35387     VULKAN_HPP_CONSTEXPR_14 ImageFormatListCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
35388     {
35389       pNext = pNext_;
35390       return *this;
35391     }
35392 
35393     VULKAN_HPP_CONSTEXPR_14 ImageFormatListCreateInfo &
setViewFormatCountVULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo35394                             setViewFormatCount( uint32_t viewFormatCount_ ) VULKAN_HPP_NOEXCEPT
35395     {
35396       viewFormatCount = viewFormatCount_;
35397       return *this;
35398     }
35399 
35400     VULKAN_HPP_CONSTEXPR_14 ImageFormatListCreateInfo &
setPViewFormatsVULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo35401                             setPViewFormats( const VULKAN_HPP_NAMESPACE::Format * pViewFormats_ ) VULKAN_HPP_NOEXCEPT
35402     {
35403       pViewFormats = pViewFormats_;
35404       return *this;
35405     }
35406 
35407 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setViewFormatsVULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo35408     ImageFormatListCreateInfo & setViewFormats(
35409       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const & viewFormats_ )
35410       VULKAN_HPP_NOEXCEPT
35411     {
35412       viewFormatCount = static_cast<uint32_t>( viewFormats_.size() );
35413       pViewFormats    = viewFormats_.data();
35414       return *this;
35415     }
35416 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35417 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
35418 
operator VkImageFormatListCreateInfo const&VULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo35419     explicit operator VkImageFormatListCreateInfo const &() const VULKAN_HPP_NOEXCEPT
35420     {
35421       return *reinterpret_cast<const VkImageFormatListCreateInfo *>( this );
35422     }
35423 
operator VkImageFormatListCreateInfo&VULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo35424     explicit operator VkImageFormatListCreateInfo &() VULKAN_HPP_NOEXCEPT
35425     {
35426       return *reinterpret_cast<VkImageFormatListCreateInfo *>( this );
35427     }
35428 
35429 #if 14 <= VULKAN_HPP_CPP_VERSION
35430     auto
35431 #else
35432     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
35433                const void * const &,
35434                uint32_t const &,
35435                const VULKAN_HPP_NAMESPACE::Format * const &>
35436 #endif
reflectVULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo35437       reflect() const VULKAN_HPP_NOEXCEPT
35438     {
35439       return std::tie( sType, pNext, viewFormatCount, pViewFormats );
35440     }
35441 
35442 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
35443     auto operator<=>( ImageFormatListCreateInfo const & ) const = default;
35444 #else
operator ==VULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo35445     bool operator==( ImageFormatListCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
35446     {
35447       return this->reflect() == rhs.reflect();
35448     }
35449 
operator !=VULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo35450     bool operator!=( ImageFormatListCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
35451     {
35452       return this->reflect() != rhs.reflect();
35453     }
35454 #endif
35455 
35456   public:
35457     VULKAN_HPP_NAMESPACE::StructureType  sType           = StructureType::eImageFormatListCreateInfo;
35458     const void *                         pNext           = {};
35459     uint32_t                             viewFormatCount = {};
35460     const VULKAN_HPP_NAMESPACE::Format * pViewFormats    = {};
35461   };
35462   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo ) ==
35463                               sizeof( VkImageFormatListCreateInfo ),
35464                             "struct and wrapper have different size!" );
35465   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo>::value,
35466                             "struct wrapper is not a standard layout!" );
35467   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo>::value,
35468                             "ImageFormatListCreateInfo is not nothrow_move_constructible!" );
35469 
35470   template <>
35471   struct CppType<StructureType, StructureType::eImageFormatListCreateInfo>
35472   {
35473     using Type = ImageFormatListCreateInfo;
35474   };
35475   using ImageFormatListCreateInfoKHR = ImageFormatListCreateInfo;
35476 
35477   struct ImageFormatProperties2
35478   {
35479     using NativeType = VkImageFormatProperties2;
35480 
35481     static const bool                                  allowDuplicate = false;
35482     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageFormatProperties2;
35483 
35484 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageFormatProperties2VULKAN_HPP_NAMESPACE::ImageFormatProperties235485     VULKAN_HPP_CONSTEXPR ImageFormatProperties2(
35486       VULKAN_HPP_NAMESPACE::ImageFormatProperties imageFormatProperties_ = {} ) VULKAN_HPP_NOEXCEPT
35487       : imageFormatProperties( imageFormatProperties_ )
35488     {}
35489 
35490     VULKAN_HPP_CONSTEXPR ImageFormatProperties2( ImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35491 
ImageFormatProperties2VULKAN_HPP_NAMESPACE::ImageFormatProperties235492     ImageFormatProperties2( VkImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
35493       : ImageFormatProperties2( *reinterpret_cast<ImageFormatProperties2 const *>( &rhs ) )
35494     {}
35495 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35496 
35497     ImageFormatProperties2 & operator=( ImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35498 
operator =VULKAN_HPP_NAMESPACE::ImageFormatProperties235499     ImageFormatProperties2 & operator=( VkImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
35500     {
35501       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageFormatProperties2 const *>( &rhs );
35502       return *this;
35503     }
35504 
operator VkImageFormatProperties2 const&VULKAN_HPP_NAMESPACE::ImageFormatProperties235505     explicit operator VkImageFormatProperties2 const &() const VULKAN_HPP_NOEXCEPT
35506     {
35507       return *reinterpret_cast<const VkImageFormatProperties2 *>( this );
35508     }
35509 
operator VkImageFormatProperties2&VULKAN_HPP_NAMESPACE::ImageFormatProperties235510     explicit operator VkImageFormatProperties2 &() VULKAN_HPP_NOEXCEPT
35511     {
35512       return *reinterpret_cast<VkImageFormatProperties2 *>( this );
35513     }
35514 
35515 #if 14 <= VULKAN_HPP_CPP_VERSION
35516     auto
35517 #else
35518     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
35519                void * const &,
35520                VULKAN_HPP_NAMESPACE::ImageFormatProperties const &>
35521 #endif
reflectVULKAN_HPP_NAMESPACE::ImageFormatProperties235522       reflect() const VULKAN_HPP_NOEXCEPT
35523     {
35524       return std::tie( sType, pNext, imageFormatProperties );
35525     }
35526 
35527 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
35528     auto operator<=>( ImageFormatProperties2 const & ) const = default;
35529 #else
operator ==VULKAN_HPP_NAMESPACE::ImageFormatProperties235530     bool operator==( ImageFormatProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
35531     {
35532       return this->reflect() == rhs.reflect();
35533     }
35534 
operator !=VULKAN_HPP_NAMESPACE::ImageFormatProperties235535     bool operator!=( ImageFormatProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
35536     {
35537       return this->reflect() != rhs.reflect();
35538     }
35539 #endif
35540 
35541   public:
35542     VULKAN_HPP_NAMESPACE::StructureType         sType                 = StructureType::eImageFormatProperties2;
35543     void *                                      pNext                 = {};
35544     VULKAN_HPP_NAMESPACE::ImageFormatProperties imageFormatProperties = {};
35545   };
35546   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageFormatProperties2 ) ==
35547                               sizeof( VkImageFormatProperties2 ),
35548                             "struct and wrapper have different size!" );
35549   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImageFormatProperties2>::value,
35550                             "struct wrapper is not a standard layout!" );
35551   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImageFormatProperties2>::value,
35552                             "ImageFormatProperties2 is not nothrow_move_constructible!" );
35553 
35554   template <>
35555   struct CppType<StructureType, StructureType::eImageFormatProperties2>
35556   {
35557     using Type = ImageFormatProperties2;
35558   };
35559   using ImageFormatProperties2KHR = ImageFormatProperties2;
35560 
35561   struct ImageMemoryBarrier
35562   {
35563     using NativeType = VkImageMemoryBarrier;
35564 
35565     static const bool                                  allowDuplicate = false;
35566     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageMemoryBarrier;
35567 
35568 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
35569     VULKAN_HPP_CONSTEXPR
ImageMemoryBarrierVULKAN_HPP_NAMESPACE::ImageMemoryBarrier35570       ImageMemoryBarrier( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ = {},
35571                           VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ = {},
35572                           VULKAN_HPP_NAMESPACE::ImageLayout oldLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
35573                           VULKAN_HPP_NAMESPACE::ImageLayout newLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
35574                           uint32_t                          srcQueueFamilyIndex_        = {},
35575                           uint32_t                          dstQueueFamilyIndex_        = {},
35576                           VULKAN_HPP_NAMESPACE::Image       image_                      = {},
35577                           VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange_ = {} ) VULKAN_HPP_NOEXCEPT
35578       : srcAccessMask( srcAccessMask_ )
35579       , dstAccessMask( dstAccessMask_ )
35580       , oldLayout( oldLayout_ )
35581       , newLayout( newLayout_ )
35582       , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
35583       , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
35584       , image( image_ )
35585       , subresourceRange( subresourceRange_ )
35586     {}
35587 
35588     VULKAN_HPP_CONSTEXPR ImageMemoryBarrier( ImageMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35589 
ImageMemoryBarrierVULKAN_HPP_NAMESPACE::ImageMemoryBarrier35590     ImageMemoryBarrier( VkImageMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT
35591       : ImageMemoryBarrier( *reinterpret_cast<ImageMemoryBarrier const *>( &rhs ) )
35592     {}
35593 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35594 
35595     ImageMemoryBarrier & operator=( ImageMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35596 
operator =VULKAN_HPP_NAMESPACE::ImageMemoryBarrier35597     ImageMemoryBarrier & operator=( VkImageMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT
35598     {
35599       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageMemoryBarrier const *>( &rhs );
35600       return *this;
35601     }
35602 
35603 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageMemoryBarrier35604     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
35605     {
35606       pNext = pNext_;
35607       return *this;
35608     }
35609 
35610     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier &
setSrcAccessMaskVULKAN_HPP_NAMESPACE::ImageMemoryBarrier35611                             setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ ) VULKAN_HPP_NOEXCEPT
35612     {
35613       srcAccessMask = srcAccessMask_;
35614       return *this;
35615     }
35616 
35617     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier &
setDstAccessMaskVULKAN_HPP_NAMESPACE::ImageMemoryBarrier35618                             setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ ) VULKAN_HPP_NOEXCEPT
35619     {
35620       dstAccessMask = dstAccessMask_;
35621       return *this;
35622     }
35623 
35624     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier &
setOldLayoutVULKAN_HPP_NAMESPACE::ImageMemoryBarrier35625                             setOldLayout( VULKAN_HPP_NAMESPACE::ImageLayout oldLayout_ ) VULKAN_HPP_NOEXCEPT
35626     {
35627       oldLayout = oldLayout_;
35628       return *this;
35629     }
35630 
35631     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier &
setNewLayoutVULKAN_HPP_NAMESPACE::ImageMemoryBarrier35632                             setNewLayout( VULKAN_HPP_NAMESPACE::ImageLayout newLayout_ ) VULKAN_HPP_NOEXCEPT
35633     {
35634       newLayout = newLayout_;
35635       return *this;
35636     }
35637 
35638     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier &
setSrcQueueFamilyIndexVULKAN_HPP_NAMESPACE::ImageMemoryBarrier35639                             setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
35640     {
35641       srcQueueFamilyIndex = srcQueueFamilyIndex_;
35642       return *this;
35643     }
35644 
35645     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier &
setDstQueueFamilyIndexVULKAN_HPP_NAMESPACE::ImageMemoryBarrier35646                             setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
35647     {
35648       dstQueueFamilyIndex = dstQueueFamilyIndex_;
35649       return *this;
35650     }
35651 
setImageVULKAN_HPP_NAMESPACE::ImageMemoryBarrier35652     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
35653     {
35654       image = image_;
35655       return *this;
35656     }
35657 
35658     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier &
setSubresourceRangeVULKAN_HPP_NAMESPACE::ImageMemoryBarrier35659       setSubresourceRange( VULKAN_HPP_NAMESPACE::ImageSubresourceRange const & subresourceRange_ ) VULKAN_HPP_NOEXCEPT
35660     {
35661       subresourceRange = subresourceRange_;
35662       return *this;
35663     }
35664 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
35665 
operator VkImageMemoryBarrier const&VULKAN_HPP_NAMESPACE::ImageMemoryBarrier35666     explicit operator VkImageMemoryBarrier const &() const VULKAN_HPP_NOEXCEPT
35667     {
35668       return *reinterpret_cast<const VkImageMemoryBarrier *>( this );
35669     }
35670 
operator VkImageMemoryBarrier&VULKAN_HPP_NAMESPACE::ImageMemoryBarrier35671     explicit operator VkImageMemoryBarrier &() VULKAN_HPP_NOEXCEPT
35672     {
35673       return *reinterpret_cast<VkImageMemoryBarrier *>( this );
35674     }
35675 
35676 #if 14 <= VULKAN_HPP_CPP_VERSION
35677     auto
35678 #else
35679     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
35680                const void * const &,
35681                VULKAN_HPP_NAMESPACE::AccessFlags const &,
35682                VULKAN_HPP_NAMESPACE::AccessFlags const &,
35683                VULKAN_HPP_NAMESPACE::ImageLayout const &,
35684                VULKAN_HPP_NAMESPACE::ImageLayout const &,
35685                uint32_t const &,
35686                uint32_t const &,
35687                VULKAN_HPP_NAMESPACE::Image const &,
35688                VULKAN_HPP_NAMESPACE::ImageSubresourceRange const &>
35689 #endif
reflectVULKAN_HPP_NAMESPACE::ImageMemoryBarrier35690       reflect() const VULKAN_HPP_NOEXCEPT
35691     {
35692       return std::tie( sType,
35693                        pNext,
35694                        srcAccessMask,
35695                        dstAccessMask,
35696                        oldLayout,
35697                        newLayout,
35698                        srcQueueFamilyIndex,
35699                        dstQueueFamilyIndex,
35700                        image,
35701                        subresourceRange );
35702     }
35703 
35704 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
35705     auto operator<=>( ImageMemoryBarrier const & ) const = default;
35706 #else
operator ==VULKAN_HPP_NAMESPACE::ImageMemoryBarrier35707     bool operator==( ImageMemoryBarrier const & rhs ) const VULKAN_HPP_NOEXCEPT
35708     {
35709       return this->reflect() == rhs.reflect();
35710     }
35711 
operator !=VULKAN_HPP_NAMESPACE::ImageMemoryBarrier35712     bool operator!=( ImageMemoryBarrier const & rhs ) const VULKAN_HPP_NOEXCEPT
35713     {
35714       return this->reflect() != rhs.reflect();
35715     }
35716 #endif
35717 
35718   public:
35719     VULKAN_HPP_NAMESPACE::StructureType         sType               = StructureType::eImageMemoryBarrier;
35720     const void *                                pNext               = {};
35721     VULKAN_HPP_NAMESPACE::AccessFlags           srcAccessMask       = {};
35722     VULKAN_HPP_NAMESPACE::AccessFlags           dstAccessMask       = {};
35723     VULKAN_HPP_NAMESPACE::ImageLayout           oldLayout           = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
35724     VULKAN_HPP_NAMESPACE::ImageLayout           newLayout           = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
35725     uint32_t                                    srcQueueFamilyIndex = {};
35726     uint32_t                                    dstQueueFamilyIndex = {};
35727     VULKAN_HPP_NAMESPACE::Image                 image               = {};
35728     VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange    = {};
35729   };
35730   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageMemoryBarrier ) == sizeof( VkImageMemoryBarrier ),
35731                             "struct and wrapper have different size!" );
35732   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImageMemoryBarrier>::value,
35733                             "struct wrapper is not a standard layout!" );
35734   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImageMemoryBarrier>::value,
35735                             "ImageMemoryBarrier is not nothrow_move_constructible!" );
35736 
35737   template <>
35738   struct CppType<StructureType, StructureType::eImageMemoryBarrier>
35739   {
35740     using Type = ImageMemoryBarrier;
35741   };
35742 
35743   struct ImageMemoryRequirementsInfo2
35744   {
35745     using NativeType = VkImageMemoryRequirementsInfo2;
35746 
35747     static const bool                                  allowDuplicate = false;
35748     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageMemoryRequirementsInfo2;
35749 
35750 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageMemoryRequirementsInfo2VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo235751     VULKAN_HPP_CONSTEXPR ImageMemoryRequirementsInfo2( VULKAN_HPP_NAMESPACE::Image image_ = {} ) VULKAN_HPP_NOEXCEPT
35752       : image( image_ )
35753     {}
35754 
35755     VULKAN_HPP_CONSTEXPR
35756       ImageMemoryRequirementsInfo2( ImageMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35757 
ImageMemoryRequirementsInfo2VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo235758     ImageMemoryRequirementsInfo2( VkImageMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
35759       : ImageMemoryRequirementsInfo2( *reinterpret_cast<ImageMemoryRequirementsInfo2 const *>( &rhs ) )
35760     {}
35761 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35762 
35763     ImageMemoryRequirementsInfo2 & operator=( ImageMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35764 
operator =VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo235765     ImageMemoryRequirementsInfo2 & operator=( VkImageMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
35766     {
35767       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 const *>( &rhs );
35768       return *this;
35769     }
35770 
35771 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo235772     VULKAN_HPP_CONSTEXPR_14 ImageMemoryRequirementsInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
35773     {
35774       pNext = pNext_;
35775       return *this;
35776     }
35777 
35778     VULKAN_HPP_CONSTEXPR_14 ImageMemoryRequirementsInfo2 &
setImageVULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo235779                             setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
35780     {
35781       image = image_;
35782       return *this;
35783     }
35784 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
35785 
operator VkImageMemoryRequirementsInfo2 const&VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo235786     explicit operator VkImageMemoryRequirementsInfo2 const &() const VULKAN_HPP_NOEXCEPT
35787     {
35788       return *reinterpret_cast<const VkImageMemoryRequirementsInfo2 *>( this );
35789     }
35790 
operator VkImageMemoryRequirementsInfo2&VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo235791     explicit operator VkImageMemoryRequirementsInfo2 &() VULKAN_HPP_NOEXCEPT
35792     {
35793       return *reinterpret_cast<VkImageMemoryRequirementsInfo2 *>( this );
35794     }
35795 
35796 #if 14 <= VULKAN_HPP_CPP_VERSION
35797     auto
35798 #else
35799     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Image const &>
35800 #endif
reflectVULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo235801       reflect() const VULKAN_HPP_NOEXCEPT
35802     {
35803       return std::tie( sType, pNext, image );
35804     }
35805 
35806 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
35807     auto operator<=>( ImageMemoryRequirementsInfo2 const & ) const = default;
35808 #else
operator ==VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo235809     bool operator==( ImageMemoryRequirementsInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
35810     {
35811       return this->reflect() == rhs.reflect();
35812     }
35813 
operator !=VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo235814     bool operator!=( ImageMemoryRequirementsInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
35815     {
35816       return this->reflect() != rhs.reflect();
35817     }
35818 #endif
35819 
35820   public:
35821     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageMemoryRequirementsInfo2;
35822     const void *                        pNext = {};
35823     VULKAN_HPP_NAMESPACE::Image         image = {};
35824   };
35825   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 ) ==
35826                               sizeof( VkImageMemoryRequirementsInfo2 ),
35827                             "struct and wrapper have different size!" );
35828   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2>::value,
35829                             "struct wrapper is not a standard layout!" );
35830   VULKAN_HPP_STATIC_ASSERT(
35831     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2>::value,
35832     "ImageMemoryRequirementsInfo2 is not nothrow_move_constructible!" );
35833 
35834   template <>
35835   struct CppType<StructureType, StructureType::eImageMemoryRequirementsInfo2>
35836   {
35837     using Type = ImageMemoryRequirementsInfo2;
35838   };
35839   using ImageMemoryRequirementsInfo2KHR = ImageMemoryRequirementsInfo2;
35840 
35841 #if defined( VK_USE_PLATFORM_FUCHSIA )
35842   struct ImagePipeSurfaceCreateInfoFUCHSIA
35843   {
35844     using NativeType = VkImagePipeSurfaceCreateInfoFUCHSIA;
35845 
35846     static const bool                                  allowDuplicate = false;
35847     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
35848       StructureType::eImagepipeSurfaceCreateInfoFUCHSIA;
35849 
35850 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
35851     VULKAN_HPP_CONSTEXPR
ImagePipeSurfaceCreateInfoFUCHSIAVULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA35852       ImagePipeSurfaceCreateInfoFUCHSIA( VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateFlagsFUCHSIA flags_ = {},
35853                                          zx_handle_t imagePipeHandle_ = {} ) VULKAN_HPP_NOEXCEPT
35854       : flags( flags_ )
35855       , imagePipeHandle( imagePipeHandle_ )
35856     {}
35857 
35858     VULKAN_HPP_CONSTEXPR
35859       ImagePipeSurfaceCreateInfoFUCHSIA( ImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35860 
ImagePipeSurfaceCreateInfoFUCHSIAVULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA35861     ImagePipeSurfaceCreateInfoFUCHSIA( VkImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
35862       : ImagePipeSurfaceCreateInfoFUCHSIA( *reinterpret_cast<ImagePipeSurfaceCreateInfoFUCHSIA const *>( &rhs ) )
35863     {}
35864 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35865 
35866     ImagePipeSurfaceCreateInfoFUCHSIA &
35867       operator=( ImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35868 
operator =VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA35869     ImagePipeSurfaceCreateInfoFUCHSIA & operator=( VkImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
35870     {
35871       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA const *>( &rhs );
35872       return *this;
35873     }
35874 
35875 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA35876     VULKAN_HPP_CONSTEXPR_14 ImagePipeSurfaceCreateInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
35877     {
35878       pNext = pNext_;
35879       return *this;
35880     }
35881 
35882     VULKAN_HPP_CONSTEXPR_14 ImagePipeSurfaceCreateInfoFUCHSIA &
setFlagsVULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA35883       setFlags( VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateFlagsFUCHSIA flags_ ) VULKAN_HPP_NOEXCEPT
35884     {
35885       flags = flags_;
35886       return *this;
35887     }
35888 
35889     VULKAN_HPP_CONSTEXPR_14 ImagePipeSurfaceCreateInfoFUCHSIA &
setImagePipeHandleVULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA35890                             setImagePipeHandle( zx_handle_t imagePipeHandle_ ) VULKAN_HPP_NOEXCEPT
35891     {
35892       imagePipeHandle = imagePipeHandle_;
35893       return *this;
35894     }
35895 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
35896 
operator VkImagePipeSurfaceCreateInfoFUCHSIA const&VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA35897     explicit operator VkImagePipeSurfaceCreateInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
35898     {
35899       return *reinterpret_cast<const VkImagePipeSurfaceCreateInfoFUCHSIA *>( this );
35900     }
35901 
operator VkImagePipeSurfaceCreateInfoFUCHSIA&VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA35902     explicit operator VkImagePipeSurfaceCreateInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT
35903     {
35904       return *reinterpret_cast<VkImagePipeSurfaceCreateInfoFUCHSIA *>( this );
35905     }
35906 
35907 #  if 14 <= VULKAN_HPP_CPP_VERSION
35908     auto
35909 #  else
35910     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
35911                const void * const &,
35912                VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateFlagsFUCHSIA const &,
35913                zx_handle_t const &>
35914 #  endif
reflectVULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA35915       reflect() const VULKAN_HPP_NOEXCEPT
35916     {
35917       return std::tie( sType, pNext, flags, imagePipeHandle );
35918     }
35919 
35920 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
35921     auto operator<=>( ImagePipeSurfaceCreateInfoFUCHSIA const & ) const = default;
35922 #  else
operator ==VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA35923     bool operator==( ImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
35924     {
35925       return this->reflect() == rhs.reflect();
35926     }
35927 
operator !=VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA35928     bool operator!=( ImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
35929     {
35930       return this->reflect() != rhs.reflect();
35931     }
35932 #  endif
35933 
35934   public:
35935     VULKAN_HPP_NAMESPACE::StructureType                      sType = StructureType::eImagepipeSurfaceCreateInfoFUCHSIA;
35936     const void *                                             pNext = {};
35937     VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateFlagsFUCHSIA flags = {};
35938     zx_handle_t                                              imagePipeHandle = {};
35939   };
35940   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA ) ==
35941                               sizeof( VkImagePipeSurfaceCreateInfoFUCHSIA ),
35942                             "struct and wrapper have different size!" );
35943   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA>::value,
35944                             "struct wrapper is not a standard layout!" );
35945   VULKAN_HPP_STATIC_ASSERT(
35946     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA>::value,
35947     "ImagePipeSurfaceCreateInfoFUCHSIA is not nothrow_move_constructible!" );
35948 
35949   template <>
35950   struct CppType<StructureType, StructureType::eImagepipeSurfaceCreateInfoFUCHSIA>
35951   {
35952     using Type = ImagePipeSurfaceCreateInfoFUCHSIA;
35953   };
35954 #endif /*VK_USE_PLATFORM_FUCHSIA*/
35955 
35956   struct ImagePlaneMemoryRequirementsInfo
35957   {
35958     using NativeType = VkImagePlaneMemoryRequirementsInfo;
35959 
35960     static const bool                                  allowDuplicate = false;
35961     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImagePlaneMemoryRequirementsInfo;
35962 
35963 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
35964     VULKAN_HPP_CONSTEXPR
ImagePlaneMemoryRequirementsInfoVULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo35965       ImagePlaneMemoryRequirementsInfo( VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect_ =
35966                                           VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor ) VULKAN_HPP_NOEXCEPT
35967       : planeAspect( planeAspect_ )
35968     {}
35969 
35970     VULKAN_HPP_CONSTEXPR
35971       ImagePlaneMemoryRequirementsInfo( ImagePlaneMemoryRequirementsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35972 
ImagePlaneMemoryRequirementsInfoVULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo35973     ImagePlaneMemoryRequirementsInfo( VkImagePlaneMemoryRequirementsInfo const & rhs ) VULKAN_HPP_NOEXCEPT
35974       : ImagePlaneMemoryRequirementsInfo( *reinterpret_cast<ImagePlaneMemoryRequirementsInfo const *>( &rhs ) )
35975     {}
35976 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35977 
35978     ImagePlaneMemoryRequirementsInfo &
35979       operator=( ImagePlaneMemoryRequirementsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35980 
operator =VULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo35981     ImagePlaneMemoryRequirementsInfo & operator=( VkImagePlaneMemoryRequirementsInfo const & rhs ) VULKAN_HPP_NOEXCEPT
35982     {
35983       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo const *>( &rhs );
35984       return *this;
35985     }
35986 
35987 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo35988     VULKAN_HPP_CONSTEXPR_14 ImagePlaneMemoryRequirementsInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
35989     {
35990       pNext = pNext_;
35991       return *this;
35992     }
35993 
35994     VULKAN_HPP_CONSTEXPR_14 ImagePlaneMemoryRequirementsInfo &
setPlaneAspectVULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo35995                             setPlaneAspect( VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect_ ) VULKAN_HPP_NOEXCEPT
35996     {
35997       planeAspect = planeAspect_;
35998       return *this;
35999     }
36000 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
36001 
operator VkImagePlaneMemoryRequirementsInfo const&VULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo36002     explicit operator VkImagePlaneMemoryRequirementsInfo const &() const VULKAN_HPP_NOEXCEPT
36003     {
36004       return *reinterpret_cast<const VkImagePlaneMemoryRequirementsInfo *>( this );
36005     }
36006 
operator VkImagePlaneMemoryRequirementsInfo&VULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo36007     explicit operator VkImagePlaneMemoryRequirementsInfo &() VULKAN_HPP_NOEXCEPT
36008     {
36009       return *reinterpret_cast<VkImagePlaneMemoryRequirementsInfo *>( this );
36010     }
36011 
36012 #if 14 <= VULKAN_HPP_CPP_VERSION
36013     auto
36014 #else
36015     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
36016                const void * const &,
36017                VULKAN_HPP_NAMESPACE::ImageAspectFlagBits const &>
36018 #endif
reflectVULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo36019       reflect() const VULKAN_HPP_NOEXCEPT
36020     {
36021       return std::tie( sType, pNext, planeAspect );
36022     }
36023 
36024 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
36025     auto operator<=>( ImagePlaneMemoryRequirementsInfo const & ) const = default;
36026 #else
operator ==VULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo36027     bool operator==( ImagePlaneMemoryRequirementsInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
36028     {
36029       return this->reflect() == rhs.reflect();
36030     }
36031 
operator !=VULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo36032     bool operator!=( ImagePlaneMemoryRequirementsInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
36033     {
36034       return this->reflect() != rhs.reflect();
36035     }
36036 #endif
36037 
36038   public:
36039     VULKAN_HPP_NAMESPACE::StructureType       sType       = StructureType::eImagePlaneMemoryRequirementsInfo;
36040     const void *                              pNext       = {};
36041     VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor;
36042   };
36043   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo ) ==
36044                               sizeof( VkImagePlaneMemoryRequirementsInfo ),
36045                             "struct and wrapper have different size!" );
36046   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo>::value,
36047                             "struct wrapper is not a standard layout!" );
36048   VULKAN_HPP_STATIC_ASSERT(
36049     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo>::value,
36050     "ImagePlaneMemoryRequirementsInfo is not nothrow_move_constructible!" );
36051 
36052   template <>
36053   struct CppType<StructureType, StructureType::eImagePlaneMemoryRequirementsInfo>
36054   {
36055     using Type = ImagePlaneMemoryRequirementsInfo;
36056   };
36057   using ImagePlaneMemoryRequirementsInfoKHR = ImagePlaneMemoryRequirementsInfo;
36058 
36059   struct ImageResolve
36060   {
36061     using NativeType = VkImageResolve;
36062 
36063 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageResolveVULKAN_HPP_NAMESPACE::ImageResolve36064     VULKAN_HPP_CONSTEXPR ImageResolve( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource_ = {},
36065                                        VULKAN_HPP_NAMESPACE::Offset3D               srcOffset_      = {},
36066                                        VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource_ = {},
36067                                        VULKAN_HPP_NAMESPACE::Offset3D               dstOffset_      = {},
36068                                        VULKAN_HPP_NAMESPACE::Extent3D               extent_ = {} ) VULKAN_HPP_NOEXCEPT
36069       : srcSubresource( srcSubresource_ )
36070       , srcOffset( srcOffset_ )
36071       , dstSubresource( dstSubresource_ )
36072       , dstOffset( dstOffset_ )
36073       , extent( extent_ )
36074     {}
36075 
36076     VULKAN_HPP_CONSTEXPR ImageResolve( ImageResolve const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36077 
ImageResolveVULKAN_HPP_NAMESPACE::ImageResolve36078     ImageResolve( VkImageResolve const & rhs ) VULKAN_HPP_NOEXCEPT
36079       : ImageResolve( *reinterpret_cast<ImageResolve const *>( &rhs ) )
36080     {}
36081 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36082 
36083     ImageResolve & operator=( ImageResolve const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36084 
operator =VULKAN_HPP_NAMESPACE::ImageResolve36085     ImageResolve & operator=( VkImageResolve const & rhs ) VULKAN_HPP_NOEXCEPT
36086     {
36087       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageResolve const *>( &rhs );
36088       return *this;
36089     }
36090 
36091 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
36092     VULKAN_HPP_CONSTEXPR_14 ImageResolve &
setSrcSubresourceVULKAN_HPP_NAMESPACE::ImageResolve36093       setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT
36094     {
36095       srcSubresource = srcSubresource_;
36096       return *this;
36097     }
36098 
36099     VULKAN_HPP_CONSTEXPR_14 ImageResolve &
setSrcOffsetVULKAN_HPP_NAMESPACE::ImageResolve36100                             setSrcOffset( VULKAN_HPP_NAMESPACE::Offset3D const & srcOffset_ ) VULKAN_HPP_NOEXCEPT
36101     {
36102       srcOffset = srcOffset_;
36103       return *this;
36104     }
36105 
36106     VULKAN_HPP_CONSTEXPR_14 ImageResolve &
setDstSubresourceVULKAN_HPP_NAMESPACE::ImageResolve36107       setDstSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & dstSubresource_ ) VULKAN_HPP_NOEXCEPT
36108     {
36109       dstSubresource = dstSubresource_;
36110       return *this;
36111     }
36112 
36113     VULKAN_HPP_CONSTEXPR_14 ImageResolve &
setDstOffsetVULKAN_HPP_NAMESPACE::ImageResolve36114                             setDstOffset( VULKAN_HPP_NAMESPACE::Offset3D const & dstOffset_ ) VULKAN_HPP_NOEXCEPT
36115     {
36116       dstOffset = dstOffset_;
36117       return *this;
36118     }
36119 
36120     VULKAN_HPP_CONSTEXPR_14 ImageResolve &
setExtentVULKAN_HPP_NAMESPACE::ImageResolve36121                             setExtent( VULKAN_HPP_NAMESPACE::Extent3D const & extent_ ) VULKAN_HPP_NOEXCEPT
36122     {
36123       extent = extent_;
36124       return *this;
36125     }
36126 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
36127 
operator VkImageResolve const&VULKAN_HPP_NAMESPACE::ImageResolve36128     explicit operator VkImageResolve const &() const VULKAN_HPP_NOEXCEPT
36129     {
36130       return *reinterpret_cast<const VkImageResolve *>( this );
36131     }
36132 
operator VkImageResolve&VULKAN_HPP_NAMESPACE::ImageResolve36133     explicit operator VkImageResolve &() VULKAN_HPP_NOEXCEPT
36134     {
36135       return *reinterpret_cast<VkImageResolve *>( this );
36136     }
36137 
36138 #if 14 <= VULKAN_HPP_CPP_VERSION
36139     auto
36140 #else
36141     std::tuple<VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
36142                VULKAN_HPP_NAMESPACE::Offset3D const &,
36143                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
36144                VULKAN_HPP_NAMESPACE::Offset3D const &,
36145                VULKAN_HPP_NAMESPACE::Extent3D const &>
36146 #endif
reflectVULKAN_HPP_NAMESPACE::ImageResolve36147       reflect() const VULKAN_HPP_NOEXCEPT
36148     {
36149       return std::tie( srcSubresource, srcOffset, dstSubresource, dstOffset, extent );
36150     }
36151 
36152 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
36153     auto operator<=>( ImageResolve const & ) const = default;
36154 #else
operator ==VULKAN_HPP_NAMESPACE::ImageResolve36155     bool operator==( ImageResolve const & rhs ) const VULKAN_HPP_NOEXCEPT
36156     {
36157       return this->reflect() == rhs.reflect();
36158     }
36159 
operator !=VULKAN_HPP_NAMESPACE::ImageResolve36160     bool operator!=( ImageResolve const & rhs ) const VULKAN_HPP_NOEXCEPT
36161     {
36162       return this->reflect() != rhs.reflect();
36163     }
36164 #endif
36165 
36166   public:
36167     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource = {};
36168     VULKAN_HPP_NAMESPACE::Offset3D               srcOffset      = {};
36169     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource = {};
36170     VULKAN_HPP_NAMESPACE::Offset3D               dstOffset      = {};
36171     VULKAN_HPP_NAMESPACE::Extent3D               extent         = {};
36172   };
36173   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageResolve ) == sizeof( VkImageResolve ),
36174                             "struct and wrapper have different size!" );
36175   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImageResolve>::value,
36176                             "struct wrapper is not a standard layout!" );
36177   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImageResolve>::value,
36178                             "ImageResolve is not nothrow_move_constructible!" );
36179 
36180   struct ImageResolve2KHR
36181   {
36182     using NativeType = VkImageResolve2KHR;
36183 
36184     static const bool                                  allowDuplicate = false;
36185     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageResolve2KHR;
36186 
36187 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageResolve2KHRVULKAN_HPP_NAMESPACE::ImageResolve2KHR36188     VULKAN_HPP_CONSTEXPR ImageResolve2KHR( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource_ = {},
36189                                            VULKAN_HPP_NAMESPACE::Offset3D               srcOffset_      = {},
36190                                            VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource_ = {},
36191                                            VULKAN_HPP_NAMESPACE::Offset3D               dstOffset_      = {},
36192                                            VULKAN_HPP_NAMESPACE::Extent3D extent_ = {} ) VULKAN_HPP_NOEXCEPT
36193       : srcSubresource( srcSubresource_ )
36194       , srcOffset( srcOffset_ )
36195       , dstSubresource( dstSubresource_ )
36196       , dstOffset( dstOffset_ )
36197       , extent( extent_ )
36198     {}
36199 
36200     VULKAN_HPP_CONSTEXPR ImageResolve2KHR( ImageResolve2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36201 
ImageResolve2KHRVULKAN_HPP_NAMESPACE::ImageResolve2KHR36202     ImageResolve2KHR( VkImageResolve2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
36203       : ImageResolve2KHR( *reinterpret_cast<ImageResolve2KHR const *>( &rhs ) )
36204     {}
36205 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36206 
36207     ImageResolve2KHR & operator=( ImageResolve2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36208 
operator =VULKAN_HPP_NAMESPACE::ImageResolve2KHR36209     ImageResolve2KHR & operator=( VkImageResolve2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
36210     {
36211       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageResolve2KHR const *>( &rhs );
36212       return *this;
36213     }
36214 
36215 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageResolve2KHR36216     VULKAN_HPP_CONSTEXPR_14 ImageResolve2KHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
36217     {
36218       pNext = pNext_;
36219       return *this;
36220     }
36221 
36222     VULKAN_HPP_CONSTEXPR_14 ImageResolve2KHR &
setSrcSubresourceVULKAN_HPP_NAMESPACE::ImageResolve2KHR36223       setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT
36224     {
36225       srcSubresource = srcSubresource_;
36226       return *this;
36227     }
36228 
36229     VULKAN_HPP_CONSTEXPR_14 ImageResolve2KHR &
setSrcOffsetVULKAN_HPP_NAMESPACE::ImageResolve2KHR36230                             setSrcOffset( VULKAN_HPP_NAMESPACE::Offset3D const & srcOffset_ ) VULKAN_HPP_NOEXCEPT
36231     {
36232       srcOffset = srcOffset_;
36233       return *this;
36234     }
36235 
36236     VULKAN_HPP_CONSTEXPR_14 ImageResolve2KHR &
setDstSubresourceVULKAN_HPP_NAMESPACE::ImageResolve2KHR36237       setDstSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & dstSubresource_ ) VULKAN_HPP_NOEXCEPT
36238     {
36239       dstSubresource = dstSubresource_;
36240       return *this;
36241     }
36242 
36243     VULKAN_HPP_CONSTEXPR_14 ImageResolve2KHR &
setDstOffsetVULKAN_HPP_NAMESPACE::ImageResolve2KHR36244                             setDstOffset( VULKAN_HPP_NAMESPACE::Offset3D const & dstOffset_ ) VULKAN_HPP_NOEXCEPT
36245     {
36246       dstOffset = dstOffset_;
36247       return *this;
36248     }
36249 
36250     VULKAN_HPP_CONSTEXPR_14 ImageResolve2KHR &
setExtentVULKAN_HPP_NAMESPACE::ImageResolve2KHR36251                             setExtent( VULKAN_HPP_NAMESPACE::Extent3D const & extent_ ) VULKAN_HPP_NOEXCEPT
36252     {
36253       extent = extent_;
36254       return *this;
36255     }
36256 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
36257 
operator VkImageResolve2KHR const&VULKAN_HPP_NAMESPACE::ImageResolve2KHR36258     explicit operator VkImageResolve2KHR const &() const VULKAN_HPP_NOEXCEPT
36259     {
36260       return *reinterpret_cast<const VkImageResolve2KHR *>( this );
36261     }
36262 
operator VkImageResolve2KHR&VULKAN_HPP_NAMESPACE::ImageResolve2KHR36263     explicit operator VkImageResolve2KHR &() VULKAN_HPP_NOEXCEPT
36264     {
36265       return *reinterpret_cast<VkImageResolve2KHR *>( this );
36266     }
36267 
36268 #if 14 <= VULKAN_HPP_CPP_VERSION
36269     auto
36270 #else
36271     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
36272                const void * const &,
36273                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
36274                VULKAN_HPP_NAMESPACE::Offset3D const &,
36275                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
36276                VULKAN_HPP_NAMESPACE::Offset3D const &,
36277                VULKAN_HPP_NAMESPACE::Extent3D const &>
36278 #endif
reflectVULKAN_HPP_NAMESPACE::ImageResolve2KHR36279       reflect() const VULKAN_HPP_NOEXCEPT
36280     {
36281       return std::tie( sType, pNext, srcSubresource, srcOffset, dstSubresource, dstOffset, extent );
36282     }
36283 
36284 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
36285     auto operator<=>( ImageResolve2KHR const & ) const = default;
36286 #else
operator ==VULKAN_HPP_NAMESPACE::ImageResolve2KHR36287     bool operator==( ImageResolve2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
36288     {
36289       return this->reflect() == rhs.reflect();
36290     }
36291 
operator !=VULKAN_HPP_NAMESPACE::ImageResolve2KHR36292     bool operator!=( ImageResolve2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
36293     {
36294       return this->reflect() != rhs.reflect();
36295     }
36296 #endif
36297 
36298   public:
36299     VULKAN_HPP_NAMESPACE::StructureType          sType          = StructureType::eImageResolve2KHR;
36300     const void *                                 pNext          = {};
36301     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource = {};
36302     VULKAN_HPP_NAMESPACE::Offset3D               srcOffset      = {};
36303     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource = {};
36304     VULKAN_HPP_NAMESPACE::Offset3D               dstOffset      = {};
36305     VULKAN_HPP_NAMESPACE::Extent3D               extent         = {};
36306   };
36307   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageResolve2KHR ) == sizeof( VkImageResolve2KHR ),
36308                             "struct and wrapper have different size!" );
36309   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImageResolve2KHR>::value,
36310                             "struct wrapper is not a standard layout!" );
36311   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImageResolve2KHR>::value,
36312                             "ImageResolve2KHR is not nothrow_move_constructible!" );
36313 
36314   template <>
36315   struct CppType<StructureType, StructureType::eImageResolve2KHR>
36316   {
36317     using Type = ImageResolve2KHR;
36318   };
36319 
36320   struct ImageSparseMemoryRequirementsInfo2
36321   {
36322     using NativeType = VkImageSparseMemoryRequirementsInfo2;
36323 
36324     static const bool                                  allowDuplicate = false;
36325     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
36326       StructureType::eImageSparseMemoryRequirementsInfo2;
36327 
36328 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
36329     VULKAN_HPP_CONSTEXPR
ImageSparseMemoryRequirementsInfo2VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo236330       ImageSparseMemoryRequirementsInfo2( VULKAN_HPP_NAMESPACE::Image image_ = {} ) VULKAN_HPP_NOEXCEPT
36331       : image( image_ )
36332     {}
36333 
36334     VULKAN_HPP_CONSTEXPR ImageSparseMemoryRequirementsInfo2( ImageSparseMemoryRequirementsInfo2 const & rhs )
36335       VULKAN_HPP_NOEXCEPT = default;
36336 
ImageSparseMemoryRequirementsInfo2VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo236337     ImageSparseMemoryRequirementsInfo2( VkImageSparseMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
36338       : ImageSparseMemoryRequirementsInfo2( *reinterpret_cast<ImageSparseMemoryRequirementsInfo2 const *>( &rhs ) )
36339     {}
36340 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36341 
36342     ImageSparseMemoryRequirementsInfo2 &
36343       operator=( ImageSparseMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36344 
36345     ImageSparseMemoryRequirementsInfo2 &
operator =VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo236346       operator=( VkImageSparseMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
36347     {
36348       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 const *>( &rhs );
36349       return *this;
36350     }
36351 
36352 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo236353     VULKAN_HPP_CONSTEXPR_14 ImageSparseMemoryRequirementsInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
36354     {
36355       pNext = pNext_;
36356       return *this;
36357     }
36358 
36359     VULKAN_HPP_CONSTEXPR_14 ImageSparseMemoryRequirementsInfo2 &
setImageVULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo236360                             setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
36361     {
36362       image = image_;
36363       return *this;
36364     }
36365 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
36366 
operator VkImageSparseMemoryRequirementsInfo2 const&VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo236367     explicit operator VkImageSparseMemoryRequirementsInfo2 const &() const VULKAN_HPP_NOEXCEPT
36368     {
36369       return *reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2 *>( this );
36370     }
36371 
operator VkImageSparseMemoryRequirementsInfo2&VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo236372     explicit operator VkImageSparseMemoryRequirementsInfo2 &() VULKAN_HPP_NOEXCEPT
36373     {
36374       return *reinterpret_cast<VkImageSparseMemoryRequirementsInfo2 *>( this );
36375     }
36376 
36377 #if 14 <= VULKAN_HPP_CPP_VERSION
36378     auto
36379 #else
36380     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Image const &>
36381 #endif
reflectVULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo236382       reflect() const VULKAN_HPP_NOEXCEPT
36383     {
36384       return std::tie( sType, pNext, image );
36385     }
36386 
36387 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
36388     auto operator<=>( ImageSparseMemoryRequirementsInfo2 const & ) const = default;
36389 #else
operator ==VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo236390     bool operator==( ImageSparseMemoryRequirementsInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
36391     {
36392       return this->reflect() == rhs.reflect();
36393     }
36394 
operator !=VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo236395     bool operator!=( ImageSparseMemoryRequirementsInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
36396     {
36397       return this->reflect() != rhs.reflect();
36398     }
36399 #endif
36400 
36401   public:
36402     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageSparseMemoryRequirementsInfo2;
36403     const void *                        pNext = {};
36404     VULKAN_HPP_NAMESPACE::Image         image = {};
36405   };
36406   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 ) ==
36407                               sizeof( VkImageSparseMemoryRequirementsInfo2 ),
36408                             "struct and wrapper have different size!" );
36409   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2>::value,
36410                             "struct wrapper is not a standard layout!" );
36411   VULKAN_HPP_STATIC_ASSERT(
36412     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2>::value,
36413     "ImageSparseMemoryRequirementsInfo2 is not nothrow_move_constructible!" );
36414 
36415   template <>
36416   struct CppType<StructureType, StructureType::eImageSparseMemoryRequirementsInfo2>
36417   {
36418     using Type = ImageSparseMemoryRequirementsInfo2;
36419   };
36420   using ImageSparseMemoryRequirementsInfo2KHR = ImageSparseMemoryRequirementsInfo2;
36421 
36422   struct ImageStencilUsageCreateInfo
36423   {
36424     using NativeType = VkImageStencilUsageCreateInfo;
36425 
36426     static const bool                                  allowDuplicate = false;
36427     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageStencilUsageCreateInfo;
36428 
36429 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
36430     VULKAN_HPP_CONSTEXPR
ImageStencilUsageCreateInfoVULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo36431       ImageStencilUsageCreateInfo( VULKAN_HPP_NAMESPACE::ImageUsageFlags stencilUsage_ = {} ) VULKAN_HPP_NOEXCEPT
36432       : stencilUsage( stencilUsage_ )
36433     {}
36434 
36435     VULKAN_HPP_CONSTEXPR
36436       ImageStencilUsageCreateInfo( ImageStencilUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36437 
ImageStencilUsageCreateInfoVULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo36438     ImageStencilUsageCreateInfo( VkImageStencilUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
36439       : ImageStencilUsageCreateInfo( *reinterpret_cast<ImageStencilUsageCreateInfo const *>( &rhs ) )
36440     {}
36441 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36442 
36443     ImageStencilUsageCreateInfo & operator=( ImageStencilUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36444 
operator =VULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo36445     ImageStencilUsageCreateInfo & operator=( VkImageStencilUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
36446     {
36447       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo const *>( &rhs );
36448       return *this;
36449     }
36450 
36451 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo36452     VULKAN_HPP_CONSTEXPR_14 ImageStencilUsageCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
36453     {
36454       pNext = pNext_;
36455       return *this;
36456     }
36457 
36458     VULKAN_HPP_CONSTEXPR_14 ImageStencilUsageCreateInfo &
setStencilUsageVULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo36459                             setStencilUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags stencilUsage_ ) VULKAN_HPP_NOEXCEPT
36460     {
36461       stencilUsage = stencilUsage_;
36462       return *this;
36463     }
36464 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
36465 
operator VkImageStencilUsageCreateInfo const&VULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo36466     explicit operator VkImageStencilUsageCreateInfo const &() const VULKAN_HPP_NOEXCEPT
36467     {
36468       return *reinterpret_cast<const VkImageStencilUsageCreateInfo *>( this );
36469     }
36470 
operator VkImageStencilUsageCreateInfo&VULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo36471     explicit operator VkImageStencilUsageCreateInfo &() VULKAN_HPP_NOEXCEPT
36472     {
36473       return *reinterpret_cast<VkImageStencilUsageCreateInfo *>( this );
36474     }
36475 
36476 #if 14 <= VULKAN_HPP_CPP_VERSION
36477     auto
36478 #else
36479     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
36480                const void * const &,
36481                VULKAN_HPP_NAMESPACE::ImageUsageFlags const &>
36482 #endif
reflectVULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo36483       reflect() const VULKAN_HPP_NOEXCEPT
36484     {
36485       return std::tie( sType, pNext, stencilUsage );
36486     }
36487 
36488 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
36489     auto operator<=>( ImageStencilUsageCreateInfo const & ) const = default;
36490 #else
operator ==VULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo36491     bool operator==( ImageStencilUsageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
36492     {
36493       return this->reflect() == rhs.reflect();
36494     }
36495 
operator !=VULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo36496     bool operator!=( ImageStencilUsageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
36497     {
36498       return this->reflect() != rhs.reflect();
36499     }
36500 #endif
36501 
36502   public:
36503     VULKAN_HPP_NAMESPACE::StructureType   sType        = StructureType::eImageStencilUsageCreateInfo;
36504     const void *                          pNext        = {};
36505     VULKAN_HPP_NAMESPACE::ImageUsageFlags stencilUsage = {};
36506   };
36507   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo ) ==
36508                               sizeof( VkImageStencilUsageCreateInfo ),
36509                             "struct and wrapper have different size!" );
36510   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo>::value,
36511                             "struct wrapper is not a standard layout!" );
36512   VULKAN_HPP_STATIC_ASSERT(
36513     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo>::value,
36514     "ImageStencilUsageCreateInfo is not nothrow_move_constructible!" );
36515 
36516   template <>
36517   struct CppType<StructureType, StructureType::eImageStencilUsageCreateInfo>
36518   {
36519     using Type = ImageStencilUsageCreateInfo;
36520   };
36521   using ImageStencilUsageCreateInfoEXT = ImageStencilUsageCreateInfo;
36522 
36523   struct ImageSwapchainCreateInfoKHR
36524   {
36525     using NativeType = VkImageSwapchainCreateInfoKHR;
36526 
36527     static const bool                                  allowDuplicate = false;
36528     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageSwapchainCreateInfoKHR;
36529 
36530 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
36531     VULKAN_HPP_CONSTEXPR
ImageSwapchainCreateInfoKHRVULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR36532       ImageSwapchainCreateInfoKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_ = {} ) VULKAN_HPP_NOEXCEPT
36533       : swapchain( swapchain_ )
36534     {}
36535 
36536     VULKAN_HPP_CONSTEXPR
36537       ImageSwapchainCreateInfoKHR( ImageSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36538 
ImageSwapchainCreateInfoKHRVULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR36539     ImageSwapchainCreateInfoKHR( VkImageSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
36540       : ImageSwapchainCreateInfoKHR( *reinterpret_cast<ImageSwapchainCreateInfoKHR const *>( &rhs ) )
36541     {}
36542 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36543 
36544     ImageSwapchainCreateInfoKHR & operator=( ImageSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36545 
operator =VULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR36546     ImageSwapchainCreateInfoKHR & operator=( VkImageSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
36547     {
36548       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR const *>( &rhs );
36549       return *this;
36550     }
36551 
36552 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR36553     VULKAN_HPP_CONSTEXPR_14 ImageSwapchainCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
36554     {
36555       pNext = pNext_;
36556       return *this;
36557     }
36558 
36559     VULKAN_HPP_CONSTEXPR_14 ImageSwapchainCreateInfoKHR &
setSwapchainVULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR36560                             setSwapchain( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_ ) VULKAN_HPP_NOEXCEPT
36561     {
36562       swapchain = swapchain_;
36563       return *this;
36564     }
36565 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
36566 
operator VkImageSwapchainCreateInfoKHR const&VULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR36567     explicit operator VkImageSwapchainCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
36568     {
36569       return *reinterpret_cast<const VkImageSwapchainCreateInfoKHR *>( this );
36570     }
36571 
operator VkImageSwapchainCreateInfoKHR&VULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR36572     explicit operator VkImageSwapchainCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
36573     {
36574       return *reinterpret_cast<VkImageSwapchainCreateInfoKHR *>( this );
36575     }
36576 
36577 #if 14 <= VULKAN_HPP_CPP_VERSION
36578     auto
36579 #else
36580     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
36581                const void * const &,
36582                VULKAN_HPP_NAMESPACE::SwapchainKHR const &>
36583 #endif
reflectVULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR36584       reflect() const VULKAN_HPP_NOEXCEPT
36585     {
36586       return std::tie( sType, pNext, swapchain );
36587     }
36588 
36589 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
36590     auto operator<=>( ImageSwapchainCreateInfoKHR const & ) const = default;
36591 #else
operator ==VULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR36592     bool operator==( ImageSwapchainCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
36593     {
36594       return this->reflect() == rhs.reflect();
36595     }
36596 
operator !=VULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR36597     bool operator!=( ImageSwapchainCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
36598     {
36599       return this->reflect() != rhs.reflect();
36600     }
36601 #endif
36602 
36603   public:
36604     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::eImageSwapchainCreateInfoKHR;
36605     const void *                        pNext     = {};
36606     VULKAN_HPP_NAMESPACE::SwapchainKHR  swapchain = {};
36607   };
36608   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR ) ==
36609                               sizeof( VkImageSwapchainCreateInfoKHR ),
36610                             "struct and wrapper have different size!" );
36611   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR>::value,
36612                             "struct wrapper is not a standard layout!" );
36613   VULKAN_HPP_STATIC_ASSERT(
36614     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR>::value,
36615     "ImageSwapchainCreateInfoKHR is not nothrow_move_constructible!" );
36616 
36617   template <>
36618   struct CppType<StructureType, StructureType::eImageSwapchainCreateInfoKHR>
36619   {
36620     using Type = ImageSwapchainCreateInfoKHR;
36621   };
36622 
36623   struct ImageViewASTCDecodeModeEXT
36624   {
36625     using NativeType = VkImageViewASTCDecodeModeEXT;
36626 
36627     static const bool                                  allowDuplicate = false;
36628     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageViewAstcDecodeModeEXT;
36629 
36630 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageViewASTCDecodeModeEXTVULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT36631     VULKAN_HPP_CONSTEXPR ImageViewASTCDecodeModeEXT(
36632       VULKAN_HPP_NAMESPACE::Format decodeMode_ = VULKAN_HPP_NAMESPACE::Format::eUndefined ) VULKAN_HPP_NOEXCEPT
36633       : decodeMode( decodeMode_ )
36634     {}
36635 
36636     VULKAN_HPP_CONSTEXPR
36637       ImageViewASTCDecodeModeEXT( ImageViewASTCDecodeModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36638 
ImageViewASTCDecodeModeEXTVULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT36639     ImageViewASTCDecodeModeEXT( VkImageViewASTCDecodeModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT
36640       : ImageViewASTCDecodeModeEXT( *reinterpret_cast<ImageViewASTCDecodeModeEXT const *>( &rhs ) )
36641     {}
36642 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36643 
36644     ImageViewASTCDecodeModeEXT & operator=( ImageViewASTCDecodeModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36645 
operator =VULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT36646     ImageViewASTCDecodeModeEXT & operator=( VkImageViewASTCDecodeModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT
36647     {
36648       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT const *>( &rhs );
36649       return *this;
36650     }
36651 
36652 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT36653     VULKAN_HPP_CONSTEXPR_14 ImageViewASTCDecodeModeEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
36654     {
36655       pNext = pNext_;
36656       return *this;
36657     }
36658 
36659     VULKAN_HPP_CONSTEXPR_14 ImageViewASTCDecodeModeEXT &
setDecodeModeVULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT36660                             setDecodeMode( VULKAN_HPP_NAMESPACE::Format decodeMode_ ) VULKAN_HPP_NOEXCEPT
36661     {
36662       decodeMode = decodeMode_;
36663       return *this;
36664     }
36665 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
36666 
operator VkImageViewASTCDecodeModeEXT const&VULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT36667     explicit operator VkImageViewASTCDecodeModeEXT const &() const VULKAN_HPP_NOEXCEPT
36668     {
36669       return *reinterpret_cast<const VkImageViewASTCDecodeModeEXT *>( this );
36670     }
36671 
operator VkImageViewASTCDecodeModeEXT&VULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT36672     explicit operator VkImageViewASTCDecodeModeEXT &() VULKAN_HPP_NOEXCEPT
36673     {
36674       return *reinterpret_cast<VkImageViewASTCDecodeModeEXT *>( this );
36675     }
36676 
36677 #if 14 <= VULKAN_HPP_CPP_VERSION
36678     auto
36679 #else
36680     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Format const &>
36681 #endif
reflectVULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT36682       reflect() const VULKAN_HPP_NOEXCEPT
36683     {
36684       return std::tie( sType, pNext, decodeMode );
36685     }
36686 
36687 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
36688     auto operator<=>( ImageViewASTCDecodeModeEXT const & ) const = default;
36689 #else
operator ==VULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT36690     bool operator==( ImageViewASTCDecodeModeEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
36691     {
36692       return this->reflect() == rhs.reflect();
36693     }
36694 
operator !=VULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT36695     bool operator!=( ImageViewASTCDecodeModeEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
36696     {
36697       return this->reflect() != rhs.reflect();
36698     }
36699 #endif
36700 
36701   public:
36702     VULKAN_HPP_NAMESPACE::StructureType sType      = StructureType::eImageViewAstcDecodeModeEXT;
36703     const void *                        pNext      = {};
36704     VULKAN_HPP_NAMESPACE::Format        decodeMode = VULKAN_HPP_NAMESPACE::Format::eUndefined;
36705   };
36706   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT ) ==
36707                               sizeof( VkImageViewASTCDecodeModeEXT ),
36708                             "struct and wrapper have different size!" );
36709   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT>::value,
36710                             "struct wrapper is not a standard layout!" );
36711   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT>::value,
36712                             "ImageViewASTCDecodeModeEXT is not nothrow_move_constructible!" );
36713 
36714   template <>
36715   struct CppType<StructureType, StructureType::eImageViewAstcDecodeModeEXT>
36716   {
36717     using Type = ImageViewASTCDecodeModeEXT;
36718   };
36719 
36720   struct ImageViewAddressPropertiesNVX
36721   {
36722     using NativeType = VkImageViewAddressPropertiesNVX;
36723 
36724     static const bool                                  allowDuplicate = false;
36725     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageViewAddressPropertiesNVX;
36726 
36727 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
36728     VULKAN_HPP_CONSTEXPR
ImageViewAddressPropertiesNVXVULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX36729       ImageViewAddressPropertiesNVX( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ = {},
36730                                      VULKAN_HPP_NAMESPACE::DeviceSize    size_          = {} ) VULKAN_HPP_NOEXCEPT
36731       : deviceAddress( deviceAddress_ )
36732       , size( size_ )
36733     {}
36734 
36735     VULKAN_HPP_CONSTEXPR
36736       ImageViewAddressPropertiesNVX( ImageViewAddressPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36737 
ImageViewAddressPropertiesNVXVULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX36738     ImageViewAddressPropertiesNVX( VkImageViewAddressPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT
36739       : ImageViewAddressPropertiesNVX( *reinterpret_cast<ImageViewAddressPropertiesNVX const *>( &rhs ) )
36740     {}
36741 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36742 
36743     ImageViewAddressPropertiesNVX &
36744       operator=( ImageViewAddressPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36745 
operator =VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX36746     ImageViewAddressPropertiesNVX & operator=( VkImageViewAddressPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT
36747     {
36748       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX const *>( &rhs );
36749       return *this;
36750     }
36751 
operator VkImageViewAddressPropertiesNVX const&VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX36752     explicit operator VkImageViewAddressPropertiesNVX const &() const VULKAN_HPP_NOEXCEPT
36753     {
36754       return *reinterpret_cast<const VkImageViewAddressPropertiesNVX *>( this );
36755     }
36756 
operator VkImageViewAddressPropertiesNVX&VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX36757     explicit operator VkImageViewAddressPropertiesNVX &() VULKAN_HPP_NOEXCEPT
36758     {
36759       return *reinterpret_cast<VkImageViewAddressPropertiesNVX *>( this );
36760     }
36761 
36762 #if 14 <= VULKAN_HPP_CPP_VERSION
36763     auto
36764 #else
36765     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
36766                void * const &,
36767                VULKAN_HPP_NAMESPACE::DeviceAddress const &,
36768                VULKAN_HPP_NAMESPACE::DeviceSize const &>
36769 #endif
reflectVULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX36770       reflect() const VULKAN_HPP_NOEXCEPT
36771     {
36772       return std::tie( sType, pNext, deviceAddress, size );
36773     }
36774 
36775 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
36776     auto operator<=>( ImageViewAddressPropertiesNVX const & ) const = default;
36777 #else
operator ==VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX36778     bool operator==( ImageViewAddressPropertiesNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
36779     {
36780       return this->reflect() == rhs.reflect();
36781     }
36782 
operator !=VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX36783     bool operator!=( ImageViewAddressPropertiesNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
36784     {
36785       return this->reflect() != rhs.reflect();
36786     }
36787 #endif
36788 
36789   public:
36790     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::eImageViewAddressPropertiesNVX;
36791     void *                              pNext         = {};
36792     VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress = {};
36793     VULKAN_HPP_NAMESPACE::DeviceSize    size          = {};
36794   };
36795   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX ) ==
36796                               sizeof( VkImageViewAddressPropertiesNVX ),
36797                             "struct and wrapper have different size!" );
36798   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX>::value,
36799                             "struct wrapper is not a standard layout!" );
36800   VULKAN_HPP_STATIC_ASSERT(
36801     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX>::value,
36802     "ImageViewAddressPropertiesNVX is not nothrow_move_constructible!" );
36803 
36804   template <>
36805   struct CppType<StructureType, StructureType::eImageViewAddressPropertiesNVX>
36806   {
36807     using Type = ImageViewAddressPropertiesNVX;
36808   };
36809 
36810   struct ImageViewCreateInfo
36811   {
36812     using NativeType = VkImageViewCreateInfo;
36813 
36814     static const bool                                  allowDuplicate = false;
36815     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageViewCreateInfo;
36816 
36817 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
36818     VULKAN_HPP_CONSTEXPR
ImageViewCreateInfoVULKAN_HPP_NAMESPACE::ImageViewCreateInfo36819       ImageViewCreateInfo( VULKAN_HPP_NAMESPACE::ImageViewCreateFlags flags_ = {},
36820                            VULKAN_HPP_NAMESPACE::Image                image_ = {},
36821                            VULKAN_HPP_NAMESPACE::ImageViewType    viewType_  = VULKAN_HPP_NAMESPACE::ImageViewType::e1D,
36822                            VULKAN_HPP_NAMESPACE::Format           format_    = VULKAN_HPP_NAMESPACE::Format::eUndefined,
36823                            VULKAN_HPP_NAMESPACE::ComponentMapping components_            = {},
36824                            VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange_ = {} ) VULKAN_HPP_NOEXCEPT
36825       : flags( flags_ )
36826       , image( image_ )
36827       , viewType( viewType_ )
36828       , format( format_ )
36829       , components( components_ )
36830       , subresourceRange( subresourceRange_ )
36831     {}
36832 
36833     VULKAN_HPP_CONSTEXPR ImageViewCreateInfo( ImageViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36834 
ImageViewCreateInfoVULKAN_HPP_NAMESPACE::ImageViewCreateInfo36835     ImageViewCreateInfo( VkImageViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
36836       : ImageViewCreateInfo( *reinterpret_cast<ImageViewCreateInfo const *>( &rhs ) )
36837     {}
36838 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36839 
36840     ImageViewCreateInfo & operator=( ImageViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36841 
operator =VULKAN_HPP_NAMESPACE::ImageViewCreateInfo36842     ImageViewCreateInfo & operator=( VkImageViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
36843     {
36844       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageViewCreateInfo const *>( &rhs );
36845       return *this;
36846     }
36847 
36848 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageViewCreateInfo36849     VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
36850     {
36851       pNext = pNext_;
36852       return *this;
36853     }
36854 
36855     VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::ImageViewCreateInfo36856                             setFlags( VULKAN_HPP_NAMESPACE::ImageViewCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
36857     {
36858       flags = flags_;
36859       return *this;
36860     }
36861 
setImageVULKAN_HPP_NAMESPACE::ImageViewCreateInfo36862     VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
36863     {
36864       image = image_;
36865       return *this;
36866     }
36867 
36868     VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo &
setViewTypeVULKAN_HPP_NAMESPACE::ImageViewCreateInfo36869                             setViewType( VULKAN_HPP_NAMESPACE::ImageViewType viewType_ ) VULKAN_HPP_NOEXCEPT
36870     {
36871       viewType = viewType_;
36872       return *this;
36873     }
36874 
setFormatVULKAN_HPP_NAMESPACE::ImageViewCreateInfo36875     VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
36876     {
36877       format = format_;
36878       return *this;
36879     }
36880 
36881     VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo &
setComponentsVULKAN_HPP_NAMESPACE::ImageViewCreateInfo36882       setComponents( VULKAN_HPP_NAMESPACE::ComponentMapping const & components_ ) VULKAN_HPP_NOEXCEPT
36883     {
36884       components = components_;
36885       return *this;
36886     }
36887 
36888     VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo &
setSubresourceRangeVULKAN_HPP_NAMESPACE::ImageViewCreateInfo36889       setSubresourceRange( VULKAN_HPP_NAMESPACE::ImageSubresourceRange const & subresourceRange_ ) VULKAN_HPP_NOEXCEPT
36890     {
36891       subresourceRange = subresourceRange_;
36892       return *this;
36893     }
36894 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
36895 
operator VkImageViewCreateInfo const&VULKAN_HPP_NAMESPACE::ImageViewCreateInfo36896     explicit operator VkImageViewCreateInfo const &() const VULKAN_HPP_NOEXCEPT
36897     {
36898       return *reinterpret_cast<const VkImageViewCreateInfo *>( this );
36899     }
36900 
operator VkImageViewCreateInfo&VULKAN_HPP_NAMESPACE::ImageViewCreateInfo36901     explicit operator VkImageViewCreateInfo &() VULKAN_HPP_NOEXCEPT
36902     {
36903       return *reinterpret_cast<VkImageViewCreateInfo *>( this );
36904     }
36905 
36906 #if 14 <= VULKAN_HPP_CPP_VERSION
36907     auto
36908 #else
36909     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
36910                const void * const &,
36911                VULKAN_HPP_NAMESPACE::ImageViewCreateFlags const &,
36912                VULKAN_HPP_NAMESPACE::Image const &,
36913                VULKAN_HPP_NAMESPACE::ImageViewType const &,
36914                VULKAN_HPP_NAMESPACE::Format const &,
36915                VULKAN_HPP_NAMESPACE::ComponentMapping const &,
36916                VULKAN_HPP_NAMESPACE::ImageSubresourceRange const &>
36917 #endif
reflectVULKAN_HPP_NAMESPACE::ImageViewCreateInfo36918       reflect() const VULKAN_HPP_NOEXCEPT
36919     {
36920       return std::tie( sType, pNext, flags, image, viewType, format, components, subresourceRange );
36921     }
36922 
36923 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
36924     auto operator<=>( ImageViewCreateInfo const & ) const = default;
36925 #else
operator ==VULKAN_HPP_NAMESPACE::ImageViewCreateInfo36926     bool operator==( ImageViewCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
36927     {
36928       return this->reflect() == rhs.reflect();
36929     }
36930 
operator !=VULKAN_HPP_NAMESPACE::ImageViewCreateInfo36931     bool operator!=( ImageViewCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
36932     {
36933       return this->reflect() != rhs.reflect();
36934     }
36935 #endif
36936 
36937   public:
36938     VULKAN_HPP_NAMESPACE::StructureType         sType            = StructureType::eImageViewCreateInfo;
36939     const void *                                pNext            = {};
36940     VULKAN_HPP_NAMESPACE::ImageViewCreateFlags  flags            = {};
36941     VULKAN_HPP_NAMESPACE::Image                 image            = {};
36942     VULKAN_HPP_NAMESPACE::ImageViewType         viewType         = VULKAN_HPP_NAMESPACE::ImageViewType::e1D;
36943     VULKAN_HPP_NAMESPACE::Format                format           = VULKAN_HPP_NAMESPACE::Format::eUndefined;
36944     VULKAN_HPP_NAMESPACE::ComponentMapping      components       = {};
36945     VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange = {};
36946   };
36947   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageViewCreateInfo ) == sizeof( VkImageViewCreateInfo ),
36948                             "struct and wrapper have different size!" );
36949   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImageViewCreateInfo>::value,
36950                             "struct wrapper is not a standard layout!" );
36951   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImageViewCreateInfo>::value,
36952                             "ImageViewCreateInfo is not nothrow_move_constructible!" );
36953 
36954   template <>
36955   struct CppType<StructureType, StructureType::eImageViewCreateInfo>
36956   {
36957     using Type = ImageViewCreateInfo;
36958   };
36959 
36960   struct ImageViewHandleInfoNVX
36961   {
36962     using NativeType = VkImageViewHandleInfoNVX;
36963 
36964     static const bool                                  allowDuplicate = false;
36965     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageViewHandleInfoNVX;
36966 
36967 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageViewHandleInfoNVXVULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX36968     VULKAN_HPP_CONSTEXPR ImageViewHandleInfoNVX(
36969       VULKAN_HPP_NAMESPACE::ImageView      imageView_      = {},
36970       VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_ = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler,
36971       VULKAN_HPP_NAMESPACE::Sampler        sampler_        = {} ) VULKAN_HPP_NOEXCEPT
36972       : imageView( imageView_ )
36973       , descriptorType( descriptorType_ )
36974       , sampler( sampler_ )
36975     {}
36976 
36977     VULKAN_HPP_CONSTEXPR ImageViewHandleInfoNVX( ImageViewHandleInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36978 
ImageViewHandleInfoNVXVULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX36979     ImageViewHandleInfoNVX( VkImageViewHandleInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT
36980       : ImageViewHandleInfoNVX( *reinterpret_cast<ImageViewHandleInfoNVX const *>( &rhs ) )
36981     {}
36982 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36983 
36984     ImageViewHandleInfoNVX & operator=( ImageViewHandleInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36985 
operator =VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX36986     ImageViewHandleInfoNVX & operator=( VkImageViewHandleInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT
36987     {
36988       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX const *>( &rhs );
36989       return *this;
36990     }
36991 
36992 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX36993     VULKAN_HPP_CONSTEXPR_14 ImageViewHandleInfoNVX & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
36994     {
36995       pNext = pNext_;
36996       return *this;
36997     }
36998 
36999     VULKAN_HPP_CONSTEXPR_14 ImageViewHandleInfoNVX &
setImageViewVULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX37000                             setImageView( VULKAN_HPP_NAMESPACE::ImageView imageView_ ) VULKAN_HPP_NOEXCEPT
37001     {
37002       imageView = imageView_;
37003       return *this;
37004     }
37005 
37006     VULKAN_HPP_CONSTEXPR_14 ImageViewHandleInfoNVX &
setDescriptorTypeVULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX37007       setDescriptorType( VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_ ) VULKAN_HPP_NOEXCEPT
37008     {
37009       descriptorType = descriptorType_;
37010       return *this;
37011     }
37012 
37013     VULKAN_HPP_CONSTEXPR_14 ImageViewHandleInfoNVX &
setSamplerVULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX37014                             setSampler( VULKAN_HPP_NAMESPACE::Sampler sampler_ ) VULKAN_HPP_NOEXCEPT
37015     {
37016       sampler = sampler_;
37017       return *this;
37018     }
37019 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
37020 
operator VkImageViewHandleInfoNVX const&VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX37021     explicit operator VkImageViewHandleInfoNVX const &() const VULKAN_HPP_NOEXCEPT
37022     {
37023       return *reinterpret_cast<const VkImageViewHandleInfoNVX *>( this );
37024     }
37025 
operator VkImageViewHandleInfoNVX&VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX37026     explicit operator VkImageViewHandleInfoNVX &() VULKAN_HPP_NOEXCEPT
37027     {
37028       return *reinterpret_cast<VkImageViewHandleInfoNVX *>( this );
37029     }
37030 
37031 #if 14 <= VULKAN_HPP_CPP_VERSION
37032     auto
37033 #else
37034     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
37035                const void * const &,
37036                VULKAN_HPP_NAMESPACE::ImageView const &,
37037                VULKAN_HPP_NAMESPACE::DescriptorType const &,
37038                VULKAN_HPP_NAMESPACE::Sampler const &>
37039 #endif
reflectVULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX37040       reflect() const VULKAN_HPP_NOEXCEPT
37041     {
37042       return std::tie( sType, pNext, imageView, descriptorType, sampler );
37043     }
37044 
37045 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
37046     auto operator<=>( ImageViewHandleInfoNVX const & ) const = default;
37047 #else
operator ==VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX37048     bool operator==( ImageViewHandleInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
37049     {
37050       return this->reflect() == rhs.reflect();
37051     }
37052 
operator !=VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX37053     bool operator!=( ImageViewHandleInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
37054     {
37055       return this->reflect() != rhs.reflect();
37056     }
37057 #endif
37058 
37059   public:
37060     VULKAN_HPP_NAMESPACE::StructureType  sType          = StructureType::eImageViewHandleInfoNVX;
37061     const void *                         pNext          = {};
37062     VULKAN_HPP_NAMESPACE::ImageView      imageView      = {};
37063     VULKAN_HPP_NAMESPACE::DescriptorType descriptorType = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler;
37064     VULKAN_HPP_NAMESPACE::Sampler        sampler        = {};
37065   };
37066   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX ) ==
37067                               sizeof( VkImageViewHandleInfoNVX ),
37068                             "struct and wrapper have different size!" );
37069   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX>::value,
37070                             "struct wrapper is not a standard layout!" );
37071   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX>::value,
37072                             "ImageViewHandleInfoNVX is not nothrow_move_constructible!" );
37073 
37074   template <>
37075   struct CppType<StructureType, StructureType::eImageViewHandleInfoNVX>
37076   {
37077     using Type = ImageViewHandleInfoNVX;
37078   };
37079 
37080   struct ImageViewMinLodCreateInfoEXT
37081   {
37082     using NativeType = VkImageViewMinLodCreateInfoEXT;
37083 
37084     static const bool                                  allowDuplicate = false;
37085     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageViewMinLodCreateInfoEXT;
37086 
37087 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageViewMinLodCreateInfoEXTVULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT37088     VULKAN_HPP_CONSTEXPR ImageViewMinLodCreateInfoEXT( float minLod_ = {} ) VULKAN_HPP_NOEXCEPT : minLod( minLod_ ) {}
37089 
37090     VULKAN_HPP_CONSTEXPR
37091       ImageViewMinLodCreateInfoEXT( ImageViewMinLodCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37092 
ImageViewMinLodCreateInfoEXTVULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT37093     ImageViewMinLodCreateInfoEXT( VkImageViewMinLodCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
37094       : ImageViewMinLodCreateInfoEXT( *reinterpret_cast<ImageViewMinLodCreateInfoEXT const *>( &rhs ) )
37095     {}
37096 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
37097 
37098     ImageViewMinLodCreateInfoEXT & operator=( ImageViewMinLodCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37099 
operator =VULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT37100     ImageViewMinLodCreateInfoEXT & operator=( VkImageViewMinLodCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
37101     {
37102       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT const *>( &rhs );
37103       return *this;
37104     }
37105 
37106 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT37107     VULKAN_HPP_CONSTEXPR_14 ImageViewMinLodCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
37108     {
37109       pNext = pNext_;
37110       return *this;
37111     }
37112 
setMinLodVULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT37113     VULKAN_HPP_CONSTEXPR_14 ImageViewMinLodCreateInfoEXT & setMinLod( float minLod_ ) VULKAN_HPP_NOEXCEPT
37114     {
37115       minLod = minLod_;
37116       return *this;
37117     }
37118 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
37119 
operator VkImageViewMinLodCreateInfoEXT const&VULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT37120     explicit operator VkImageViewMinLodCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
37121     {
37122       return *reinterpret_cast<const VkImageViewMinLodCreateInfoEXT *>( this );
37123     }
37124 
operator VkImageViewMinLodCreateInfoEXT&VULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT37125     explicit operator VkImageViewMinLodCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
37126     {
37127       return *reinterpret_cast<VkImageViewMinLodCreateInfoEXT *>( this );
37128     }
37129 
37130 #if 14 <= VULKAN_HPP_CPP_VERSION
37131     auto
37132 #else
37133     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, float const &>
37134 #endif
reflectVULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT37135       reflect() const VULKAN_HPP_NOEXCEPT
37136     {
37137       return std::tie( sType, pNext, minLod );
37138     }
37139 
37140 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
37141     auto operator<=>( ImageViewMinLodCreateInfoEXT const & ) const = default;
37142 #else
operator ==VULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT37143     bool operator==( ImageViewMinLodCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
37144     {
37145       return this->reflect() == rhs.reflect();
37146     }
37147 
operator !=VULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT37148     bool operator!=( ImageViewMinLodCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
37149     {
37150       return this->reflect() != rhs.reflect();
37151     }
37152 #endif
37153 
37154   public:
37155     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eImageViewMinLodCreateInfoEXT;
37156     const void *                        pNext  = {};
37157     float                               minLod = {};
37158   };
37159   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT ) ==
37160                               sizeof( VkImageViewMinLodCreateInfoEXT ),
37161                             "struct and wrapper have different size!" );
37162   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT>::value,
37163                             "struct wrapper is not a standard layout!" );
37164   VULKAN_HPP_STATIC_ASSERT(
37165     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT>::value,
37166     "ImageViewMinLodCreateInfoEXT is not nothrow_move_constructible!" );
37167 
37168   template <>
37169   struct CppType<StructureType, StructureType::eImageViewMinLodCreateInfoEXT>
37170   {
37171     using Type = ImageViewMinLodCreateInfoEXT;
37172   };
37173 
37174   struct ImageViewUsageCreateInfo
37175   {
37176     using NativeType = VkImageViewUsageCreateInfo;
37177 
37178     static const bool                                  allowDuplicate = false;
37179     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageViewUsageCreateInfo;
37180 
37181 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
37182     VULKAN_HPP_CONSTEXPR
ImageViewUsageCreateInfoVULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo37183       ImageViewUsageCreateInfo( VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ = {} ) VULKAN_HPP_NOEXCEPT
37184       : usage( usage_ )
37185     {}
37186 
37187     VULKAN_HPP_CONSTEXPR ImageViewUsageCreateInfo( ImageViewUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37188 
ImageViewUsageCreateInfoVULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo37189     ImageViewUsageCreateInfo( VkImageViewUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
37190       : ImageViewUsageCreateInfo( *reinterpret_cast<ImageViewUsageCreateInfo const *>( &rhs ) )
37191     {}
37192 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
37193 
37194     ImageViewUsageCreateInfo & operator=( ImageViewUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37195 
operator =VULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo37196     ImageViewUsageCreateInfo & operator=( VkImageViewUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
37197     {
37198       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo const *>( &rhs );
37199       return *this;
37200     }
37201 
37202 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo37203     VULKAN_HPP_CONSTEXPR_14 ImageViewUsageCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
37204     {
37205       pNext = pNext_;
37206       return *this;
37207     }
37208 
37209     VULKAN_HPP_CONSTEXPR_14 ImageViewUsageCreateInfo &
setUsageVULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo37210                             setUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT
37211     {
37212       usage = usage_;
37213       return *this;
37214     }
37215 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
37216 
operator VkImageViewUsageCreateInfo const&VULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo37217     explicit operator VkImageViewUsageCreateInfo const &() const VULKAN_HPP_NOEXCEPT
37218     {
37219       return *reinterpret_cast<const VkImageViewUsageCreateInfo *>( this );
37220     }
37221 
operator VkImageViewUsageCreateInfo&VULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo37222     explicit operator VkImageViewUsageCreateInfo &() VULKAN_HPP_NOEXCEPT
37223     {
37224       return *reinterpret_cast<VkImageViewUsageCreateInfo *>( this );
37225     }
37226 
37227 #if 14 <= VULKAN_HPP_CPP_VERSION
37228     auto
37229 #else
37230     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
37231                const void * const &,
37232                VULKAN_HPP_NAMESPACE::ImageUsageFlags const &>
37233 #endif
reflectVULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo37234       reflect() const VULKAN_HPP_NOEXCEPT
37235     {
37236       return std::tie( sType, pNext, usage );
37237     }
37238 
37239 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
37240     auto operator<=>( ImageViewUsageCreateInfo const & ) const = default;
37241 #else
operator ==VULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo37242     bool operator==( ImageViewUsageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
37243     {
37244       return this->reflect() == rhs.reflect();
37245     }
37246 
operator !=VULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo37247     bool operator!=( ImageViewUsageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
37248     {
37249       return this->reflect() != rhs.reflect();
37250     }
37251 #endif
37252 
37253   public:
37254     VULKAN_HPP_NAMESPACE::StructureType   sType = StructureType::eImageViewUsageCreateInfo;
37255     const void *                          pNext = {};
37256     VULKAN_HPP_NAMESPACE::ImageUsageFlags usage = {};
37257   };
37258   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo ) ==
37259                               sizeof( VkImageViewUsageCreateInfo ),
37260                             "struct and wrapper have different size!" );
37261   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo>::value,
37262                             "struct wrapper is not a standard layout!" );
37263   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo>::value,
37264                             "ImageViewUsageCreateInfo is not nothrow_move_constructible!" );
37265 
37266   template <>
37267   struct CppType<StructureType, StructureType::eImageViewUsageCreateInfo>
37268   {
37269     using Type = ImageViewUsageCreateInfo;
37270   };
37271   using ImageViewUsageCreateInfoKHR = ImageViewUsageCreateInfo;
37272 
37273 #if defined( VK_USE_PLATFORM_ANDROID_KHR )
37274   struct ImportAndroidHardwareBufferInfoANDROID
37275   {
37276     using NativeType = VkImportAndroidHardwareBufferInfoANDROID;
37277 
37278     static const bool                                  allowDuplicate = false;
37279     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
37280       StructureType::eImportAndroidHardwareBufferInfoANDROID;
37281 
37282 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
37283     VULKAN_HPP_CONSTEXPR
ImportAndroidHardwareBufferInfoANDROIDVULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID37284       ImportAndroidHardwareBufferInfoANDROID( struct AHardwareBuffer * buffer_ = {} ) VULKAN_HPP_NOEXCEPT
37285       : buffer( buffer_ )
37286     {}
37287 
37288     VULKAN_HPP_CONSTEXPR ImportAndroidHardwareBufferInfoANDROID( ImportAndroidHardwareBufferInfoANDROID const & rhs )
37289       VULKAN_HPP_NOEXCEPT = default;
37290 
ImportAndroidHardwareBufferInfoANDROIDVULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID37291     ImportAndroidHardwareBufferInfoANDROID( VkImportAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
37292       : ImportAndroidHardwareBufferInfoANDROID(
37293           *reinterpret_cast<ImportAndroidHardwareBufferInfoANDROID const *>( &rhs ) )
37294     {}
37295 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
37296 
37297     ImportAndroidHardwareBufferInfoANDROID &
37298       operator=( ImportAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37299 
37300     ImportAndroidHardwareBufferInfoANDROID &
operator =VULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID37301       operator=( VkImportAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
37302     {
37303       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID const *>( &rhs );
37304       return *this;
37305     }
37306 
37307 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID37308     VULKAN_HPP_CONSTEXPR_14 ImportAndroidHardwareBufferInfoANDROID & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
37309     {
37310       pNext = pNext_;
37311       return *this;
37312     }
37313 
37314     VULKAN_HPP_CONSTEXPR_14 ImportAndroidHardwareBufferInfoANDROID &
setBufferVULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID37315                             setBuffer( struct AHardwareBuffer * buffer_ ) VULKAN_HPP_NOEXCEPT
37316     {
37317       buffer = buffer_;
37318       return *this;
37319     }
37320 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
37321 
operator VkImportAndroidHardwareBufferInfoANDROID const&VULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID37322     explicit operator VkImportAndroidHardwareBufferInfoANDROID const &() const VULKAN_HPP_NOEXCEPT
37323     {
37324       return *reinterpret_cast<const VkImportAndroidHardwareBufferInfoANDROID *>( this );
37325     }
37326 
operator VkImportAndroidHardwareBufferInfoANDROID&VULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID37327     explicit operator VkImportAndroidHardwareBufferInfoANDROID &() VULKAN_HPP_NOEXCEPT
37328     {
37329       return *reinterpret_cast<VkImportAndroidHardwareBufferInfoANDROID *>( this );
37330     }
37331 
37332 #  if 14 <= VULKAN_HPP_CPP_VERSION
37333     auto
37334 #  else
37335     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, struct AHardwareBuffer * const &>
37336 #  endif
reflectVULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID37337       reflect() const VULKAN_HPP_NOEXCEPT
37338     {
37339       return std::tie( sType, pNext, buffer );
37340     }
37341 
37342 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
37343     auto operator<=>( ImportAndroidHardwareBufferInfoANDROID const & ) const = default;
37344 #  else
operator ==VULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID37345     bool operator==( ImportAndroidHardwareBufferInfoANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
37346     {
37347       return this->reflect() == rhs.reflect();
37348     }
37349 
operator !=VULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID37350     bool operator!=( ImportAndroidHardwareBufferInfoANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
37351     {
37352       return this->reflect() != rhs.reflect();
37353     }
37354 #  endif
37355 
37356   public:
37357     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eImportAndroidHardwareBufferInfoANDROID;
37358     const void *                        pNext  = {};
37359     struct AHardwareBuffer *            buffer = {};
37360   };
37361   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID ) ==
37362                               sizeof( VkImportAndroidHardwareBufferInfoANDROID ),
37363                             "struct and wrapper have different size!" );
37364   VULKAN_HPP_STATIC_ASSERT(
37365     std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID>::value,
37366     "struct wrapper is not a standard layout!" );
37367   VULKAN_HPP_STATIC_ASSERT(
37368     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID>::value,
37369     "ImportAndroidHardwareBufferInfoANDROID is not nothrow_move_constructible!" );
37370 
37371   template <>
37372   struct CppType<StructureType, StructureType::eImportAndroidHardwareBufferInfoANDROID>
37373   {
37374     using Type = ImportAndroidHardwareBufferInfoANDROID;
37375   };
37376 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
37377 
37378   struct ImportFenceFdInfoKHR
37379   {
37380     using NativeType = VkImportFenceFdInfoKHR;
37381 
37382     static const bool                                  allowDuplicate = false;
37383     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportFenceFdInfoKHR;
37384 
37385 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportFenceFdInfoKHRVULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR37386     VULKAN_HPP_CONSTEXPR ImportFenceFdInfoKHR( VULKAN_HPP_NAMESPACE::Fence                           fence_ = {},
37387                                                VULKAN_HPP_NAMESPACE::FenceImportFlags                flags_ = {},
37388                                                VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ =
37389                                                  VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd,
37390                                                int fd_ = {} ) VULKAN_HPP_NOEXCEPT
37391       : fence( fence_ )
37392       , flags( flags_ )
37393       , handleType( handleType_ )
37394       , fd( fd_ )
37395     {}
37396 
37397     VULKAN_HPP_CONSTEXPR ImportFenceFdInfoKHR( ImportFenceFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37398 
ImportFenceFdInfoKHRVULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR37399     ImportFenceFdInfoKHR( VkImportFenceFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
37400       : ImportFenceFdInfoKHR( *reinterpret_cast<ImportFenceFdInfoKHR const *>( &rhs ) )
37401     {}
37402 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
37403 
37404     ImportFenceFdInfoKHR & operator=( ImportFenceFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37405 
operator =VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR37406     ImportFenceFdInfoKHR & operator=( VkImportFenceFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
37407     {
37408       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR const *>( &rhs );
37409       return *this;
37410     }
37411 
37412 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR37413     VULKAN_HPP_CONSTEXPR_14 ImportFenceFdInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
37414     {
37415       pNext = pNext_;
37416       return *this;
37417     }
37418 
setFenceVULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR37419     VULKAN_HPP_CONSTEXPR_14 ImportFenceFdInfoKHR & setFence( VULKAN_HPP_NAMESPACE::Fence fence_ ) VULKAN_HPP_NOEXCEPT
37420     {
37421       fence = fence_;
37422       return *this;
37423     }
37424 
37425     VULKAN_HPP_CONSTEXPR_14 ImportFenceFdInfoKHR &
setFlagsVULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR37426                             setFlags( VULKAN_HPP_NAMESPACE::FenceImportFlags flags_ ) VULKAN_HPP_NOEXCEPT
37427     {
37428       flags = flags_;
37429       return *this;
37430     }
37431 
37432     VULKAN_HPP_CONSTEXPR_14 ImportFenceFdInfoKHR &
setHandleTypeVULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR37433       setHandleType( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
37434     {
37435       handleType = handleType_;
37436       return *this;
37437     }
37438 
setFdVULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR37439     VULKAN_HPP_CONSTEXPR_14 ImportFenceFdInfoKHR & setFd( int fd_ ) VULKAN_HPP_NOEXCEPT
37440     {
37441       fd = fd_;
37442       return *this;
37443     }
37444 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
37445 
operator VkImportFenceFdInfoKHR const&VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR37446     explicit operator VkImportFenceFdInfoKHR const &() const VULKAN_HPP_NOEXCEPT
37447     {
37448       return *reinterpret_cast<const VkImportFenceFdInfoKHR *>( this );
37449     }
37450 
operator VkImportFenceFdInfoKHR&VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR37451     explicit operator VkImportFenceFdInfoKHR &() VULKAN_HPP_NOEXCEPT
37452     {
37453       return *reinterpret_cast<VkImportFenceFdInfoKHR *>( this );
37454     }
37455 
37456 #if 14 <= VULKAN_HPP_CPP_VERSION
37457     auto
37458 #else
37459     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
37460                const void * const &,
37461                VULKAN_HPP_NAMESPACE::Fence const &,
37462                VULKAN_HPP_NAMESPACE::FenceImportFlags const &,
37463                VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits const &,
37464                int const &>
37465 #endif
reflectVULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR37466       reflect() const VULKAN_HPP_NOEXCEPT
37467     {
37468       return std::tie( sType, pNext, fence, flags, handleType, fd );
37469     }
37470 
37471 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
37472     auto operator<=>( ImportFenceFdInfoKHR const & ) const = default;
37473 #else
operator ==VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR37474     bool operator==( ImportFenceFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
37475     {
37476       return this->reflect() == rhs.reflect();
37477     }
37478 
operator !=VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR37479     bool operator!=( ImportFenceFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
37480     {
37481       return this->reflect() != rhs.reflect();
37482     }
37483 #endif
37484 
37485   public:
37486     VULKAN_HPP_NAMESPACE::StructureType                   sType = StructureType::eImportFenceFdInfoKHR;
37487     const void *                                          pNext = {};
37488     VULKAN_HPP_NAMESPACE::Fence                           fence = {};
37489     VULKAN_HPP_NAMESPACE::FenceImportFlags                flags = {};
37490     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType =
37491       VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd;
37492     int fd = {};
37493   };
37494   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR ) == sizeof( VkImportFenceFdInfoKHR ),
37495                             "struct and wrapper have different size!" );
37496   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR>::value,
37497                             "struct wrapper is not a standard layout!" );
37498   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR>::value,
37499                             "ImportFenceFdInfoKHR is not nothrow_move_constructible!" );
37500 
37501   template <>
37502   struct CppType<StructureType, StructureType::eImportFenceFdInfoKHR>
37503   {
37504     using Type = ImportFenceFdInfoKHR;
37505   };
37506 
37507 #if defined( VK_USE_PLATFORM_WIN32_KHR )
37508   struct ImportFenceWin32HandleInfoKHR
37509   {
37510     using NativeType = VkImportFenceWin32HandleInfoKHR;
37511 
37512     static const bool                                  allowDuplicate = false;
37513     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportFenceWin32HandleInfoKHR;
37514 
37515 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
37516     VULKAN_HPP_CONSTEXPR
ImportFenceWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR37517       ImportFenceWin32HandleInfoKHR( VULKAN_HPP_NAMESPACE::Fence                           fence_ = {},
37518                                      VULKAN_HPP_NAMESPACE::FenceImportFlags                flags_ = {},
37519                                      VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ =
37520                                        VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd,
37521                                      HANDLE  handle_ = {},
37522                                      LPCWSTR name_   = {} ) VULKAN_HPP_NOEXCEPT
37523       : fence( fence_ )
37524       , flags( flags_ )
37525       , handleType( handleType_ )
37526       , handle( handle_ )
37527       , name( name_ )
37528     {}
37529 
37530     VULKAN_HPP_CONSTEXPR
37531       ImportFenceWin32HandleInfoKHR( ImportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37532 
ImportFenceWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR37533     ImportFenceWin32HandleInfoKHR( VkImportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
37534       : ImportFenceWin32HandleInfoKHR( *reinterpret_cast<ImportFenceWin32HandleInfoKHR const *>( &rhs ) )
37535     {}
37536 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
37537 
37538     ImportFenceWin32HandleInfoKHR &
37539       operator=( ImportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37540 
operator =VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR37541     ImportFenceWin32HandleInfoKHR & operator=( VkImportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
37542     {
37543       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR const *>( &rhs );
37544       return *this;
37545     }
37546 
37547 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR37548     VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
37549     {
37550       pNext = pNext_;
37551       return *this;
37552     }
37553 
37554     VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR &
setFenceVULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR37555                             setFence( VULKAN_HPP_NAMESPACE::Fence fence_ ) VULKAN_HPP_NOEXCEPT
37556     {
37557       fence = fence_;
37558       return *this;
37559     }
37560 
37561     VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR &
setFlagsVULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR37562                             setFlags( VULKAN_HPP_NAMESPACE::FenceImportFlags flags_ ) VULKAN_HPP_NOEXCEPT
37563     {
37564       flags = flags_;
37565       return *this;
37566     }
37567 
37568     VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR &
setHandleTypeVULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR37569       setHandleType( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
37570     {
37571       handleType = handleType_;
37572       return *this;
37573     }
37574 
setHandleVULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR37575     VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR & setHandle( HANDLE handle_ ) VULKAN_HPP_NOEXCEPT
37576     {
37577       handle = handle_;
37578       return *this;
37579     }
37580 
setNameVULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR37581     VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR & setName( LPCWSTR name_ ) VULKAN_HPP_NOEXCEPT
37582     {
37583       name = name_;
37584       return *this;
37585     }
37586 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
37587 
operator VkImportFenceWin32HandleInfoKHR const&VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR37588     explicit operator VkImportFenceWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT
37589     {
37590       return *reinterpret_cast<const VkImportFenceWin32HandleInfoKHR *>( this );
37591     }
37592 
operator VkImportFenceWin32HandleInfoKHR&VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR37593     explicit operator VkImportFenceWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT
37594     {
37595       return *reinterpret_cast<VkImportFenceWin32HandleInfoKHR *>( this );
37596     }
37597 
37598 #  if 14 <= VULKAN_HPP_CPP_VERSION
37599     auto
37600 #  else
37601     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
37602                const void * const &,
37603                VULKAN_HPP_NAMESPACE::Fence const &,
37604                VULKAN_HPP_NAMESPACE::FenceImportFlags const &,
37605                VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits const &,
37606                HANDLE const &,
37607                LPCWSTR const &>
37608 #  endif
reflectVULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR37609       reflect() const VULKAN_HPP_NOEXCEPT
37610     {
37611       return std::tie( sType, pNext, fence, flags, handleType, handle, name );
37612     }
37613 
37614 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
37615     auto operator<=>( ImportFenceWin32HandleInfoKHR const & ) const = default;
37616 #  else
operator ==VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR37617     bool operator==( ImportFenceWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
37618     {
37619       return this->reflect() == rhs.reflect();
37620     }
37621 
operator !=VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR37622     bool operator!=( ImportFenceWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
37623     {
37624       return this->reflect() != rhs.reflect();
37625     }
37626 #  endif
37627 
37628   public:
37629     VULKAN_HPP_NAMESPACE::StructureType                   sType = StructureType::eImportFenceWin32HandleInfoKHR;
37630     const void *                                          pNext = {};
37631     VULKAN_HPP_NAMESPACE::Fence                           fence = {};
37632     VULKAN_HPP_NAMESPACE::FenceImportFlags                flags = {};
37633     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType =
37634       VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd;
37635     HANDLE  handle = {};
37636     LPCWSTR name   = {};
37637   };
37638   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR ) ==
37639                               sizeof( VkImportFenceWin32HandleInfoKHR ),
37640                             "struct and wrapper have different size!" );
37641   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR>::value,
37642                             "struct wrapper is not a standard layout!" );
37643   VULKAN_HPP_STATIC_ASSERT(
37644     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR>::value,
37645     "ImportFenceWin32HandleInfoKHR is not nothrow_move_constructible!" );
37646 
37647   template <>
37648   struct CppType<StructureType, StructureType::eImportFenceWin32HandleInfoKHR>
37649   {
37650     using Type = ImportFenceWin32HandleInfoKHR;
37651   };
37652 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
37653 
37654 #if defined( VK_USE_PLATFORM_FUCHSIA )
37655   struct ImportMemoryBufferCollectionFUCHSIA
37656   {
37657     using NativeType = VkImportMemoryBufferCollectionFUCHSIA;
37658 
37659     static const bool                                  allowDuplicate = false;
37660     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
37661       StructureType::eImportMemoryBufferCollectionFUCHSIA;
37662 
37663 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
37664     VULKAN_HPP_CONSTEXPR
ImportMemoryBufferCollectionFUCHSIAVULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA37665       ImportMemoryBufferCollectionFUCHSIA( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection_ = {},
37666                                            uint32_t index_ = {} ) VULKAN_HPP_NOEXCEPT
37667       : collection( collection_ )
37668       , index( index_ )
37669     {}
37670 
37671     VULKAN_HPP_CONSTEXPR ImportMemoryBufferCollectionFUCHSIA( ImportMemoryBufferCollectionFUCHSIA const & rhs )
37672       VULKAN_HPP_NOEXCEPT = default;
37673 
ImportMemoryBufferCollectionFUCHSIAVULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA37674     ImportMemoryBufferCollectionFUCHSIA( VkImportMemoryBufferCollectionFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
37675       : ImportMemoryBufferCollectionFUCHSIA( *reinterpret_cast<ImportMemoryBufferCollectionFUCHSIA const *>( &rhs ) )
37676     {}
37677 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
37678 
37679     ImportMemoryBufferCollectionFUCHSIA &
37680       operator=( ImportMemoryBufferCollectionFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37681 
37682     ImportMemoryBufferCollectionFUCHSIA &
operator =VULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA37683       operator=( VkImportMemoryBufferCollectionFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
37684     {
37685       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA const *>( &rhs );
37686       return *this;
37687     }
37688 
37689 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA37690     VULKAN_HPP_CONSTEXPR_14 ImportMemoryBufferCollectionFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
37691     {
37692       pNext = pNext_;
37693       return *this;
37694     }
37695 
37696     VULKAN_HPP_CONSTEXPR_14 ImportMemoryBufferCollectionFUCHSIA &
setCollectionVULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA37697       setCollection( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection_ ) VULKAN_HPP_NOEXCEPT
37698     {
37699       collection = collection_;
37700       return *this;
37701     }
37702 
setIndexVULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA37703     VULKAN_HPP_CONSTEXPR_14 ImportMemoryBufferCollectionFUCHSIA & setIndex( uint32_t index_ ) VULKAN_HPP_NOEXCEPT
37704     {
37705       index = index_;
37706       return *this;
37707     }
37708 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
37709 
operator VkImportMemoryBufferCollectionFUCHSIA const&VULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA37710     explicit operator VkImportMemoryBufferCollectionFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
37711     {
37712       return *reinterpret_cast<const VkImportMemoryBufferCollectionFUCHSIA *>( this );
37713     }
37714 
operator VkImportMemoryBufferCollectionFUCHSIA&VULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA37715     explicit operator VkImportMemoryBufferCollectionFUCHSIA &() VULKAN_HPP_NOEXCEPT
37716     {
37717       return *reinterpret_cast<VkImportMemoryBufferCollectionFUCHSIA *>( this );
37718     }
37719 
37720 #  if 14 <= VULKAN_HPP_CPP_VERSION
37721     auto
37722 #  else
37723     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
37724                const void * const &,
37725                VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA const &,
37726                uint32_t const &>
37727 #  endif
reflectVULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA37728       reflect() const VULKAN_HPP_NOEXCEPT
37729     {
37730       return std::tie( sType, pNext, collection, index );
37731     }
37732 
37733 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
37734     auto operator<=>( ImportMemoryBufferCollectionFUCHSIA const & ) const = default;
37735 #  else
operator ==VULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA37736     bool operator==( ImportMemoryBufferCollectionFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
37737     {
37738       return this->reflect() == rhs.reflect();
37739     }
37740 
operator !=VULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA37741     bool operator!=( ImportMemoryBufferCollectionFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
37742     {
37743       return this->reflect() != rhs.reflect();
37744     }
37745 #  endif
37746 
37747   public:
37748     VULKAN_HPP_NAMESPACE::StructureType           sType      = StructureType::eImportMemoryBufferCollectionFUCHSIA;
37749     const void *                                  pNext      = {};
37750     VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection = {};
37751     uint32_t                                      index      = {};
37752   };
37753   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA ) ==
37754                               sizeof( VkImportMemoryBufferCollectionFUCHSIA ),
37755                             "struct and wrapper have different size!" );
37756   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA>::value,
37757                             "struct wrapper is not a standard layout!" );
37758   VULKAN_HPP_STATIC_ASSERT(
37759     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA>::value,
37760     "ImportMemoryBufferCollectionFUCHSIA is not nothrow_move_constructible!" );
37761 
37762   template <>
37763   struct CppType<StructureType, StructureType::eImportMemoryBufferCollectionFUCHSIA>
37764   {
37765     using Type = ImportMemoryBufferCollectionFUCHSIA;
37766   };
37767 #endif /*VK_USE_PLATFORM_FUCHSIA*/
37768 
37769   struct ImportMemoryFdInfoKHR
37770   {
37771     using NativeType = VkImportMemoryFdInfoKHR;
37772 
37773     static const bool                                  allowDuplicate = false;
37774     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportMemoryFdInfoKHR;
37775 
37776 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportMemoryFdInfoKHRVULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR37777     VULKAN_HPP_CONSTEXPR ImportMemoryFdInfoKHR( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ =
37778                                                   VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd,
37779                                                 int fd_ = {} ) VULKAN_HPP_NOEXCEPT
37780       : handleType( handleType_ )
37781       , fd( fd_ )
37782     {}
37783 
37784     VULKAN_HPP_CONSTEXPR ImportMemoryFdInfoKHR( ImportMemoryFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37785 
ImportMemoryFdInfoKHRVULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR37786     ImportMemoryFdInfoKHR( VkImportMemoryFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
37787       : ImportMemoryFdInfoKHR( *reinterpret_cast<ImportMemoryFdInfoKHR const *>( &rhs ) )
37788     {}
37789 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
37790 
37791     ImportMemoryFdInfoKHR & operator=( ImportMemoryFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37792 
operator =VULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR37793     ImportMemoryFdInfoKHR & operator=( VkImportMemoryFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
37794     {
37795       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR const *>( &rhs );
37796       return *this;
37797     }
37798 
37799 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR37800     VULKAN_HPP_CONSTEXPR_14 ImportMemoryFdInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
37801     {
37802       pNext = pNext_;
37803       return *this;
37804     }
37805 
37806     VULKAN_HPP_CONSTEXPR_14 ImportMemoryFdInfoKHR &
setHandleTypeVULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR37807       setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
37808     {
37809       handleType = handleType_;
37810       return *this;
37811     }
37812 
setFdVULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR37813     VULKAN_HPP_CONSTEXPR_14 ImportMemoryFdInfoKHR & setFd( int fd_ ) VULKAN_HPP_NOEXCEPT
37814     {
37815       fd = fd_;
37816       return *this;
37817     }
37818 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
37819 
operator VkImportMemoryFdInfoKHR const&VULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR37820     explicit operator VkImportMemoryFdInfoKHR const &() const VULKAN_HPP_NOEXCEPT
37821     {
37822       return *reinterpret_cast<const VkImportMemoryFdInfoKHR *>( this );
37823     }
37824 
operator VkImportMemoryFdInfoKHR&VULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR37825     explicit operator VkImportMemoryFdInfoKHR &() VULKAN_HPP_NOEXCEPT
37826     {
37827       return *reinterpret_cast<VkImportMemoryFdInfoKHR *>( this );
37828     }
37829 
37830 #if 14 <= VULKAN_HPP_CPP_VERSION
37831     auto
37832 #else
37833     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
37834                const void * const &,
37835                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits const &,
37836                int const &>
37837 #endif
reflectVULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR37838       reflect() const VULKAN_HPP_NOEXCEPT
37839     {
37840       return std::tie( sType, pNext, handleType, fd );
37841     }
37842 
37843 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
37844     auto operator<=>( ImportMemoryFdInfoKHR const & ) const = default;
37845 #else
operator ==VULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR37846     bool operator==( ImportMemoryFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
37847     {
37848       return this->reflect() == rhs.reflect();
37849     }
37850 
operator !=VULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR37851     bool operator!=( ImportMemoryFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
37852     {
37853       return this->reflect() != rhs.reflect();
37854     }
37855 #endif
37856 
37857   public:
37858     VULKAN_HPP_NAMESPACE::StructureType                    sType = StructureType::eImportMemoryFdInfoKHR;
37859     const void *                                           pNext = {};
37860     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType =
37861       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
37862     int fd = {};
37863   };
37864   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR ) == sizeof( VkImportMemoryFdInfoKHR ),
37865                             "struct and wrapper have different size!" );
37866   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR>::value,
37867                             "struct wrapper is not a standard layout!" );
37868   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR>::value,
37869                             "ImportMemoryFdInfoKHR is not nothrow_move_constructible!" );
37870 
37871   template <>
37872   struct CppType<StructureType, StructureType::eImportMemoryFdInfoKHR>
37873   {
37874     using Type = ImportMemoryFdInfoKHR;
37875   };
37876 
37877   struct ImportMemoryHostPointerInfoEXT
37878   {
37879     using NativeType = VkImportMemoryHostPointerInfoEXT;
37880 
37881     static const bool                                  allowDuplicate = false;
37882     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportMemoryHostPointerInfoEXT;
37883 
37884 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
37885     VULKAN_HPP_CONSTEXPR
ImportMemoryHostPointerInfoEXTVULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT37886       ImportMemoryHostPointerInfoEXT( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ =
37887                                         VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd,
37888                                       void * pHostPointer_ = {} ) VULKAN_HPP_NOEXCEPT
37889       : handleType( handleType_ )
37890       , pHostPointer( pHostPointer_ )
37891     {}
37892 
37893     VULKAN_HPP_CONSTEXPR
37894       ImportMemoryHostPointerInfoEXT( ImportMemoryHostPointerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37895 
ImportMemoryHostPointerInfoEXTVULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT37896     ImportMemoryHostPointerInfoEXT( VkImportMemoryHostPointerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
37897       : ImportMemoryHostPointerInfoEXT( *reinterpret_cast<ImportMemoryHostPointerInfoEXT const *>( &rhs ) )
37898     {}
37899 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
37900 
37901     ImportMemoryHostPointerInfoEXT &
37902       operator=( ImportMemoryHostPointerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37903 
operator =VULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT37904     ImportMemoryHostPointerInfoEXT & operator=( VkImportMemoryHostPointerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
37905     {
37906       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT const *>( &rhs );
37907       return *this;
37908     }
37909 
37910 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT37911     VULKAN_HPP_CONSTEXPR_14 ImportMemoryHostPointerInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
37912     {
37913       pNext = pNext_;
37914       return *this;
37915     }
37916 
37917     VULKAN_HPP_CONSTEXPR_14 ImportMemoryHostPointerInfoEXT &
setHandleTypeVULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT37918       setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
37919     {
37920       handleType = handleType_;
37921       return *this;
37922     }
37923 
setPHostPointerVULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT37924     VULKAN_HPP_CONSTEXPR_14 ImportMemoryHostPointerInfoEXT & setPHostPointer( void * pHostPointer_ ) VULKAN_HPP_NOEXCEPT
37925     {
37926       pHostPointer = pHostPointer_;
37927       return *this;
37928     }
37929 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
37930 
operator VkImportMemoryHostPointerInfoEXT const&VULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT37931     explicit operator VkImportMemoryHostPointerInfoEXT const &() const VULKAN_HPP_NOEXCEPT
37932     {
37933       return *reinterpret_cast<const VkImportMemoryHostPointerInfoEXT *>( this );
37934     }
37935 
operator VkImportMemoryHostPointerInfoEXT&VULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT37936     explicit operator VkImportMemoryHostPointerInfoEXT &() VULKAN_HPP_NOEXCEPT
37937     {
37938       return *reinterpret_cast<VkImportMemoryHostPointerInfoEXT *>( this );
37939     }
37940 
37941 #if 14 <= VULKAN_HPP_CPP_VERSION
37942     auto
37943 #else
37944     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
37945                const void * const &,
37946                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits const &,
37947                void * const &>
37948 #endif
reflectVULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT37949       reflect() const VULKAN_HPP_NOEXCEPT
37950     {
37951       return std::tie( sType, pNext, handleType, pHostPointer );
37952     }
37953 
37954 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
37955     auto operator<=>( ImportMemoryHostPointerInfoEXT const & ) const = default;
37956 #else
operator ==VULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT37957     bool operator==( ImportMemoryHostPointerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
37958     {
37959       return this->reflect() == rhs.reflect();
37960     }
37961 
operator !=VULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT37962     bool operator!=( ImportMemoryHostPointerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
37963     {
37964       return this->reflect() != rhs.reflect();
37965     }
37966 #endif
37967 
37968   public:
37969     VULKAN_HPP_NAMESPACE::StructureType                    sType = StructureType::eImportMemoryHostPointerInfoEXT;
37970     const void *                                           pNext = {};
37971     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType =
37972       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
37973     void * pHostPointer = {};
37974   };
37975   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT ) ==
37976                               sizeof( VkImportMemoryHostPointerInfoEXT ),
37977                             "struct and wrapper have different size!" );
37978   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT>::value,
37979                             "struct wrapper is not a standard layout!" );
37980   VULKAN_HPP_STATIC_ASSERT(
37981     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT>::value,
37982     "ImportMemoryHostPointerInfoEXT is not nothrow_move_constructible!" );
37983 
37984   template <>
37985   struct CppType<StructureType, StructureType::eImportMemoryHostPointerInfoEXT>
37986   {
37987     using Type = ImportMemoryHostPointerInfoEXT;
37988   };
37989 
37990 #if defined( VK_USE_PLATFORM_WIN32_KHR )
37991   struct ImportMemoryWin32HandleInfoKHR
37992   {
37993     using NativeType = VkImportMemoryWin32HandleInfoKHR;
37994 
37995     static const bool                                  allowDuplicate = false;
37996     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportMemoryWin32HandleInfoKHR;
37997 
37998 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
37999     VULKAN_HPP_CONSTEXPR
ImportMemoryWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR38000       ImportMemoryWin32HandleInfoKHR( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ =
38001                                         VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd,
38002                                       HANDLE  handle_ = {},
38003                                       LPCWSTR name_   = {} ) VULKAN_HPP_NOEXCEPT
38004       : handleType( handleType_ )
38005       , handle( handle_ )
38006       , name( name_ )
38007     {}
38008 
38009     VULKAN_HPP_CONSTEXPR
38010       ImportMemoryWin32HandleInfoKHR( ImportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38011 
ImportMemoryWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR38012     ImportMemoryWin32HandleInfoKHR( VkImportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
38013       : ImportMemoryWin32HandleInfoKHR( *reinterpret_cast<ImportMemoryWin32HandleInfoKHR const *>( &rhs ) )
38014     {}
38015 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
38016 
38017     ImportMemoryWin32HandleInfoKHR &
38018       operator=( ImportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38019 
operator =VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR38020     ImportMemoryWin32HandleInfoKHR & operator=( VkImportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
38021     {
38022       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR const *>( &rhs );
38023       return *this;
38024     }
38025 
38026 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR38027     VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
38028     {
38029       pNext = pNext_;
38030       return *this;
38031     }
38032 
38033     VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoKHR &
setHandleTypeVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR38034       setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
38035     {
38036       handleType = handleType_;
38037       return *this;
38038     }
38039 
setHandleVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR38040     VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoKHR & setHandle( HANDLE handle_ ) VULKAN_HPP_NOEXCEPT
38041     {
38042       handle = handle_;
38043       return *this;
38044     }
38045 
setNameVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR38046     VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoKHR & setName( LPCWSTR name_ ) VULKAN_HPP_NOEXCEPT
38047     {
38048       name = name_;
38049       return *this;
38050     }
38051 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
38052 
operator VkImportMemoryWin32HandleInfoKHR const&VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR38053     explicit operator VkImportMemoryWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT
38054     {
38055       return *reinterpret_cast<const VkImportMemoryWin32HandleInfoKHR *>( this );
38056     }
38057 
operator VkImportMemoryWin32HandleInfoKHR&VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR38058     explicit operator VkImportMemoryWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT
38059     {
38060       return *reinterpret_cast<VkImportMemoryWin32HandleInfoKHR *>( this );
38061     }
38062 
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::ExternalMemoryHandleTypeFlagBits const &,
38069                HANDLE const &,
38070                LPCWSTR const &>
38071 #  endif
reflectVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR38072       reflect() const VULKAN_HPP_NOEXCEPT
38073     {
38074       return std::tie( sType, pNext, handleType, handle, name );
38075     }
38076 
38077 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
38078     auto operator<=>( ImportMemoryWin32HandleInfoKHR const & ) const = default;
38079 #  else
operator ==VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR38080     bool operator==( ImportMemoryWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
38081     {
38082       return this->reflect() == rhs.reflect();
38083     }
38084 
operator !=VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR38085     bool operator!=( ImportMemoryWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
38086     {
38087       return this->reflect() != rhs.reflect();
38088     }
38089 #  endif
38090 
38091   public:
38092     VULKAN_HPP_NAMESPACE::StructureType                    sType = StructureType::eImportMemoryWin32HandleInfoKHR;
38093     const void *                                           pNext = {};
38094     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType =
38095       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
38096     HANDLE  handle = {};
38097     LPCWSTR name   = {};
38098   };
38099   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR ) ==
38100                               sizeof( VkImportMemoryWin32HandleInfoKHR ),
38101                             "struct and wrapper have different size!" );
38102   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR>::value,
38103                             "struct wrapper is not a standard layout!" );
38104   VULKAN_HPP_STATIC_ASSERT(
38105     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR>::value,
38106     "ImportMemoryWin32HandleInfoKHR is not nothrow_move_constructible!" );
38107 
38108   template <>
38109   struct CppType<StructureType, StructureType::eImportMemoryWin32HandleInfoKHR>
38110   {
38111     using Type = ImportMemoryWin32HandleInfoKHR;
38112   };
38113 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
38114 
38115 #if defined( VK_USE_PLATFORM_WIN32_KHR )
38116   struct ImportMemoryWin32HandleInfoNV
38117   {
38118     using NativeType = VkImportMemoryWin32HandleInfoNV;
38119 
38120     static const bool                                  allowDuplicate = false;
38121     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportMemoryWin32HandleInfoNV;
38122 
38123 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
38124     VULKAN_HPP_CONSTEXPR
ImportMemoryWin32HandleInfoNVVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV38125       ImportMemoryWin32HandleInfoNV( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleType_ = {},
38126                                      HANDLE handle_ = {} ) VULKAN_HPP_NOEXCEPT
38127       : handleType( handleType_ )
38128       , handle( handle_ )
38129     {}
38130 
38131     VULKAN_HPP_CONSTEXPR
38132       ImportMemoryWin32HandleInfoNV( ImportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38133 
ImportMemoryWin32HandleInfoNVVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV38134     ImportMemoryWin32HandleInfoNV( VkImportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
38135       : ImportMemoryWin32HandleInfoNV( *reinterpret_cast<ImportMemoryWin32HandleInfoNV const *>( &rhs ) )
38136     {}
38137 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
38138 
38139     ImportMemoryWin32HandleInfoNV &
38140       operator=( ImportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38141 
operator =VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV38142     ImportMemoryWin32HandleInfoNV & operator=( VkImportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
38143     {
38144       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV const *>( &rhs );
38145       return *this;
38146     }
38147 
38148 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV38149     VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
38150     {
38151       pNext = pNext_;
38152       return *this;
38153     }
38154 
38155     VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoNV &
setHandleTypeVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV38156       setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleType_ ) VULKAN_HPP_NOEXCEPT
38157     {
38158       handleType = handleType_;
38159       return *this;
38160     }
38161 
setHandleVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV38162     VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoNV & setHandle( HANDLE handle_ ) VULKAN_HPP_NOEXCEPT
38163     {
38164       handle = handle_;
38165       return *this;
38166     }
38167 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
38168 
operator VkImportMemoryWin32HandleInfoNV const&VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV38169     explicit operator VkImportMemoryWin32HandleInfoNV const &() const VULKAN_HPP_NOEXCEPT
38170     {
38171       return *reinterpret_cast<const VkImportMemoryWin32HandleInfoNV *>( this );
38172     }
38173 
operator VkImportMemoryWin32HandleInfoNV&VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV38174     explicit operator VkImportMemoryWin32HandleInfoNV &() VULKAN_HPP_NOEXCEPT
38175     {
38176       return *reinterpret_cast<VkImportMemoryWin32HandleInfoNV *>( this );
38177     }
38178 
38179 #  if 14 <= VULKAN_HPP_CPP_VERSION
38180     auto
38181 #  else
38182     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
38183                const void * const &,
38184                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV const &,
38185                HANDLE const &>
38186 #  endif
reflectVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV38187       reflect() const VULKAN_HPP_NOEXCEPT
38188     {
38189       return std::tie( sType, pNext, handleType, handle );
38190     }
38191 
38192 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
38193     auto operator<=>( ImportMemoryWin32HandleInfoNV const & ) const = default;
38194 #  else
operator ==VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV38195     bool operator==( ImportMemoryWin32HandleInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
38196     {
38197       return this->reflect() == rhs.reflect();
38198     }
38199 
operator !=VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV38200     bool operator!=( ImportMemoryWin32HandleInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
38201     {
38202       return this->reflect() != rhs.reflect();
38203     }
38204 #  endif
38205 
38206   public:
38207     VULKAN_HPP_NAMESPACE::StructureType                   sType      = StructureType::eImportMemoryWin32HandleInfoNV;
38208     const void *                                          pNext      = {};
38209     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleType = {};
38210     HANDLE                                                handle     = {};
38211   };
38212   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV ) ==
38213                               sizeof( VkImportMemoryWin32HandleInfoNV ),
38214                             "struct and wrapper have different size!" );
38215   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV>::value,
38216                             "struct wrapper is not a standard layout!" );
38217   VULKAN_HPP_STATIC_ASSERT(
38218     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV>::value,
38219     "ImportMemoryWin32HandleInfoNV is not nothrow_move_constructible!" );
38220 
38221   template <>
38222   struct CppType<StructureType, StructureType::eImportMemoryWin32HandleInfoNV>
38223   {
38224     using Type = ImportMemoryWin32HandleInfoNV;
38225   };
38226 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
38227 
38228 #if defined( VK_USE_PLATFORM_FUCHSIA )
38229   struct ImportMemoryZirconHandleInfoFUCHSIA
38230   {
38231     using NativeType = VkImportMemoryZirconHandleInfoFUCHSIA;
38232 
38233     static const bool                                  allowDuplicate = false;
38234     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
38235       StructureType::eImportMemoryZirconHandleInfoFUCHSIA;
38236 
38237 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
38238     VULKAN_HPP_CONSTEXPR
ImportMemoryZirconHandleInfoFUCHSIAVULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA38239       ImportMemoryZirconHandleInfoFUCHSIA( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ =
38240                                              VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd,
38241                                            zx_handle_t handle_ = {} ) VULKAN_HPP_NOEXCEPT
38242       : handleType( handleType_ )
38243       , handle( handle_ )
38244     {}
38245 
38246     VULKAN_HPP_CONSTEXPR ImportMemoryZirconHandleInfoFUCHSIA( ImportMemoryZirconHandleInfoFUCHSIA const & rhs )
38247       VULKAN_HPP_NOEXCEPT = default;
38248 
ImportMemoryZirconHandleInfoFUCHSIAVULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA38249     ImportMemoryZirconHandleInfoFUCHSIA( VkImportMemoryZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
38250       : ImportMemoryZirconHandleInfoFUCHSIA( *reinterpret_cast<ImportMemoryZirconHandleInfoFUCHSIA const *>( &rhs ) )
38251     {}
38252 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
38253 
38254     ImportMemoryZirconHandleInfoFUCHSIA &
38255       operator=( ImportMemoryZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38256 
38257     ImportMemoryZirconHandleInfoFUCHSIA &
operator =VULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA38258       operator=( VkImportMemoryZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
38259     {
38260       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA const *>( &rhs );
38261       return *this;
38262     }
38263 
38264 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA38265     VULKAN_HPP_CONSTEXPR_14 ImportMemoryZirconHandleInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
38266     {
38267       pNext = pNext_;
38268       return *this;
38269     }
38270 
38271     VULKAN_HPP_CONSTEXPR_14 ImportMemoryZirconHandleInfoFUCHSIA &
setHandleTypeVULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA38272       setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
38273     {
38274       handleType = handleType_;
38275       return *this;
38276     }
38277 
setHandleVULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA38278     VULKAN_HPP_CONSTEXPR_14 ImportMemoryZirconHandleInfoFUCHSIA & setHandle( zx_handle_t handle_ ) VULKAN_HPP_NOEXCEPT
38279     {
38280       handle = handle_;
38281       return *this;
38282     }
38283 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
38284 
operator VkImportMemoryZirconHandleInfoFUCHSIA const&VULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA38285     explicit operator VkImportMemoryZirconHandleInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
38286     {
38287       return *reinterpret_cast<const VkImportMemoryZirconHandleInfoFUCHSIA *>( this );
38288     }
38289 
operator VkImportMemoryZirconHandleInfoFUCHSIA&VULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA38290     explicit operator VkImportMemoryZirconHandleInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT
38291     {
38292       return *reinterpret_cast<VkImportMemoryZirconHandleInfoFUCHSIA *>( this );
38293     }
38294 
38295 #  if 14 <= VULKAN_HPP_CPP_VERSION
38296     auto
38297 #  else
38298     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
38299                const void * const &,
38300                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits const &,
38301                zx_handle_t const &>
38302 #  endif
reflectVULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA38303       reflect() const VULKAN_HPP_NOEXCEPT
38304     {
38305       return std::tie( sType, pNext, handleType, handle );
38306     }
38307 
38308 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
38309     auto operator<=>( ImportMemoryZirconHandleInfoFUCHSIA const & ) const = default;
38310 #  else
operator ==VULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA38311     bool operator==( ImportMemoryZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
38312     {
38313       return this->reflect() == rhs.reflect();
38314     }
38315 
operator !=VULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA38316     bool operator!=( ImportMemoryZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
38317     {
38318       return this->reflect() != rhs.reflect();
38319     }
38320 #  endif
38321 
38322   public:
38323     VULKAN_HPP_NAMESPACE::StructureType                    sType = StructureType::eImportMemoryZirconHandleInfoFUCHSIA;
38324     const void *                                           pNext = {};
38325     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType =
38326       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
38327     zx_handle_t handle = {};
38328   };
38329   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA ) ==
38330                               sizeof( VkImportMemoryZirconHandleInfoFUCHSIA ),
38331                             "struct and wrapper have different size!" );
38332   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA>::value,
38333                             "struct wrapper is not a standard layout!" );
38334   VULKAN_HPP_STATIC_ASSERT(
38335     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA>::value,
38336     "ImportMemoryZirconHandleInfoFUCHSIA is not nothrow_move_constructible!" );
38337 
38338   template <>
38339   struct CppType<StructureType, StructureType::eImportMemoryZirconHandleInfoFUCHSIA>
38340   {
38341     using Type = ImportMemoryZirconHandleInfoFUCHSIA;
38342   };
38343 #endif /*VK_USE_PLATFORM_FUCHSIA*/
38344 
38345   struct ImportSemaphoreFdInfoKHR
38346   {
38347     using NativeType = VkImportSemaphoreFdInfoKHR;
38348 
38349     static const bool                                  allowDuplicate = false;
38350     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportSemaphoreFdInfoKHR;
38351 
38352 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
38353     VULKAN_HPP_CONSTEXPR
ImportSemaphoreFdInfoKHRVULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR38354       ImportSemaphoreFdInfoKHR( VULKAN_HPP_NAMESPACE::Semaphore                           semaphore_ = {},
38355                                 VULKAN_HPP_NAMESPACE::SemaphoreImportFlags                flags_     = {},
38356                                 VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ =
38357                                   VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd,
38358                                 int fd_ = {} ) VULKAN_HPP_NOEXCEPT
38359       : semaphore( semaphore_ )
38360       , flags( flags_ )
38361       , handleType( handleType_ )
38362       , fd( fd_ )
38363     {}
38364 
38365     VULKAN_HPP_CONSTEXPR ImportSemaphoreFdInfoKHR( ImportSemaphoreFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38366 
ImportSemaphoreFdInfoKHRVULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR38367     ImportSemaphoreFdInfoKHR( VkImportSemaphoreFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
38368       : ImportSemaphoreFdInfoKHR( *reinterpret_cast<ImportSemaphoreFdInfoKHR const *>( &rhs ) )
38369     {}
38370 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
38371 
38372     ImportSemaphoreFdInfoKHR & operator=( ImportSemaphoreFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38373 
operator =VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR38374     ImportSemaphoreFdInfoKHR & operator=( VkImportSemaphoreFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
38375     {
38376       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR const *>( &rhs );
38377       return *this;
38378     }
38379 
38380 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR38381     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreFdInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
38382     {
38383       pNext = pNext_;
38384       return *this;
38385     }
38386 
38387     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreFdInfoKHR &
setSemaphoreVULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR38388                             setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
38389     {
38390       semaphore = semaphore_;
38391       return *this;
38392     }
38393 
38394     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreFdInfoKHR &
setFlagsVULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR38395                             setFlags( VULKAN_HPP_NAMESPACE::SemaphoreImportFlags flags_ ) VULKAN_HPP_NOEXCEPT
38396     {
38397       flags = flags_;
38398       return *this;
38399     }
38400 
38401     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreFdInfoKHR &
setHandleTypeVULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR38402       setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
38403     {
38404       handleType = handleType_;
38405       return *this;
38406     }
38407 
setFdVULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR38408     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreFdInfoKHR & setFd( int fd_ ) VULKAN_HPP_NOEXCEPT
38409     {
38410       fd = fd_;
38411       return *this;
38412     }
38413 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
38414 
operator VkImportSemaphoreFdInfoKHR const&VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR38415     explicit operator VkImportSemaphoreFdInfoKHR const &() const VULKAN_HPP_NOEXCEPT
38416     {
38417       return *reinterpret_cast<const VkImportSemaphoreFdInfoKHR *>( this );
38418     }
38419 
operator VkImportSemaphoreFdInfoKHR&VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR38420     explicit operator VkImportSemaphoreFdInfoKHR &() VULKAN_HPP_NOEXCEPT
38421     {
38422       return *reinterpret_cast<VkImportSemaphoreFdInfoKHR *>( this );
38423     }
38424 
38425 #if 14 <= VULKAN_HPP_CPP_VERSION
38426     auto
38427 #else
38428     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
38429                const void * const &,
38430                VULKAN_HPP_NAMESPACE::Semaphore const &,
38431                VULKAN_HPP_NAMESPACE::SemaphoreImportFlags const &,
38432                VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits const &,
38433                int const &>
38434 #endif
reflectVULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR38435       reflect() const VULKAN_HPP_NOEXCEPT
38436     {
38437       return std::tie( sType, pNext, semaphore, flags, handleType, fd );
38438     }
38439 
38440 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
38441     auto operator<=>( ImportSemaphoreFdInfoKHR const & ) const = default;
38442 #else
operator ==VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR38443     bool operator==( ImportSemaphoreFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
38444     {
38445       return this->reflect() == rhs.reflect();
38446     }
38447 
operator !=VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR38448     bool operator!=( ImportSemaphoreFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
38449     {
38450       return this->reflect() != rhs.reflect();
38451     }
38452 #endif
38453 
38454   public:
38455     VULKAN_HPP_NAMESPACE::StructureType                       sType     = StructureType::eImportSemaphoreFdInfoKHR;
38456     const void *                                              pNext     = {};
38457     VULKAN_HPP_NAMESPACE::Semaphore                           semaphore = {};
38458     VULKAN_HPP_NAMESPACE::SemaphoreImportFlags                flags     = {};
38459     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType =
38460       VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd;
38461     int fd = {};
38462   };
38463   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR ) ==
38464                               sizeof( VkImportSemaphoreFdInfoKHR ),
38465                             "struct and wrapper have different size!" );
38466   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR>::value,
38467                             "struct wrapper is not a standard layout!" );
38468   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR>::value,
38469                             "ImportSemaphoreFdInfoKHR is not nothrow_move_constructible!" );
38470 
38471   template <>
38472   struct CppType<StructureType, StructureType::eImportSemaphoreFdInfoKHR>
38473   {
38474     using Type = ImportSemaphoreFdInfoKHR;
38475   };
38476 
38477 #if defined( VK_USE_PLATFORM_WIN32_KHR )
38478   struct ImportSemaphoreWin32HandleInfoKHR
38479   {
38480     using NativeType = VkImportSemaphoreWin32HandleInfoKHR;
38481 
38482     static const bool                                  allowDuplicate = false;
38483     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
38484       StructureType::eImportSemaphoreWin32HandleInfoKHR;
38485 
38486 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
38487     VULKAN_HPP_CONSTEXPR
ImportSemaphoreWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR38488       ImportSemaphoreWin32HandleInfoKHR( VULKAN_HPP_NAMESPACE::Semaphore                           semaphore_ = {},
38489                                          VULKAN_HPP_NAMESPACE::SemaphoreImportFlags                flags_     = {},
38490                                          VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ =
38491                                            VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd,
38492                                          HANDLE  handle_ = {},
38493                                          LPCWSTR name_   = {} ) VULKAN_HPP_NOEXCEPT
38494       : semaphore( semaphore_ )
38495       , flags( flags_ )
38496       , handleType( handleType_ )
38497       , handle( handle_ )
38498       , name( name_ )
38499     {}
38500 
38501     VULKAN_HPP_CONSTEXPR
38502       ImportSemaphoreWin32HandleInfoKHR( ImportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38503 
ImportSemaphoreWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR38504     ImportSemaphoreWin32HandleInfoKHR( VkImportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
38505       : ImportSemaphoreWin32HandleInfoKHR( *reinterpret_cast<ImportSemaphoreWin32HandleInfoKHR const *>( &rhs ) )
38506     {}
38507 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
38508 
38509     ImportSemaphoreWin32HandleInfoKHR &
38510       operator=( ImportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38511 
operator =VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR38512     ImportSemaphoreWin32HandleInfoKHR & operator=( VkImportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
38513     {
38514       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR const *>( &rhs );
38515       return *this;
38516     }
38517 
38518 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR38519     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
38520     {
38521       pNext = pNext_;
38522       return *this;
38523     }
38524 
38525     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR &
setSemaphoreVULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR38526                             setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
38527     {
38528       semaphore = semaphore_;
38529       return *this;
38530     }
38531 
38532     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR &
setFlagsVULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR38533                             setFlags( VULKAN_HPP_NAMESPACE::SemaphoreImportFlags flags_ ) VULKAN_HPP_NOEXCEPT
38534     {
38535       flags = flags_;
38536       return *this;
38537     }
38538 
38539     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR &
setHandleTypeVULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR38540       setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
38541     {
38542       handleType = handleType_;
38543       return *this;
38544     }
38545 
setHandleVULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR38546     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR & setHandle( HANDLE handle_ ) VULKAN_HPP_NOEXCEPT
38547     {
38548       handle = handle_;
38549       return *this;
38550     }
38551 
setNameVULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR38552     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR & setName( LPCWSTR name_ ) VULKAN_HPP_NOEXCEPT
38553     {
38554       name = name_;
38555       return *this;
38556     }
38557 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
38558 
operator VkImportSemaphoreWin32HandleInfoKHR const&VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR38559     explicit operator VkImportSemaphoreWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT
38560     {
38561       return *reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHR *>( this );
38562     }
38563 
operator VkImportSemaphoreWin32HandleInfoKHR&VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR38564     explicit operator VkImportSemaphoreWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT
38565     {
38566       return *reinterpret_cast<VkImportSemaphoreWin32HandleInfoKHR *>( this );
38567     }
38568 
38569 #  if 14 <= VULKAN_HPP_CPP_VERSION
38570     auto
38571 #  else
38572     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
38573                const void * const &,
38574                VULKAN_HPP_NAMESPACE::Semaphore const &,
38575                VULKAN_HPP_NAMESPACE::SemaphoreImportFlags const &,
38576                VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits const &,
38577                HANDLE const &,
38578                LPCWSTR const &>
38579 #  endif
reflectVULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR38580       reflect() const VULKAN_HPP_NOEXCEPT
38581     {
38582       return std::tie( sType, pNext, semaphore, flags, handleType, handle, name );
38583     }
38584 
38585 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
38586     auto operator<=>( ImportSemaphoreWin32HandleInfoKHR const & ) const = default;
38587 #  else
operator ==VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR38588     bool operator==( ImportSemaphoreWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
38589     {
38590       return this->reflect() == rhs.reflect();
38591     }
38592 
operator !=VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR38593     bool operator!=( ImportSemaphoreWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
38594     {
38595       return this->reflect() != rhs.reflect();
38596     }
38597 #  endif
38598 
38599   public:
38600     VULKAN_HPP_NAMESPACE::StructureType                       sType = StructureType::eImportSemaphoreWin32HandleInfoKHR;
38601     const void *                                              pNext = {};
38602     VULKAN_HPP_NAMESPACE::Semaphore                           semaphore = {};
38603     VULKAN_HPP_NAMESPACE::SemaphoreImportFlags                flags     = {};
38604     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType =
38605       VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd;
38606     HANDLE  handle = {};
38607     LPCWSTR name   = {};
38608   };
38609   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR ) ==
38610                               sizeof( VkImportSemaphoreWin32HandleInfoKHR ),
38611                             "struct and wrapper have different size!" );
38612   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR>::value,
38613                             "struct wrapper is not a standard layout!" );
38614   VULKAN_HPP_STATIC_ASSERT(
38615     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR>::value,
38616     "ImportSemaphoreWin32HandleInfoKHR is not nothrow_move_constructible!" );
38617 
38618   template <>
38619   struct CppType<StructureType, StructureType::eImportSemaphoreWin32HandleInfoKHR>
38620   {
38621     using Type = ImportSemaphoreWin32HandleInfoKHR;
38622   };
38623 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
38624 
38625 #if defined( VK_USE_PLATFORM_FUCHSIA )
38626   struct ImportSemaphoreZirconHandleInfoFUCHSIA
38627   {
38628     using NativeType = VkImportSemaphoreZirconHandleInfoFUCHSIA;
38629 
38630     static const bool                                  allowDuplicate = false;
38631     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
38632       StructureType::eImportSemaphoreZirconHandleInfoFUCHSIA;
38633 
38634 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
38635     VULKAN_HPP_CONSTEXPR
ImportSemaphoreZirconHandleInfoFUCHSIAVULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA38636       ImportSemaphoreZirconHandleInfoFUCHSIA( VULKAN_HPP_NAMESPACE::Semaphore                           semaphore_ = {},
38637                                               VULKAN_HPP_NAMESPACE::SemaphoreImportFlags                flags_     = {},
38638                                               VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ =
38639                                                 VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd,
38640                                               zx_handle_t zirconHandle_ = {} ) VULKAN_HPP_NOEXCEPT
38641       : semaphore( semaphore_ )
38642       , flags( flags_ )
38643       , handleType( handleType_ )
38644       , zirconHandle( zirconHandle_ )
38645     {}
38646 
38647     VULKAN_HPP_CONSTEXPR ImportSemaphoreZirconHandleInfoFUCHSIA( ImportSemaphoreZirconHandleInfoFUCHSIA const & rhs )
38648       VULKAN_HPP_NOEXCEPT = default;
38649 
ImportSemaphoreZirconHandleInfoFUCHSIAVULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA38650     ImportSemaphoreZirconHandleInfoFUCHSIA( VkImportSemaphoreZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
38651       : ImportSemaphoreZirconHandleInfoFUCHSIA(
38652           *reinterpret_cast<ImportSemaphoreZirconHandleInfoFUCHSIA const *>( &rhs ) )
38653     {}
38654 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
38655 
38656     ImportSemaphoreZirconHandleInfoFUCHSIA &
38657       operator=( ImportSemaphoreZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38658 
38659     ImportSemaphoreZirconHandleInfoFUCHSIA &
operator =VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA38660       operator=( VkImportSemaphoreZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
38661     {
38662       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA const *>( &rhs );
38663       return *this;
38664     }
38665 
38666 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA38667     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreZirconHandleInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
38668     {
38669       pNext = pNext_;
38670       return *this;
38671     }
38672 
38673     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreZirconHandleInfoFUCHSIA &
setSemaphoreVULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA38674                             setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
38675     {
38676       semaphore = semaphore_;
38677       return *this;
38678     }
38679 
38680     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreZirconHandleInfoFUCHSIA &
setFlagsVULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA38681                             setFlags( VULKAN_HPP_NAMESPACE::SemaphoreImportFlags flags_ ) VULKAN_HPP_NOEXCEPT
38682     {
38683       flags = flags_;
38684       return *this;
38685     }
38686 
38687     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreZirconHandleInfoFUCHSIA &
setHandleTypeVULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA38688       setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
38689     {
38690       handleType = handleType_;
38691       return *this;
38692     }
38693 
38694     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreZirconHandleInfoFUCHSIA &
setZirconHandleVULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA38695                             setZirconHandle( zx_handle_t zirconHandle_ ) VULKAN_HPP_NOEXCEPT
38696     {
38697       zirconHandle = zirconHandle_;
38698       return *this;
38699     }
38700 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
38701 
operator VkImportSemaphoreZirconHandleInfoFUCHSIA const&VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA38702     explicit operator VkImportSemaphoreZirconHandleInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
38703     {
38704       return *reinterpret_cast<const VkImportSemaphoreZirconHandleInfoFUCHSIA *>( this );
38705     }
38706 
operator VkImportSemaphoreZirconHandleInfoFUCHSIA&VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA38707     explicit operator VkImportSemaphoreZirconHandleInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT
38708     {
38709       return *reinterpret_cast<VkImportSemaphoreZirconHandleInfoFUCHSIA *>( this );
38710     }
38711 
38712 #  if 14 <= VULKAN_HPP_CPP_VERSION
38713     auto
38714 #  else
38715     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
38716                const void * const &,
38717                VULKAN_HPP_NAMESPACE::Semaphore const &,
38718                VULKAN_HPP_NAMESPACE::SemaphoreImportFlags const &,
38719                VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits const &,
38720                zx_handle_t const &>
38721 #  endif
reflectVULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA38722       reflect() const VULKAN_HPP_NOEXCEPT
38723     {
38724       return std::tie( sType, pNext, semaphore, flags, handleType, zirconHandle );
38725     }
38726 
38727 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
38728     auto operator<=>( ImportSemaphoreZirconHandleInfoFUCHSIA const & ) const = default;
38729 #  else
operator ==VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA38730     bool operator==( ImportSemaphoreZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
38731     {
38732       return this->reflect() == rhs.reflect();
38733     }
38734 
operator !=VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA38735     bool operator!=( ImportSemaphoreZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
38736     {
38737       return this->reflect() != rhs.reflect();
38738     }
38739 #  endif
38740 
38741   public:
38742     VULKAN_HPP_NAMESPACE::StructureType        sType     = StructureType::eImportSemaphoreZirconHandleInfoFUCHSIA;
38743     const void *                               pNext     = {};
38744     VULKAN_HPP_NAMESPACE::Semaphore            semaphore = {};
38745     VULKAN_HPP_NAMESPACE::SemaphoreImportFlags flags     = {};
38746     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType =
38747       VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd;
38748     zx_handle_t zirconHandle = {};
38749   };
38750   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA ) ==
38751                               sizeof( VkImportSemaphoreZirconHandleInfoFUCHSIA ),
38752                             "struct and wrapper have different size!" );
38753   VULKAN_HPP_STATIC_ASSERT(
38754     std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA>::value,
38755     "struct wrapper is not a standard layout!" );
38756   VULKAN_HPP_STATIC_ASSERT(
38757     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA>::value,
38758     "ImportSemaphoreZirconHandleInfoFUCHSIA is not nothrow_move_constructible!" );
38759 
38760   template <>
38761   struct CppType<StructureType, StructureType::eImportSemaphoreZirconHandleInfoFUCHSIA>
38762   {
38763     using Type = ImportSemaphoreZirconHandleInfoFUCHSIA;
38764   };
38765 #endif /*VK_USE_PLATFORM_FUCHSIA*/
38766 
38767   struct IndirectCommandsLayoutTokenNV
38768   {
38769     using NativeType = VkIndirectCommandsLayoutTokenNV;
38770 
38771     static const bool                                  allowDuplicate = false;
38772     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eIndirectCommandsLayoutTokenNV;
38773 
38774 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
38775     VULKAN_HPP_CONSTEXPR
IndirectCommandsLayoutTokenNVVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV38776       IndirectCommandsLayoutTokenNV( VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeNV tokenType_ =
38777                                        VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeNV::eShaderGroup,
38778                                      uint32_t                                   stream_                       = {},
38779                                      uint32_t                                   offset_                       = {},
38780                                      uint32_t                                   vertexBindingUnit_            = {},
38781                                      VULKAN_HPP_NAMESPACE::Bool32               vertexDynamicStride_          = {},
38782                                      VULKAN_HPP_NAMESPACE::PipelineLayout       pushconstantPipelineLayout_   = {},
38783                                      VULKAN_HPP_NAMESPACE::ShaderStageFlags     pushconstantShaderStageFlags_ = {},
38784                                      uint32_t                                   pushconstantOffset_           = {},
38785                                      uint32_t                                   pushconstantSize_             = {},
38786                                      VULKAN_HPP_NAMESPACE::IndirectStateFlagsNV indirectStateFlags_           = {},
38787                                      uint32_t                                   indexTypeCount_               = {},
38788                                      const VULKAN_HPP_NAMESPACE::IndexType *    pIndexTypes_                  = {},
38789                                      const uint32_t * pIndexTypeValues_ = {} ) VULKAN_HPP_NOEXCEPT
38790       : tokenType( tokenType_ )
38791       , stream( stream_ )
38792       , offset( offset_ )
38793       , vertexBindingUnit( vertexBindingUnit_ )
38794       , vertexDynamicStride( vertexDynamicStride_ )
38795       , pushconstantPipelineLayout( pushconstantPipelineLayout_ )
38796       , pushconstantShaderStageFlags( pushconstantShaderStageFlags_ )
38797       , pushconstantOffset( pushconstantOffset_ )
38798       , pushconstantSize( pushconstantSize_ )
38799       , indirectStateFlags( indirectStateFlags_ )
38800       , indexTypeCount( indexTypeCount_ )
38801       , pIndexTypes( pIndexTypes_ )
38802       , pIndexTypeValues( pIndexTypeValues_ )
38803     {}
38804 
38805     VULKAN_HPP_CONSTEXPR
38806       IndirectCommandsLayoutTokenNV( IndirectCommandsLayoutTokenNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38807 
IndirectCommandsLayoutTokenNVVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV38808     IndirectCommandsLayoutTokenNV( VkIndirectCommandsLayoutTokenNV const & rhs ) VULKAN_HPP_NOEXCEPT
38809       : IndirectCommandsLayoutTokenNV( *reinterpret_cast<IndirectCommandsLayoutTokenNV const *>( &rhs ) )
38810     {}
38811 
38812 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
IndirectCommandsLayoutTokenNVVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV38813     IndirectCommandsLayoutTokenNV(
38814       VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeNV tokenType_,
38815       uint32_t                                          stream_,
38816       uint32_t                                          offset_,
38817       uint32_t                                          vertexBindingUnit_,
38818       VULKAN_HPP_NAMESPACE::Bool32                      vertexDynamicStride_,
38819       VULKAN_HPP_NAMESPACE::PipelineLayout              pushconstantPipelineLayout_,
38820       VULKAN_HPP_NAMESPACE::ShaderStageFlags            pushconstantShaderStageFlags_,
38821       uint32_t                                          pushconstantOffset_,
38822       uint32_t                                          pushconstantSize_,
38823       VULKAN_HPP_NAMESPACE::IndirectStateFlagsNV        indirectStateFlags_,
38824       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::IndexType> const & indexTypes_,
38825       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & indexTypeValues_ = {} )
38826       : tokenType( tokenType_ )
38827       , stream( stream_ )
38828       , offset( offset_ )
38829       , vertexBindingUnit( vertexBindingUnit_ )
38830       , vertexDynamicStride( vertexDynamicStride_ )
38831       , pushconstantPipelineLayout( pushconstantPipelineLayout_ )
38832       , pushconstantShaderStageFlags( pushconstantShaderStageFlags_ )
38833       , pushconstantOffset( pushconstantOffset_ )
38834       , pushconstantSize( pushconstantSize_ )
38835       , indirectStateFlags( indirectStateFlags_ )
38836       , indexTypeCount( static_cast<uint32_t>( indexTypes_.size() ) )
38837       , pIndexTypes( indexTypes_.data() )
38838       , pIndexTypeValues( indexTypeValues_.data() )
38839     {
38840 #    ifdef VULKAN_HPP_NO_EXCEPTIONS
38841       VULKAN_HPP_ASSERT( indexTypes_.size() == indexTypeValues_.size() );
38842 #    else
38843       if ( indexTypes_.size() != indexTypeValues_.size() )
38844       {
38845         throw LogicError(
38846           VULKAN_HPP_NAMESPACE_STRING
38847           "::IndirectCommandsLayoutTokenNV::IndirectCommandsLayoutTokenNV: indexTypes_.size() != indexTypeValues_.size()" );
38848       }
38849 #    endif /*VULKAN_HPP_NO_EXCEPTIONS*/
38850     }
38851 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38852 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
38853 
38854     IndirectCommandsLayoutTokenNV &
38855       operator=( IndirectCommandsLayoutTokenNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38856 
operator =VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV38857     IndirectCommandsLayoutTokenNV & operator=( VkIndirectCommandsLayoutTokenNV const & rhs ) VULKAN_HPP_NOEXCEPT
38858     {
38859       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV const *>( &rhs );
38860       return *this;
38861     }
38862 
38863 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV38864     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
38865     {
38866       pNext = pNext_;
38867       return *this;
38868     }
38869 
38870     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV &
setTokenTypeVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV38871       setTokenType( VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeNV tokenType_ ) VULKAN_HPP_NOEXCEPT
38872     {
38873       tokenType = tokenType_;
38874       return *this;
38875     }
38876 
setStreamVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV38877     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setStream( uint32_t stream_ ) VULKAN_HPP_NOEXCEPT
38878     {
38879       stream = stream_;
38880       return *this;
38881     }
38882 
setOffsetVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV38883     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setOffset( uint32_t offset_ ) VULKAN_HPP_NOEXCEPT
38884     {
38885       offset = offset_;
38886       return *this;
38887     }
38888 
38889     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV &
setVertexBindingUnitVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV38890                             setVertexBindingUnit( uint32_t vertexBindingUnit_ ) VULKAN_HPP_NOEXCEPT
38891     {
38892       vertexBindingUnit = vertexBindingUnit_;
38893       return *this;
38894     }
38895 
38896     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV &
setVertexDynamicStrideVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV38897       setVertexDynamicStride( VULKAN_HPP_NAMESPACE::Bool32 vertexDynamicStride_ ) VULKAN_HPP_NOEXCEPT
38898     {
38899       vertexDynamicStride = vertexDynamicStride_;
38900       return *this;
38901     }
38902 
setPushconstantPipelineLayoutVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV38903     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setPushconstantPipelineLayout(
38904       VULKAN_HPP_NAMESPACE::PipelineLayout pushconstantPipelineLayout_ ) VULKAN_HPP_NOEXCEPT
38905     {
38906       pushconstantPipelineLayout = pushconstantPipelineLayout_;
38907       return *this;
38908     }
38909 
setPushconstantShaderStageFlagsVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV38910     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setPushconstantShaderStageFlags(
38911       VULKAN_HPP_NAMESPACE::ShaderStageFlags pushconstantShaderStageFlags_ ) VULKAN_HPP_NOEXCEPT
38912     {
38913       pushconstantShaderStageFlags = pushconstantShaderStageFlags_;
38914       return *this;
38915     }
38916 
38917     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV &
setPushconstantOffsetVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV38918                             setPushconstantOffset( uint32_t pushconstantOffset_ ) VULKAN_HPP_NOEXCEPT
38919     {
38920       pushconstantOffset = pushconstantOffset_;
38921       return *this;
38922     }
38923 
38924     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV &
setPushconstantSizeVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV38925                             setPushconstantSize( uint32_t pushconstantSize_ ) VULKAN_HPP_NOEXCEPT
38926     {
38927       pushconstantSize = pushconstantSize_;
38928       return *this;
38929     }
38930 
38931     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV &
setIndirectStateFlagsVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV38932       setIndirectStateFlags( VULKAN_HPP_NAMESPACE::IndirectStateFlagsNV indirectStateFlags_ ) VULKAN_HPP_NOEXCEPT
38933     {
38934       indirectStateFlags = indirectStateFlags_;
38935       return *this;
38936     }
38937 
38938     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV &
setIndexTypeCountVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV38939                             setIndexTypeCount( uint32_t indexTypeCount_ ) VULKAN_HPP_NOEXCEPT
38940     {
38941       indexTypeCount = indexTypeCount_;
38942       return *this;
38943     }
38944 
38945     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV &
setPIndexTypesVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV38946                             setPIndexTypes( const VULKAN_HPP_NAMESPACE::IndexType * pIndexTypes_ ) VULKAN_HPP_NOEXCEPT
38947     {
38948       pIndexTypes = pIndexTypes_;
38949       return *this;
38950     }
38951 
38952 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setIndexTypesVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV38953     IndirectCommandsLayoutTokenNV & setIndexTypes(
38954       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::IndexType> const & indexTypes_ )
38955       VULKAN_HPP_NOEXCEPT
38956     {
38957       indexTypeCount = static_cast<uint32_t>( indexTypes_.size() );
38958       pIndexTypes    = indexTypes_.data();
38959       return *this;
38960     }
38961 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38962 
38963     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV &
setPIndexTypeValuesVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV38964                             setPIndexTypeValues( const uint32_t * pIndexTypeValues_ ) VULKAN_HPP_NOEXCEPT
38965     {
38966       pIndexTypeValues = pIndexTypeValues_;
38967       return *this;
38968     }
38969 
38970 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setIndexTypeValuesVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV38971     IndirectCommandsLayoutTokenNV & setIndexTypeValues(
38972       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & indexTypeValues_ ) VULKAN_HPP_NOEXCEPT
38973     {
38974       indexTypeCount   = static_cast<uint32_t>( indexTypeValues_.size() );
38975       pIndexTypeValues = indexTypeValues_.data();
38976       return *this;
38977     }
38978 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38979 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
38980 
operator VkIndirectCommandsLayoutTokenNV const&VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV38981     explicit operator VkIndirectCommandsLayoutTokenNV const &() const VULKAN_HPP_NOEXCEPT
38982     {
38983       return *reinterpret_cast<const VkIndirectCommandsLayoutTokenNV *>( this );
38984     }
38985 
operator VkIndirectCommandsLayoutTokenNV&VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV38986     explicit operator VkIndirectCommandsLayoutTokenNV &() VULKAN_HPP_NOEXCEPT
38987     {
38988       return *reinterpret_cast<VkIndirectCommandsLayoutTokenNV *>( this );
38989     }
38990 
38991 #if 14 <= VULKAN_HPP_CPP_VERSION
38992     auto
38993 #else
38994     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
38995                const void * const &,
38996                VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeNV const &,
38997                uint32_t const &,
38998                uint32_t const &,
38999                uint32_t const &,
39000                VULKAN_HPP_NAMESPACE::Bool32 const &,
39001                VULKAN_HPP_NAMESPACE::PipelineLayout const &,
39002                VULKAN_HPP_NAMESPACE::ShaderStageFlags const &,
39003                uint32_t const &,
39004                uint32_t const &,
39005                VULKAN_HPP_NAMESPACE::IndirectStateFlagsNV const &,
39006                uint32_t const &,
39007                const VULKAN_HPP_NAMESPACE::IndexType * const &,
39008                const uint32_t * const &>
39009 #endif
reflectVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV39010       reflect() const VULKAN_HPP_NOEXCEPT
39011     {
39012       return std::tie( sType,
39013                        pNext,
39014                        tokenType,
39015                        stream,
39016                        offset,
39017                        vertexBindingUnit,
39018                        vertexDynamicStride,
39019                        pushconstantPipelineLayout,
39020                        pushconstantShaderStageFlags,
39021                        pushconstantOffset,
39022                        pushconstantSize,
39023                        indirectStateFlags,
39024                        indexTypeCount,
39025                        pIndexTypes,
39026                        pIndexTypeValues );
39027     }
39028 
39029 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
39030     auto operator<=>( IndirectCommandsLayoutTokenNV const & ) const = default;
39031 #else
operator ==VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV39032     bool operator==( IndirectCommandsLayoutTokenNV const & rhs ) const VULKAN_HPP_NOEXCEPT
39033     {
39034       return this->reflect() == rhs.reflect();
39035     }
39036 
operator !=VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV39037     bool operator!=( IndirectCommandsLayoutTokenNV const & rhs ) const VULKAN_HPP_NOEXCEPT
39038     {
39039       return this->reflect() != rhs.reflect();
39040     }
39041 #endif
39042 
39043   public:
39044     VULKAN_HPP_NAMESPACE::StructureType               sType = StructureType::eIndirectCommandsLayoutTokenNV;
39045     const void *                                      pNext = {};
39046     VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeNV tokenType =
39047       VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeNV::eShaderGroup;
39048     uint32_t                                   stream                       = {};
39049     uint32_t                                   offset                       = {};
39050     uint32_t                                   vertexBindingUnit            = {};
39051     VULKAN_HPP_NAMESPACE::Bool32               vertexDynamicStride          = {};
39052     VULKAN_HPP_NAMESPACE::PipelineLayout       pushconstantPipelineLayout   = {};
39053     VULKAN_HPP_NAMESPACE::ShaderStageFlags     pushconstantShaderStageFlags = {};
39054     uint32_t                                   pushconstantOffset           = {};
39055     uint32_t                                   pushconstantSize             = {};
39056     VULKAN_HPP_NAMESPACE::IndirectStateFlagsNV indirectStateFlags           = {};
39057     uint32_t                                   indexTypeCount               = {};
39058     const VULKAN_HPP_NAMESPACE::IndexType *    pIndexTypes                  = {};
39059     const uint32_t *                           pIndexTypeValues             = {};
39060   };
39061   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV ) ==
39062                               sizeof( VkIndirectCommandsLayoutTokenNV ),
39063                             "struct and wrapper have different size!" );
39064   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV>::value,
39065                             "struct wrapper is not a standard layout!" );
39066   VULKAN_HPP_STATIC_ASSERT(
39067     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV>::value,
39068     "IndirectCommandsLayoutTokenNV is not nothrow_move_constructible!" );
39069 
39070   template <>
39071   struct CppType<StructureType, StructureType::eIndirectCommandsLayoutTokenNV>
39072   {
39073     using Type = IndirectCommandsLayoutTokenNV;
39074   };
39075 
39076   struct IndirectCommandsLayoutCreateInfoNV
39077   {
39078     using NativeType = VkIndirectCommandsLayoutCreateInfoNV;
39079 
39080     static const bool                                  allowDuplicate = false;
39081     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
39082       StructureType::eIndirectCommandsLayoutCreateInfoNV;
39083 
39084 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
IndirectCommandsLayoutCreateInfoNVVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV39085     VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutCreateInfoNV(
39086       VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutUsageFlagsNV flags_ = {},
39087       VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics,
39088       uint32_t                                tokenCount_        = {},
39089       const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV * pTokens_        = {},
39090       uint32_t                                                    streamCount_    = {},
39091       const uint32_t *                                            pStreamStrides_ = {} ) VULKAN_HPP_NOEXCEPT
39092       : flags( flags_ )
39093       , pipelineBindPoint( pipelineBindPoint_ )
39094       , tokenCount( tokenCount_ )
39095       , pTokens( pTokens_ )
39096       , streamCount( streamCount_ )
39097       , pStreamStrides( pStreamStrides_ )
39098     {}
39099 
39100     VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutCreateInfoNV( IndirectCommandsLayoutCreateInfoNV const & rhs )
39101       VULKAN_HPP_NOEXCEPT = default;
39102 
IndirectCommandsLayoutCreateInfoNVVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV39103     IndirectCommandsLayoutCreateInfoNV( VkIndirectCommandsLayoutCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
39104       : IndirectCommandsLayoutCreateInfoNV( *reinterpret_cast<IndirectCommandsLayoutCreateInfoNV const *>( &rhs ) )
39105     {}
39106 
39107 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
IndirectCommandsLayoutCreateInfoNVVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV39108     IndirectCommandsLayoutCreateInfoNV(
39109       VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutUsageFlagsNV flags_,
39110       VULKAN_HPP_NAMESPACE::PipelineBindPoint                  pipelineBindPoint_,
39111       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV> const &
39112                                                                             tokens_,
39113       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & streamStrides_ = {} )
39114       : flags( flags_ )
39115       , pipelineBindPoint( pipelineBindPoint_ )
39116       , tokenCount( static_cast<uint32_t>( tokens_.size() ) )
39117       , pTokens( tokens_.data() )
39118       , streamCount( static_cast<uint32_t>( streamStrides_.size() ) )
39119       , pStreamStrides( streamStrides_.data() )
39120     {}
39121 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39122 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
39123 
39124     IndirectCommandsLayoutCreateInfoNV &
39125       operator=( IndirectCommandsLayoutCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39126 
39127     IndirectCommandsLayoutCreateInfoNV &
operator =VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV39128       operator=( VkIndirectCommandsLayoutCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
39129     {
39130       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV const *>( &rhs );
39131       return *this;
39132     }
39133 
39134 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV39135     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
39136     {
39137       pNext = pNext_;
39138       return *this;
39139     }
39140 
39141     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV &
setFlagsVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV39142       setFlags( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutUsageFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT
39143     {
39144       flags = flags_;
39145       return *this;
39146     }
39147 
39148     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV &
setPipelineBindPointVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV39149       setPipelineBindPoint( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ ) VULKAN_HPP_NOEXCEPT
39150     {
39151       pipelineBindPoint = pipelineBindPoint_;
39152       return *this;
39153     }
39154 
39155     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV &
setTokenCountVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV39156                             setTokenCount( uint32_t tokenCount_ ) VULKAN_HPP_NOEXCEPT
39157     {
39158       tokenCount = tokenCount_;
39159       return *this;
39160     }
39161 
39162     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV &
setPTokensVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV39163       setPTokens( const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV * pTokens_ ) VULKAN_HPP_NOEXCEPT
39164     {
39165       pTokens = pTokens_;
39166       return *this;
39167     }
39168 
39169 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setTokensVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV39170     IndirectCommandsLayoutCreateInfoNV & setTokens(
39171       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV> const &
39172         tokens_ ) VULKAN_HPP_NOEXCEPT
39173     {
39174       tokenCount = static_cast<uint32_t>( tokens_.size() );
39175       pTokens    = tokens_.data();
39176       return *this;
39177     }
39178 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39179 
39180     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV &
setStreamCountVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV39181                             setStreamCount( uint32_t streamCount_ ) VULKAN_HPP_NOEXCEPT
39182     {
39183       streamCount = streamCount_;
39184       return *this;
39185     }
39186 
39187     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV &
setPStreamStridesVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV39188                             setPStreamStrides( const uint32_t * pStreamStrides_ ) VULKAN_HPP_NOEXCEPT
39189     {
39190       pStreamStrides = pStreamStrides_;
39191       return *this;
39192     }
39193 
39194 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setStreamStridesVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV39195     IndirectCommandsLayoutCreateInfoNV & setStreamStrides(
39196       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & streamStrides_ ) VULKAN_HPP_NOEXCEPT
39197     {
39198       streamCount    = static_cast<uint32_t>( streamStrides_.size() );
39199       pStreamStrides = streamStrides_.data();
39200       return *this;
39201     }
39202 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39203 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
39204 
operator VkIndirectCommandsLayoutCreateInfoNV const&VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV39205     explicit operator VkIndirectCommandsLayoutCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
39206     {
39207       return *reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNV *>( this );
39208     }
39209 
operator VkIndirectCommandsLayoutCreateInfoNV&VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV39210     explicit operator VkIndirectCommandsLayoutCreateInfoNV &() VULKAN_HPP_NOEXCEPT
39211     {
39212       return *reinterpret_cast<VkIndirectCommandsLayoutCreateInfoNV *>( this );
39213     }
39214 
39215 #if 14 <= VULKAN_HPP_CPP_VERSION
39216     auto
39217 #else
39218     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
39219                const void * const &,
39220                VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutUsageFlagsNV const &,
39221                VULKAN_HPP_NAMESPACE::PipelineBindPoint const &,
39222                uint32_t const &,
39223                const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV * const &,
39224                uint32_t const &,
39225                const uint32_t * const &>
39226 #endif
reflectVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV39227       reflect() const VULKAN_HPP_NOEXCEPT
39228     {
39229       return std::tie( sType, pNext, flags, pipelineBindPoint, tokenCount, pTokens, streamCount, pStreamStrides );
39230     }
39231 
39232 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
39233     auto operator<=>( IndirectCommandsLayoutCreateInfoNV const & ) const = default;
39234 #else
operator ==VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV39235     bool operator==( IndirectCommandsLayoutCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
39236     {
39237       return this->reflect() == rhs.reflect();
39238     }
39239 
operator !=VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV39240     bool operator!=( IndirectCommandsLayoutCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
39241     {
39242       return this->reflect() != rhs.reflect();
39243     }
39244 #endif
39245 
39246   public:
39247     VULKAN_HPP_NAMESPACE::StructureType                      sType = StructureType::eIndirectCommandsLayoutCreateInfoNV;
39248     const void *                                             pNext = {};
39249     VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutUsageFlagsNV flags = {};
39250     VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint      = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics;
39251     uint32_t                                tokenCount             = {};
39252     const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV * pTokens        = {};
39253     uint32_t                                                    streamCount    = {};
39254     const uint32_t *                                            pStreamStrides = {};
39255   };
39256   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV ) ==
39257                               sizeof( VkIndirectCommandsLayoutCreateInfoNV ),
39258                             "struct and wrapper have different size!" );
39259   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV>::value,
39260                             "struct wrapper is not a standard layout!" );
39261   VULKAN_HPP_STATIC_ASSERT(
39262     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV>::value,
39263     "IndirectCommandsLayoutCreateInfoNV is not nothrow_move_constructible!" );
39264 
39265   template <>
39266   struct CppType<StructureType, StructureType::eIndirectCommandsLayoutCreateInfoNV>
39267   {
39268     using Type = IndirectCommandsLayoutCreateInfoNV;
39269   };
39270 
39271   struct InitializePerformanceApiInfoINTEL
39272   {
39273     using NativeType = VkInitializePerformanceApiInfoINTEL;
39274 
39275     static const bool                                  allowDuplicate = false;
39276     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
39277       StructureType::eInitializePerformanceApiInfoINTEL;
39278 
39279 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
InitializePerformanceApiInfoINTELVULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL39280     VULKAN_HPP_CONSTEXPR InitializePerformanceApiInfoINTEL( void * pUserData_ = {} ) VULKAN_HPP_NOEXCEPT
39281       : pUserData( pUserData_ )
39282     {}
39283 
39284     VULKAN_HPP_CONSTEXPR
39285       InitializePerformanceApiInfoINTEL( InitializePerformanceApiInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39286 
InitializePerformanceApiInfoINTELVULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL39287     InitializePerformanceApiInfoINTEL( VkInitializePerformanceApiInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
39288       : InitializePerformanceApiInfoINTEL( *reinterpret_cast<InitializePerformanceApiInfoINTEL const *>( &rhs ) )
39289     {}
39290 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
39291 
39292     InitializePerformanceApiInfoINTEL &
39293       operator=( InitializePerformanceApiInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39294 
operator =VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL39295     InitializePerformanceApiInfoINTEL & operator=( VkInitializePerformanceApiInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
39296     {
39297       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL const *>( &rhs );
39298       return *this;
39299     }
39300 
39301 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL39302     VULKAN_HPP_CONSTEXPR_14 InitializePerformanceApiInfoINTEL & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
39303     {
39304       pNext = pNext_;
39305       return *this;
39306     }
39307 
setPUserDataVULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL39308     VULKAN_HPP_CONSTEXPR_14 InitializePerformanceApiInfoINTEL & setPUserData( void * pUserData_ ) VULKAN_HPP_NOEXCEPT
39309     {
39310       pUserData = pUserData_;
39311       return *this;
39312     }
39313 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
39314 
operator VkInitializePerformanceApiInfoINTEL const&VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL39315     explicit operator VkInitializePerformanceApiInfoINTEL const &() const VULKAN_HPP_NOEXCEPT
39316     {
39317       return *reinterpret_cast<const VkInitializePerformanceApiInfoINTEL *>( this );
39318     }
39319 
operator VkInitializePerformanceApiInfoINTEL&VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL39320     explicit operator VkInitializePerformanceApiInfoINTEL &() VULKAN_HPP_NOEXCEPT
39321     {
39322       return *reinterpret_cast<VkInitializePerformanceApiInfoINTEL *>( this );
39323     }
39324 
39325 #if 14 <= VULKAN_HPP_CPP_VERSION
39326     auto
39327 #else
39328     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, void * const &>
39329 #endif
reflectVULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL39330       reflect() const VULKAN_HPP_NOEXCEPT
39331     {
39332       return std::tie( sType, pNext, pUserData );
39333     }
39334 
39335 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
39336     auto operator<=>( InitializePerformanceApiInfoINTEL const & ) const = default;
39337 #else
operator ==VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL39338     bool operator==( InitializePerformanceApiInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
39339     {
39340       return this->reflect() == rhs.reflect();
39341     }
39342 
operator !=VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL39343     bool operator!=( InitializePerformanceApiInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
39344     {
39345       return this->reflect() != rhs.reflect();
39346     }
39347 #endif
39348 
39349   public:
39350     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::eInitializePerformanceApiInfoINTEL;
39351     const void *                        pNext     = {};
39352     void *                              pUserData = {};
39353   };
39354   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL ) ==
39355                               sizeof( VkInitializePerformanceApiInfoINTEL ),
39356                             "struct and wrapper have different size!" );
39357   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL>::value,
39358                             "struct wrapper is not a standard layout!" );
39359   VULKAN_HPP_STATIC_ASSERT(
39360     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL>::value,
39361     "InitializePerformanceApiInfoINTEL is not nothrow_move_constructible!" );
39362 
39363   template <>
39364   struct CppType<StructureType, StructureType::eInitializePerformanceApiInfoINTEL>
39365   {
39366     using Type = InitializePerformanceApiInfoINTEL;
39367   };
39368 
39369   struct InputAttachmentAspectReference
39370   {
39371     using NativeType = VkInputAttachmentAspectReference;
39372 
39373 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
39374     VULKAN_HPP_CONSTEXPR
InputAttachmentAspectReferenceVULKAN_HPP_NAMESPACE::InputAttachmentAspectReference39375       InputAttachmentAspectReference( uint32_t                               subpass_              = {},
39376                                       uint32_t                               inputAttachmentIndex_ = {},
39377                                       VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ = {} ) VULKAN_HPP_NOEXCEPT
39378       : subpass( subpass_ )
39379       , inputAttachmentIndex( inputAttachmentIndex_ )
39380       , aspectMask( aspectMask_ )
39381     {}
39382 
39383     VULKAN_HPP_CONSTEXPR
39384       InputAttachmentAspectReference( InputAttachmentAspectReference const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39385 
InputAttachmentAspectReferenceVULKAN_HPP_NAMESPACE::InputAttachmentAspectReference39386     InputAttachmentAspectReference( VkInputAttachmentAspectReference const & rhs ) VULKAN_HPP_NOEXCEPT
39387       : InputAttachmentAspectReference( *reinterpret_cast<InputAttachmentAspectReference const *>( &rhs ) )
39388     {}
39389 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
39390 
39391     InputAttachmentAspectReference &
39392       operator=( InputAttachmentAspectReference const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39393 
operator =VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference39394     InputAttachmentAspectReference & operator=( VkInputAttachmentAspectReference const & rhs ) VULKAN_HPP_NOEXCEPT
39395     {
39396       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference const *>( &rhs );
39397       return *this;
39398     }
39399 
39400 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSubpassVULKAN_HPP_NAMESPACE::InputAttachmentAspectReference39401     VULKAN_HPP_CONSTEXPR_14 InputAttachmentAspectReference & setSubpass( uint32_t subpass_ ) VULKAN_HPP_NOEXCEPT
39402     {
39403       subpass = subpass_;
39404       return *this;
39405     }
39406 
39407     VULKAN_HPP_CONSTEXPR_14 InputAttachmentAspectReference &
setInputAttachmentIndexVULKAN_HPP_NAMESPACE::InputAttachmentAspectReference39408                             setInputAttachmentIndex( uint32_t inputAttachmentIndex_ ) VULKAN_HPP_NOEXCEPT
39409     {
39410       inputAttachmentIndex = inputAttachmentIndex_;
39411       return *this;
39412     }
39413 
39414     VULKAN_HPP_CONSTEXPR_14 InputAttachmentAspectReference &
setAspectMaskVULKAN_HPP_NAMESPACE::InputAttachmentAspectReference39415                             setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT
39416     {
39417       aspectMask = aspectMask_;
39418       return *this;
39419     }
39420 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
39421 
operator VkInputAttachmentAspectReference const&VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference39422     explicit operator VkInputAttachmentAspectReference const &() const VULKAN_HPP_NOEXCEPT
39423     {
39424       return *reinterpret_cast<const VkInputAttachmentAspectReference *>( this );
39425     }
39426 
operator VkInputAttachmentAspectReference&VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference39427     explicit operator VkInputAttachmentAspectReference &() VULKAN_HPP_NOEXCEPT
39428     {
39429       return *reinterpret_cast<VkInputAttachmentAspectReference *>( this );
39430     }
39431 
39432 #if 14 <= VULKAN_HPP_CPP_VERSION
39433     auto
39434 #else
39435     std::tuple<uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::ImageAspectFlags const &>
39436 #endif
reflectVULKAN_HPP_NAMESPACE::InputAttachmentAspectReference39437       reflect() const VULKAN_HPP_NOEXCEPT
39438     {
39439       return std::tie( subpass, inputAttachmentIndex, aspectMask );
39440     }
39441 
39442 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
39443     auto operator<=>( InputAttachmentAspectReference const & ) const = default;
39444 #else
operator ==VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference39445     bool operator==( InputAttachmentAspectReference const & rhs ) const VULKAN_HPP_NOEXCEPT
39446     {
39447       return this->reflect() == rhs.reflect();
39448     }
39449 
operator !=VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference39450     bool operator!=( InputAttachmentAspectReference const & rhs ) const VULKAN_HPP_NOEXCEPT
39451     {
39452       return this->reflect() != rhs.reflect();
39453     }
39454 #endif
39455 
39456   public:
39457     uint32_t                               subpass              = {};
39458     uint32_t                               inputAttachmentIndex = {};
39459     VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask           = {};
39460   };
39461   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference ) ==
39462                               sizeof( VkInputAttachmentAspectReference ),
39463                             "struct and wrapper have different size!" );
39464   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference>::value,
39465                             "struct wrapper is not a standard layout!" );
39466   VULKAN_HPP_STATIC_ASSERT(
39467     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference>::value,
39468     "InputAttachmentAspectReference is not nothrow_move_constructible!" );
39469   using InputAttachmentAspectReferenceKHR = InputAttachmentAspectReference;
39470 
39471   struct InstanceCreateInfo
39472   {
39473     using NativeType = VkInstanceCreateInfo;
39474 
39475     static const bool                                  allowDuplicate = false;
39476     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eInstanceCreateInfo;
39477 
39478 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
InstanceCreateInfoVULKAN_HPP_NAMESPACE::InstanceCreateInfo39479     VULKAN_HPP_CONSTEXPR InstanceCreateInfo( VULKAN_HPP_NAMESPACE::InstanceCreateFlags     flags_                 = {},
39480                                              const VULKAN_HPP_NAMESPACE::ApplicationInfo * pApplicationInfo_      = {},
39481                                              uint32_t                                      enabledLayerCount_     = {},
39482                                              const char * const *                          ppEnabledLayerNames_   = {},
39483                                              uint32_t                                      enabledExtensionCount_ = {},
39484                                              const char * const * ppEnabledExtensionNames_ = {} ) VULKAN_HPP_NOEXCEPT
39485       : flags( flags_ )
39486       , pApplicationInfo( pApplicationInfo_ )
39487       , enabledLayerCount( enabledLayerCount_ )
39488       , ppEnabledLayerNames( ppEnabledLayerNames_ )
39489       , enabledExtensionCount( enabledExtensionCount_ )
39490       , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
39491     {}
39492 
39493     VULKAN_HPP_CONSTEXPR InstanceCreateInfo( InstanceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39494 
InstanceCreateInfoVULKAN_HPP_NAMESPACE::InstanceCreateInfo39495     InstanceCreateInfo( VkInstanceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
39496       : InstanceCreateInfo( *reinterpret_cast<InstanceCreateInfo const *>( &rhs ) )
39497     {}
39498 
39499 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
InstanceCreateInfoVULKAN_HPP_NAMESPACE::InstanceCreateInfo39500     InstanceCreateInfo(
39501       VULKAN_HPP_NAMESPACE::InstanceCreateFlags                                 flags_,
39502       const VULKAN_HPP_NAMESPACE::ApplicationInfo *                             pApplicationInfo_,
39503       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const char * const> const & pEnabledLayerNames_,
39504       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const char * const> const & pEnabledExtensionNames_ = {} )
39505       : flags( flags_ )
39506       , pApplicationInfo( pApplicationInfo_ )
39507       , enabledLayerCount( static_cast<uint32_t>( pEnabledLayerNames_.size() ) )
39508       , ppEnabledLayerNames( pEnabledLayerNames_.data() )
39509       , enabledExtensionCount( static_cast<uint32_t>( pEnabledExtensionNames_.size() ) )
39510       , ppEnabledExtensionNames( pEnabledExtensionNames_.data() )
39511     {}
39512 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39513 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
39514 
39515     InstanceCreateInfo & operator=( InstanceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39516 
operator =VULKAN_HPP_NAMESPACE::InstanceCreateInfo39517     InstanceCreateInfo & operator=( VkInstanceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
39518     {
39519       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::InstanceCreateInfo const *>( &rhs );
39520       return *this;
39521     }
39522 
39523 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::InstanceCreateInfo39524     VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
39525     {
39526       pNext = pNext_;
39527       return *this;
39528     }
39529 
39530     VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::InstanceCreateInfo39531                             setFlags( VULKAN_HPP_NAMESPACE::InstanceCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
39532     {
39533       flags = flags_;
39534       return *this;
39535     }
39536 
39537     VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo &
setPApplicationInfoVULKAN_HPP_NAMESPACE::InstanceCreateInfo39538       setPApplicationInfo( const VULKAN_HPP_NAMESPACE::ApplicationInfo * pApplicationInfo_ ) VULKAN_HPP_NOEXCEPT
39539     {
39540       pApplicationInfo = pApplicationInfo_;
39541       return *this;
39542     }
39543 
setEnabledLayerCountVULKAN_HPP_NAMESPACE::InstanceCreateInfo39544     VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & setEnabledLayerCount( uint32_t enabledLayerCount_ ) VULKAN_HPP_NOEXCEPT
39545     {
39546       enabledLayerCount = enabledLayerCount_;
39547       return *this;
39548     }
39549 
39550     VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo &
setPpEnabledLayerNamesVULKAN_HPP_NAMESPACE::InstanceCreateInfo39551                             setPpEnabledLayerNames( const char * const * ppEnabledLayerNames_ ) VULKAN_HPP_NOEXCEPT
39552     {
39553       ppEnabledLayerNames = ppEnabledLayerNames_;
39554       return *this;
39555     }
39556 
39557 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPEnabledLayerNamesVULKAN_HPP_NAMESPACE::InstanceCreateInfo39558     InstanceCreateInfo & setPEnabledLayerNames(
39559       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const char * const> const & pEnabledLayerNames_ )
39560       VULKAN_HPP_NOEXCEPT
39561     {
39562       enabledLayerCount   = static_cast<uint32_t>( pEnabledLayerNames_.size() );
39563       ppEnabledLayerNames = pEnabledLayerNames_.data();
39564       return *this;
39565     }
39566 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39567 
39568     VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo &
setEnabledExtensionCountVULKAN_HPP_NAMESPACE::InstanceCreateInfo39569                             setEnabledExtensionCount( uint32_t enabledExtensionCount_ ) VULKAN_HPP_NOEXCEPT
39570     {
39571       enabledExtensionCount = enabledExtensionCount_;
39572       return *this;
39573     }
39574 
39575     VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo &
setPpEnabledExtensionNamesVULKAN_HPP_NAMESPACE::InstanceCreateInfo39576       setPpEnabledExtensionNames( const char * const * ppEnabledExtensionNames_ ) VULKAN_HPP_NOEXCEPT
39577     {
39578       ppEnabledExtensionNames = ppEnabledExtensionNames_;
39579       return *this;
39580     }
39581 
39582 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPEnabledExtensionNamesVULKAN_HPP_NAMESPACE::InstanceCreateInfo39583     InstanceCreateInfo & setPEnabledExtensionNames(
39584       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const char * const> const & pEnabledExtensionNames_ )
39585       VULKAN_HPP_NOEXCEPT
39586     {
39587       enabledExtensionCount   = static_cast<uint32_t>( pEnabledExtensionNames_.size() );
39588       ppEnabledExtensionNames = pEnabledExtensionNames_.data();
39589       return *this;
39590     }
39591 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39592 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
39593 
operator VkInstanceCreateInfo const&VULKAN_HPP_NAMESPACE::InstanceCreateInfo39594     explicit operator VkInstanceCreateInfo const &() const VULKAN_HPP_NOEXCEPT
39595     {
39596       return *reinterpret_cast<const VkInstanceCreateInfo *>( this );
39597     }
39598 
operator VkInstanceCreateInfo&VULKAN_HPP_NAMESPACE::InstanceCreateInfo39599     explicit operator VkInstanceCreateInfo &() VULKAN_HPP_NOEXCEPT
39600     {
39601       return *reinterpret_cast<VkInstanceCreateInfo *>( this );
39602     }
39603 
39604 #if 14 <= VULKAN_HPP_CPP_VERSION
39605     auto
39606 #else
39607     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
39608                const void * const &,
39609                VULKAN_HPP_NAMESPACE::InstanceCreateFlags const &,
39610                const VULKAN_HPP_NAMESPACE::ApplicationInfo * const &,
39611                uint32_t const &,
39612                const char * const * const &,
39613                uint32_t const &,
39614                const char * const * const &>
39615 #endif
reflectVULKAN_HPP_NAMESPACE::InstanceCreateInfo39616       reflect() const VULKAN_HPP_NOEXCEPT
39617     {
39618       return std::tie( sType,
39619                        pNext,
39620                        flags,
39621                        pApplicationInfo,
39622                        enabledLayerCount,
39623                        ppEnabledLayerNames,
39624                        enabledExtensionCount,
39625                        ppEnabledExtensionNames );
39626     }
39627 
39628 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
39629     auto operator<=>( InstanceCreateInfo const & ) const = default;
39630 #else
operator ==VULKAN_HPP_NAMESPACE::InstanceCreateInfo39631     bool operator==( InstanceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
39632     {
39633       return this->reflect() == rhs.reflect();
39634     }
39635 
operator !=VULKAN_HPP_NAMESPACE::InstanceCreateInfo39636     bool operator!=( InstanceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
39637     {
39638       return this->reflect() != rhs.reflect();
39639     }
39640 #endif
39641 
39642   public:
39643     VULKAN_HPP_NAMESPACE::StructureType           sType                   = StructureType::eInstanceCreateInfo;
39644     const void *                                  pNext                   = {};
39645     VULKAN_HPP_NAMESPACE::InstanceCreateFlags     flags                   = {};
39646     const VULKAN_HPP_NAMESPACE::ApplicationInfo * pApplicationInfo        = {};
39647     uint32_t                                      enabledLayerCount       = {};
39648     const char * const *                          ppEnabledLayerNames     = {};
39649     uint32_t                                      enabledExtensionCount   = {};
39650     const char * const *                          ppEnabledExtensionNames = {};
39651   };
39652   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::InstanceCreateInfo ) == sizeof( VkInstanceCreateInfo ),
39653                             "struct and wrapper have different size!" );
39654   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::InstanceCreateInfo>::value,
39655                             "struct wrapper is not a standard layout!" );
39656   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::InstanceCreateInfo>::value,
39657                             "InstanceCreateInfo is not nothrow_move_constructible!" );
39658 
39659   template <>
39660   struct CppType<StructureType, StructureType::eInstanceCreateInfo>
39661   {
39662     using Type = InstanceCreateInfo;
39663   };
39664 
39665   struct LayerProperties
39666   {
39667     using NativeType = VkLayerProperties;
39668 
39669 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
39670     VULKAN_HPP_CONSTEXPR_14
LayerPropertiesVULKAN_HPP_NAMESPACE::LayerProperties39671       LayerProperties( std::array<char, VK_MAX_EXTENSION_NAME_SIZE> const & layerName_             = {},
39672                        uint32_t                                             specVersion_           = {},
39673                        uint32_t                                             implementationVersion_ = {},
39674                        std::array<char, VK_MAX_DESCRIPTION_SIZE> const &    description_ = {} ) VULKAN_HPP_NOEXCEPT
39675       : layerName( layerName_ )
39676       , specVersion( specVersion_ )
39677       , implementationVersion( implementationVersion_ )
39678       , description( description_ )
39679     {}
39680 
39681     VULKAN_HPP_CONSTEXPR_14 LayerProperties( LayerProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39682 
LayerPropertiesVULKAN_HPP_NAMESPACE::LayerProperties39683     LayerProperties( VkLayerProperties const & rhs ) VULKAN_HPP_NOEXCEPT
39684       : LayerProperties( *reinterpret_cast<LayerProperties const *>( &rhs ) )
39685     {}
39686 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
39687 
39688     LayerProperties & operator=( LayerProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39689 
operator =VULKAN_HPP_NAMESPACE::LayerProperties39690     LayerProperties & operator=( VkLayerProperties const & rhs ) VULKAN_HPP_NOEXCEPT
39691     {
39692       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::LayerProperties const *>( &rhs );
39693       return *this;
39694     }
39695 
operator VkLayerProperties const&VULKAN_HPP_NAMESPACE::LayerProperties39696     explicit operator VkLayerProperties const &() const VULKAN_HPP_NOEXCEPT
39697     {
39698       return *reinterpret_cast<const VkLayerProperties *>( this );
39699     }
39700 
operator VkLayerProperties&VULKAN_HPP_NAMESPACE::LayerProperties39701     explicit operator VkLayerProperties &() VULKAN_HPP_NOEXCEPT
39702     {
39703       return *reinterpret_cast<VkLayerProperties *>( this );
39704     }
39705 
39706 #if 14 <= VULKAN_HPP_CPP_VERSION
39707     auto
39708 #else
39709     std::tuple<VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> const &,
39710                uint32_t const &,
39711                uint32_t const &,
39712                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &>
39713 #endif
reflectVULKAN_HPP_NAMESPACE::LayerProperties39714       reflect() const VULKAN_HPP_NOEXCEPT
39715     {
39716       return std::tie( layerName, specVersion, implementationVersion, description );
39717     }
39718 
39719 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
39720     auto operator<=>( LayerProperties const & ) const = default;
39721 #else
operator ==VULKAN_HPP_NAMESPACE::LayerProperties39722     bool operator==( LayerProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
39723     {
39724       return this->reflect() == rhs.reflect();
39725     }
39726 
operator !=VULKAN_HPP_NAMESPACE::LayerProperties39727     bool operator!=( LayerProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
39728     {
39729       return this->reflect() != rhs.reflect();
39730     }
39731 #endif
39732 
39733   public:
39734     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> layerName             = {};
39735     uint32_t                                                               specVersion           = {};
39736     uint32_t                                                               implementationVersion = {};
39737     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE>    description           = {};
39738   };
39739   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::LayerProperties ) == sizeof( VkLayerProperties ),
39740                             "struct and wrapper have different size!" );
39741   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::LayerProperties>::value,
39742                             "struct wrapper is not a standard layout!" );
39743   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::LayerProperties>::value,
39744                             "LayerProperties is not nothrow_move_constructible!" );
39745 
39746 #if defined( VK_USE_PLATFORM_MACOS_MVK )
39747   struct MacOSSurfaceCreateInfoMVK
39748   {
39749     using NativeType = VkMacOSSurfaceCreateInfoMVK;
39750 
39751     static const bool                                  allowDuplicate = false;
39752     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMacosSurfaceCreateInfoMVK;
39753 
39754 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MacOSSurfaceCreateInfoMVKVULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK39755     VULKAN_HPP_CONSTEXPR MacOSSurfaceCreateInfoMVK( VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateFlagsMVK flags_ = {},
39756                                                     const void * pView_ = {} ) VULKAN_HPP_NOEXCEPT
39757       : flags( flags_ )
39758       , pView( pView_ )
39759     {}
39760 
39761     VULKAN_HPP_CONSTEXPR
39762       MacOSSurfaceCreateInfoMVK( MacOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39763 
MacOSSurfaceCreateInfoMVKVULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK39764     MacOSSurfaceCreateInfoMVK( VkMacOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT
39765       : MacOSSurfaceCreateInfoMVK( *reinterpret_cast<MacOSSurfaceCreateInfoMVK const *>( &rhs ) )
39766     {}
39767 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
39768 
39769     MacOSSurfaceCreateInfoMVK & operator=( MacOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39770 
operator =VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK39771     MacOSSurfaceCreateInfoMVK & operator=( VkMacOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT
39772     {
39773       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK const *>( &rhs );
39774       return *this;
39775     }
39776 
39777 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK39778     VULKAN_HPP_CONSTEXPR_14 MacOSSurfaceCreateInfoMVK & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
39779     {
39780       pNext = pNext_;
39781       return *this;
39782     }
39783 
39784     VULKAN_HPP_CONSTEXPR_14 MacOSSurfaceCreateInfoMVK &
setFlagsVULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK39785                             setFlags( VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateFlagsMVK flags_ ) VULKAN_HPP_NOEXCEPT
39786     {
39787       flags = flags_;
39788       return *this;
39789     }
39790 
setPViewVULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK39791     VULKAN_HPP_CONSTEXPR_14 MacOSSurfaceCreateInfoMVK & setPView( const void * pView_ ) VULKAN_HPP_NOEXCEPT
39792     {
39793       pView = pView_;
39794       return *this;
39795     }
39796 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
39797 
operator VkMacOSSurfaceCreateInfoMVK const&VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK39798     explicit operator VkMacOSSurfaceCreateInfoMVK const &() const VULKAN_HPP_NOEXCEPT
39799     {
39800       return *reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK *>( this );
39801     }
39802 
operator VkMacOSSurfaceCreateInfoMVK&VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK39803     explicit operator VkMacOSSurfaceCreateInfoMVK &() VULKAN_HPP_NOEXCEPT
39804     {
39805       return *reinterpret_cast<VkMacOSSurfaceCreateInfoMVK *>( this );
39806     }
39807 
39808 #  if 14 <= VULKAN_HPP_CPP_VERSION
39809     auto
39810 #  else
39811     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
39812                const void * const &,
39813                VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateFlagsMVK const &,
39814                const void * const &>
39815 #  endif
reflectVULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK39816       reflect() const VULKAN_HPP_NOEXCEPT
39817     {
39818       return std::tie( sType, pNext, flags, pView );
39819     }
39820 
39821 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
39822     auto operator<=>( MacOSSurfaceCreateInfoMVK const & ) const = default;
39823 #  else
operator ==VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK39824     bool operator==( MacOSSurfaceCreateInfoMVK const & rhs ) const VULKAN_HPP_NOEXCEPT
39825     {
39826       return this->reflect() == rhs.reflect();
39827     }
39828 
operator !=VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK39829     bool operator!=( MacOSSurfaceCreateInfoMVK const & rhs ) const VULKAN_HPP_NOEXCEPT
39830     {
39831       return this->reflect() != rhs.reflect();
39832     }
39833 #  endif
39834 
39835   public:
39836     VULKAN_HPP_NAMESPACE::StructureType              sType = StructureType::eMacosSurfaceCreateInfoMVK;
39837     const void *                                     pNext = {};
39838     VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateFlagsMVK flags = {};
39839     const void *                                     pView = {};
39840   };
39841   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK ) ==
39842                               sizeof( VkMacOSSurfaceCreateInfoMVK ),
39843                             "struct and wrapper have different size!" );
39844   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK>::value,
39845                             "struct wrapper is not a standard layout!" );
39846   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK>::value,
39847                             "MacOSSurfaceCreateInfoMVK is not nothrow_move_constructible!" );
39848 
39849   template <>
39850   struct CppType<StructureType, StructureType::eMacosSurfaceCreateInfoMVK>
39851   {
39852     using Type = MacOSSurfaceCreateInfoMVK;
39853   };
39854 #endif /*VK_USE_PLATFORM_MACOS_MVK*/
39855 
39856   struct MappedMemoryRange
39857   {
39858     using NativeType = VkMappedMemoryRange;
39859 
39860     static const bool                                  allowDuplicate = false;
39861     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMappedMemoryRange;
39862 
39863 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MappedMemoryRangeVULKAN_HPP_NAMESPACE::MappedMemoryRange39864     VULKAN_HPP_CONSTEXPR MappedMemoryRange( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {},
39865                                             VULKAN_HPP_NAMESPACE::DeviceSize   offset_ = {},
39866                                             VULKAN_HPP_NAMESPACE::DeviceSize   size_   = {} ) VULKAN_HPP_NOEXCEPT
39867       : memory( memory_ )
39868       , offset( offset_ )
39869       , size( size_ )
39870     {}
39871 
39872     VULKAN_HPP_CONSTEXPR MappedMemoryRange( MappedMemoryRange const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39873 
MappedMemoryRangeVULKAN_HPP_NAMESPACE::MappedMemoryRange39874     MappedMemoryRange( VkMappedMemoryRange const & rhs ) VULKAN_HPP_NOEXCEPT
39875       : MappedMemoryRange( *reinterpret_cast<MappedMemoryRange const *>( &rhs ) )
39876     {}
39877 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
39878 
39879     MappedMemoryRange & operator=( MappedMemoryRange const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39880 
operator =VULKAN_HPP_NAMESPACE::MappedMemoryRange39881     MappedMemoryRange & operator=( VkMappedMemoryRange const & rhs ) VULKAN_HPP_NOEXCEPT
39882     {
39883       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MappedMemoryRange const *>( &rhs );
39884       return *this;
39885     }
39886 
39887 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MappedMemoryRange39888     VULKAN_HPP_CONSTEXPR_14 MappedMemoryRange & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
39889     {
39890       pNext = pNext_;
39891       return *this;
39892     }
39893 
39894     VULKAN_HPP_CONSTEXPR_14 MappedMemoryRange &
setMemoryVULKAN_HPP_NAMESPACE::MappedMemoryRange39895                             setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
39896     {
39897       memory = memory_;
39898       return *this;
39899     }
39900 
39901     VULKAN_HPP_CONSTEXPR_14 MappedMemoryRange &
setOffsetVULKAN_HPP_NAMESPACE::MappedMemoryRange39902                             setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
39903     {
39904       offset = offset_;
39905       return *this;
39906     }
39907 
setSizeVULKAN_HPP_NAMESPACE::MappedMemoryRange39908     VULKAN_HPP_CONSTEXPR_14 MappedMemoryRange & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
39909     {
39910       size = size_;
39911       return *this;
39912     }
39913 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
39914 
operator VkMappedMemoryRange const&VULKAN_HPP_NAMESPACE::MappedMemoryRange39915     explicit operator VkMappedMemoryRange const &() const VULKAN_HPP_NOEXCEPT
39916     {
39917       return *reinterpret_cast<const VkMappedMemoryRange *>( this );
39918     }
39919 
operator VkMappedMemoryRange&VULKAN_HPP_NAMESPACE::MappedMemoryRange39920     explicit operator VkMappedMemoryRange &() VULKAN_HPP_NOEXCEPT
39921     {
39922       return *reinterpret_cast<VkMappedMemoryRange *>( this );
39923     }
39924 
39925 #if 14 <= VULKAN_HPP_CPP_VERSION
39926     auto
39927 #else
39928     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
39929                const void * const &,
39930                VULKAN_HPP_NAMESPACE::DeviceMemory const &,
39931                VULKAN_HPP_NAMESPACE::DeviceSize const &,
39932                VULKAN_HPP_NAMESPACE::DeviceSize const &>
39933 #endif
reflectVULKAN_HPP_NAMESPACE::MappedMemoryRange39934       reflect() const VULKAN_HPP_NOEXCEPT
39935     {
39936       return std::tie( sType, pNext, memory, offset, size );
39937     }
39938 
39939 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
39940     auto operator<=>( MappedMemoryRange const & ) const = default;
39941 #else
operator ==VULKAN_HPP_NAMESPACE::MappedMemoryRange39942     bool operator==( MappedMemoryRange const & rhs ) const VULKAN_HPP_NOEXCEPT
39943     {
39944       return this->reflect() == rhs.reflect();
39945     }
39946 
operator !=VULKAN_HPP_NAMESPACE::MappedMemoryRange39947     bool operator!=( MappedMemoryRange const & rhs ) const VULKAN_HPP_NOEXCEPT
39948     {
39949       return this->reflect() != rhs.reflect();
39950     }
39951 #endif
39952 
39953   public:
39954     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eMappedMemoryRange;
39955     const void *                        pNext  = {};
39956     VULKAN_HPP_NAMESPACE::DeviceMemory  memory = {};
39957     VULKAN_HPP_NAMESPACE::DeviceSize    offset = {};
39958     VULKAN_HPP_NAMESPACE::DeviceSize    size   = {};
39959   };
39960   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MappedMemoryRange ) == sizeof( VkMappedMemoryRange ),
39961                             "struct and wrapper have different size!" );
39962   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::MappedMemoryRange>::value,
39963                             "struct wrapper is not a standard layout!" );
39964   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::MappedMemoryRange>::value,
39965                             "MappedMemoryRange is not nothrow_move_constructible!" );
39966 
39967   template <>
39968   struct CppType<StructureType, StructureType::eMappedMemoryRange>
39969   {
39970     using Type = MappedMemoryRange;
39971   };
39972 
39973   struct MemoryAllocateFlagsInfo
39974   {
39975     using NativeType = VkMemoryAllocateFlagsInfo;
39976 
39977     static const bool                                  allowDuplicate = false;
39978     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryAllocateFlagsInfo;
39979 
39980 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryAllocateFlagsInfoVULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo39981     VULKAN_HPP_CONSTEXPR MemoryAllocateFlagsInfo( VULKAN_HPP_NAMESPACE::MemoryAllocateFlags flags_ = {},
39982                                                   uint32_t deviceMask_ = {} ) VULKAN_HPP_NOEXCEPT
39983       : flags( flags_ )
39984       , deviceMask( deviceMask_ )
39985     {}
39986 
39987     VULKAN_HPP_CONSTEXPR MemoryAllocateFlagsInfo( MemoryAllocateFlagsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39988 
MemoryAllocateFlagsInfoVULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo39989     MemoryAllocateFlagsInfo( VkMemoryAllocateFlagsInfo const & rhs ) VULKAN_HPP_NOEXCEPT
39990       : MemoryAllocateFlagsInfo( *reinterpret_cast<MemoryAllocateFlagsInfo const *>( &rhs ) )
39991     {}
39992 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
39993 
39994     MemoryAllocateFlagsInfo & operator=( MemoryAllocateFlagsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39995 
operator =VULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo39996     MemoryAllocateFlagsInfo & operator=( VkMemoryAllocateFlagsInfo const & rhs ) VULKAN_HPP_NOEXCEPT
39997     {
39998       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo const *>( &rhs );
39999       return *this;
40000     }
40001 
40002 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo40003     VULKAN_HPP_CONSTEXPR_14 MemoryAllocateFlagsInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
40004     {
40005       pNext = pNext_;
40006       return *this;
40007     }
40008 
40009     VULKAN_HPP_CONSTEXPR_14 MemoryAllocateFlagsInfo &
setFlagsVULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo40010                             setFlags( VULKAN_HPP_NAMESPACE::MemoryAllocateFlags flags_ ) VULKAN_HPP_NOEXCEPT
40011     {
40012       flags = flags_;
40013       return *this;
40014     }
40015 
setDeviceMaskVULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo40016     VULKAN_HPP_CONSTEXPR_14 MemoryAllocateFlagsInfo & setDeviceMask( uint32_t deviceMask_ ) VULKAN_HPP_NOEXCEPT
40017     {
40018       deviceMask = deviceMask_;
40019       return *this;
40020     }
40021 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
40022 
operator VkMemoryAllocateFlagsInfo const&VULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo40023     explicit operator VkMemoryAllocateFlagsInfo const &() const VULKAN_HPP_NOEXCEPT
40024     {
40025       return *reinterpret_cast<const VkMemoryAllocateFlagsInfo *>( this );
40026     }
40027 
operator VkMemoryAllocateFlagsInfo&VULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo40028     explicit operator VkMemoryAllocateFlagsInfo &() VULKAN_HPP_NOEXCEPT
40029     {
40030       return *reinterpret_cast<VkMemoryAllocateFlagsInfo *>( this );
40031     }
40032 
40033 #if 14 <= VULKAN_HPP_CPP_VERSION
40034     auto
40035 #else
40036     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
40037                const void * const &,
40038                VULKAN_HPP_NAMESPACE::MemoryAllocateFlags const &,
40039                uint32_t const &>
40040 #endif
reflectVULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo40041       reflect() const VULKAN_HPP_NOEXCEPT
40042     {
40043       return std::tie( sType, pNext, flags, deviceMask );
40044     }
40045 
40046 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
40047     auto operator<=>( MemoryAllocateFlagsInfo const & ) const = default;
40048 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo40049     bool operator==( MemoryAllocateFlagsInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
40050     {
40051       return this->reflect() == rhs.reflect();
40052     }
40053 
operator !=VULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo40054     bool operator!=( MemoryAllocateFlagsInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
40055     {
40056       return this->reflect() != rhs.reflect();
40057     }
40058 #endif
40059 
40060   public:
40061     VULKAN_HPP_NAMESPACE::StructureType       sType      = StructureType::eMemoryAllocateFlagsInfo;
40062     const void *                              pNext      = {};
40063     VULKAN_HPP_NAMESPACE::MemoryAllocateFlags flags      = {};
40064     uint32_t                                  deviceMask = {};
40065   };
40066   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo ) ==
40067                               sizeof( VkMemoryAllocateFlagsInfo ),
40068                             "struct and wrapper have different size!" );
40069   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo>::value,
40070                             "struct wrapper is not a standard layout!" );
40071   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo>::value,
40072                             "MemoryAllocateFlagsInfo is not nothrow_move_constructible!" );
40073 
40074   template <>
40075   struct CppType<StructureType, StructureType::eMemoryAllocateFlagsInfo>
40076   {
40077     using Type = MemoryAllocateFlagsInfo;
40078   };
40079   using MemoryAllocateFlagsInfoKHR = MemoryAllocateFlagsInfo;
40080 
40081   struct MemoryAllocateInfo
40082   {
40083     using NativeType = VkMemoryAllocateInfo;
40084 
40085     static const bool                                  allowDuplicate = false;
40086     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryAllocateInfo;
40087 
40088 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryAllocateInfoVULKAN_HPP_NAMESPACE::MemoryAllocateInfo40089     VULKAN_HPP_CONSTEXPR MemoryAllocateInfo( VULKAN_HPP_NAMESPACE::DeviceSize allocationSize_ = {},
40090                                              uint32_t memoryTypeIndex_                        = {} ) VULKAN_HPP_NOEXCEPT
40091       : allocationSize( allocationSize_ )
40092       , memoryTypeIndex( memoryTypeIndex_ )
40093     {}
40094 
40095     VULKAN_HPP_CONSTEXPR MemoryAllocateInfo( MemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40096 
MemoryAllocateInfoVULKAN_HPP_NAMESPACE::MemoryAllocateInfo40097     MemoryAllocateInfo( VkMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
40098       : MemoryAllocateInfo( *reinterpret_cast<MemoryAllocateInfo const *>( &rhs ) )
40099     {}
40100 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
40101 
40102     MemoryAllocateInfo & operator=( MemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40103 
operator =VULKAN_HPP_NAMESPACE::MemoryAllocateInfo40104     MemoryAllocateInfo & operator=( VkMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
40105     {
40106       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryAllocateInfo const *>( &rhs );
40107       return *this;
40108     }
40109 
40110 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryAllocateInfo40111     VULKAN_HPP_CONSTEXPR_14 MemoryAllocateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
40112     {
40113       pNext = pNext_;
40114       return *this;
40115     }
40116 
40117     VULKAN_HPP_CONSTEXPR_14 MemoryAllocateInfo &
setAllocationSizeVULKAN_HPP_NAMESPACE::MemoryAllocateInfo40118                             setAllocationSize( VULKAN_HPP_NAMESPACE::DeviceSize allocationSize_ ) VULKAN_HPP_NOEXCEPT
40119     {
40120       allocationSize = allocationSize_;
40121       return *this;
40122     }
40123 
setMemoryTypeIndexVULKAN_HPP_NAMESPACE::MemoryAllocateInfo40124     VULKAN_HPP_CONSTEXPR_14 MemoryAllocateInfo & setMemoryTypeIndex( uint32_t memoryTypeIndex_ ) VULKAN_HPP_NOEXCEPT
40125     {
40126       memoryTypeIndex = memoryTypeIndex_;
40127       return *this;
40128     }
40129 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
40130 
operator VkMemoryAllocateInfo const&VULKAN_HPP_NAMESPACE::MemoryAllocateInfo40131     explicit operator VkMemoryAllocateInfo const &() const VULKAN_HPP_NOEXCEPT
40132     {
40133       return *reinterpret_cast<const VkMemoryAllocateInfo *>( this );
40134     }
40135 
operator VkMemoryAllocateInfo&VULKAN_HPP_NAMESPACE::MemoryAllocateInfo40136     explicit operator VkMemoryAllocateInfo &() VULKAN_HPP_NOEXCEPT
40137     {
40138       return *reinterpret_cast<VkMemoryAllocateInfo *>( this );
40139     }
40140 
40141 #if 14 <= VULKAN_HPP_CPP_VERSION
40142     auto
40143 #else
40144     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
40145                const void * const &,
40146                VULKAN_HPP_NAMESPACE::DeviceSize const &,
40147                uint32_t const &>
40148 #endif
reflectVULKAN_HPP_NAMESPACE::MemoryAllocateInfo40149       reflect() const VULKAN_HPP_NOEXCEPT
40150     {
40151       return std::tie( sType, pNext, allocationSize, memoryTypeIndex );
40152     }
40153 
40154 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
40155     auto operator<=>( MemoryAllocateInfo const & ) const = default;
40156 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryAllocateInfo40157     bool operator==( MemoryAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
40158     {
40159       return this->reflect() == rhs.reflect();
40160     }
40161 
operator !=VULKAN_HPP_NAMESPACE::MemoryAllocateInfo40162     bool operator!=( MemoryAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
40163     {
40164       return this->reflect() != rhs.reflect();
40165     }
40166 #endif
40167 
40168   public:
40169     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::eMemoryAllocateInfo;
40170     const void *                        pNext           = {};
40171     VULKAN_HPP_NAMESPACE::DeviceSize    allocationSize  = {};
40172     uint32_t                            memoryTypeIndex = {};
40173   };
40174   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryAllocateInfo ) == sizeof( VkMemoryAllocateInfo ),
40175                             "struct and wrapper have different size!" );
40176   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::MemoryAllocateInfo>::value,
40177                             "struct wrapper is not a standard layout!" );
40178   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::MemoryAllocateInfo>::value,
40179                             "MemoryAllocateInfo is not nothrow_move_constructible!" );
40180 
40181   template <>
40182   struct CppType<StructureType, StructureType::eMemoryAllocateInfo>
40183   {
40184     using Type = MemoryAllocateInfo;
40185   };
40186 
40187   struct MemoryBarrier
40188   {
40189     using NativeType = VkMemoryBarrier;
40190 
40191     static const bool                                  allowDuplicate = false;
40192     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryBarrier;
40193 
40194 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryBarrierVULKAN_HPP_NAMESPACE::MemoryBarrier40195     VULKAN_HPP_CONSTEXPR MemoryBarrier( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ = {},
40196                                         VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ = {} ) VULKAN_HPP_NOEXCEPT
40197       : srcAccessMask( srcAccessMask_ )
40198       , dstAccessMask( dstAccessMask_ )
40199     {}
40200 
40201     VULKAN_HPP_CONSTEXPR MemoryBarrier( MemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40202 
MemoryBarrierVULKAN_HPP_NAMESPACE::MemoryBarrier40203     MemoryBarrier( VkMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT
40204       : MemoryBarrier( *reinterpret_cast<MemoryBarrier const *>( &rhs ) )
40205     {}
40206 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
40207 
40208     MemoryBarrier & operator=( MemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40209 
operator =VULKAN_HPP_NAMESPACE::MemoryBarrier40210     MemoryBarrier & operator=( VkMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT
40211     {
40212       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryBarrier const *>( &rhs );
40213       return *this;
40214     }
40215 
40216 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryBarrier40217     VULKAN_HPP_CONSTEXPR_14 MemoryBarrier & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
40218     {
40219       pNext = pNext_;
40220       return *this;
40221     }
40222 
40223     VULKAN_HPP_CONSTEXPR_14 MemoryBarrier &
setSrcAccessMaskVULKAN_HPP_NAMESPACE::MemoryBarrier40224                             setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ ) VULKAN_HPP_NOEXCEPT
40225     {
40226       srcAccessMask = srcAccessMask_;
40227       return *this;
40228     }
40229 
40230     VULKAN_HPP_CONSTEXPR_14 MemoryBarrier &
setDstAccessMaskVULKAN_HPP_NAMESPACE::MemoryBarrier40231                             setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ ) VULKAN_HPP_NOEXCEPT
40232     {
40233       dstAccessMask = dstAccessMask_;
40234       return *this;
40235     }
40236 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
40237 
operator VkMemoryBarrier const&VULKAN_HPP_NAMESPACE::MemoryBarrier40238     explicit operator VkMemoryBarrier const &() const VULKAN_HPP_NOEXCEPT
40239     {
40240       return *reinterpret_cast<const VkMemoryBarrier *>( this );
40241     }
40242 
operator VkMemoryBarrier&VULKAN_HPP_NAMESPACE::MemoryBarrier40243     explicit operator VkMemoryBarrier &() VULKAN_HPP_NOEXCEPT
40244     {
40245       return *reinterpret_cast<VkMemoryBarrier *>( this );
40246     }
40247 
40248 #if 14 <= VULKAN_HPP_CPP_VERSION
40249     auto
40250 #else
40251     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
40252                const void * const &,
40253                VULKAN_HPP_NAMESPACE::AccessFlags const &,
40254                VULKAN_HPP_NAMESPACE::AccessFlags const &>
40255 #endif
reflectVULKAN_HPP_NAMESPACE::MemoryBarrier40256       reflect() const VULKAN_HPP_NOEXCEPT
40257     {
40258       return std::tie( sType, pNext, srcAccessMask, dstAccessMask );
40259     }
40260 
40261 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
40262     auto operator<=>( MemoryBarrier const & ) const = default;
40263 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryBarrier40264     bool operator==( MemoryBarrier const & rhs ) const VULKAN_HPP_NOEXCEPT
40265     {
40266       return this->reflect() == rhs.reflect();
40267     }
40268 
operator !=VULKAN_HPP_NAMESPACE::MemoryBarrier40269     bool operator!=( MemoryBarrier const & rhs ) const VULKAN_HPP_NOEXCEPT
40270     {
40271       return this->reflect() != rhs.reflect();
40272     }
40273 #endif
40274 
40275   public:
40276     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::eMemoryBarrier;
40277     const void *                        pNext         = {};
40278     VULKAN_HPP_NAMESPACE::AccessFlags   srcAccessMask = {};
40279     VULKAN_HPP_NAMESPACE::AccessFlags   dstAccessMask = {};
40280   };
40281   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryBarrier ) == sizeof( VkMemoryBarrier ),
40282                             "struct and wrapper have different size!" );
40283   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::MemoryBarrier>::value,
40284                             "struct wrapper is not a standard layout!" );
40285   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::MemoryBarrier>::value,
40286                             "MemoryBarrier is not nothrow_move_constructible!" );
40287 
40288   template <>
40289   struct CppType<StructureType, StructureType::eMemoryBarrier>
40290   {
40291     using Type = MemoryBarrier;
40292   };
40293 
40294   struct MemoryDedicatedAllocateInfo
40295   {
40296     using NativeType = VkMemoryDedicatedAllocateInfo;
40297 
40298     static const bool                                  allowDuplicate = false;
40299     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryDedicatedAllocateInfo;
40300 
40301 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryDedicatedAllocateInfoVULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo40302     VULKAN_HPP_CONSTEXPR MemoryDedicatedAllocateInfo( VULKAN_HPP_NAMESPACE::Image  image_  = {},
40303                                                       VULKAN_HPP_NAMESPACE::Buffer buffer_ = {} ) VULKAN_HPP_NOEXCEPT
40304       : image( image_ )
40305       , buffer( buffer_ )
40306     {}
40307 
40308     VULKAN_HPP_CONSTEXPR
40309       MemoryDedicatedAllocateInfo( MemoryDedicatedAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40310 
MemoryDedicatedAllocateInfoVULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo40311     MemoryDedicatedAllocateInfo( VkMemoryDedicatedAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
40312       : MemoryDedicatedAllocateInfo( *reinterpret_cast<MemoryDedicatedAllocateInfo const *>( &rhs ) )
40313     {}
40314 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
40315 
40316     MemoryDedicatedAllocateInfo & operator=( MemoryDedicatedAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40317 
operator =VULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo40318     MemoryDedicatedAllocateInfo & operator=( VkMemoryDedicatedAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
40319     {
40320       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo const *>( &rhs );
40321       return *this;
40322     }
40323 
40324 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo40325     VULKAN_HPP_CONSTEXPR_14 MemoryDedicatedAllocateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
40326     {
40327       pNext = pNext_;
40328       return *this;
40329     }
40330 
40331     VULKAN_HPP_CONSTEXPR_14 MemoryDedicatedAllocateInfo &
setImageVULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo40332                             setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
40333     {
40334       image = image_;
40335       return *this;
40336     }
40337 
40338     VULKAN_HPP_CONSTEXPR_14 MemoryDedicatedAllocateInfo &
setBufferVULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo40339                             setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
40340     {
40341       buffer = buffer_;
40342       return *this;
40343     }
40344 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
40345 
operator VkMemoryDedicatedAllocateInfo const&VULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo40346     explicit operator VkMemoryDedicatedAllocateInfo const &() const VULKAN_HPP_NOEXCEPT
40347     {
40348       return *reinterpret_cast<const VkMemoryDedicatedAllocateInfo *>( this );
40349     }
40350 
operator VkMemoryDedicatedAllocateInfo&VULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo40351     explicit operator VkMemoryDedicatedAllocateInfo &() VULKAN_HPP_NOEXCEPT
40352     {
40353       return *reinterpret_cast<VkMemoryDedicatedAllocateInfo *>( this );
40354     }
40355 
40356 #if 14 <= VULKAN_HPP_CPP_VERSION
40357     auto
40358 #else
40359     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
40360                const void * const &,
40361                VULKAN_HPP_NAMESPACE::Image const &,
40362                VULKAN_HPP_NAMESPACE::Buffer const &>
40363 #endif
reflectVULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo40364       reflect() const VULKAN_HPP_NOEXCEPT
40365     {
40366       return std::tie( sType, pNext, image, buffer );
40367     }
40368 
40369 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
40370     auto operator<=>( MemoryDedicatedAllocateInfo const & ) const = default;
40371 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo40372     bool operator==( MemoryDedicatedAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
40373     {
40374       return this->reflect() == rhs.reflect();
40375     }
40376 
operator !=VULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo40377     bool operator!=( MemoryDedicatedAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
40378     {
40379       return this->reflect() != rhs.reflect();
40380     }
40381 #endif
40382 
40383   public:
40384     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eMemoryDedicatedAllocateInfo;
40385     const void *                        pNext  = {};
40386     VULKAN_HPP_NAMESPACE::Image         image  = {};
40387     VULKAN_HPP_NAMESPACE::Buffer        buffer = {};
40388   };
40389   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo ) ==
40390                               sizeof( VkMemoryDedicatedAllocateInfo ),
40391                             "struct and wrapper have different size!" );
40392   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo>::value,
40393                             "struct wrapper is not a standard layout!" );
40394   VULKAN_HPP_STATIC_ASSERT(
40395     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo>::value,
40396     "MemoryDedicatedAllocateInfo is not nothrow_move_constructible!" );
40397 
40398   template <>
40399   struct CppType<StructureType, StructureType::eMemoryDedicatedAllocateInfo>
40400   {
40401     using Type = MemoryDedicatedAllocateInfo;
40402   };
40403   using MemoryDedicatedAllocateInfoKHR = MemoryDedicatedAllocateInfo;
40404 
40405   struct MemoryDedicatedRequirements
40406   {
40407     using NativeType = VkMemoryDedicatedRequirements;
40408 
40409     static const bool                                  allowDuplicate = false;
40410     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryDedicatedRequirements;
40411 
40412 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
40413     VULKAN_HPP_CONSTEXPR
MemoryDedicatedRequirementsVULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements40414       MemoryDedicatedRequirements( VULKAN_HPP_NAMESPACE::Bool32 prefersDedicatedAllocation_  = {},
40415                                    VULKAN_HPP_NAMESPACE::Bool32 requiresDedicatedAllocation_ = {} ) VULKAN_HPP_NOEXCEPT
40416       : prefersDedicatedAllocation( prefersDedicatedAllocation_ )
40417       , requiresDedicatedAllocation( requiresDedicatedAllocation_ )
40418     {}
40419 
40420     VULKAN_HPP_CONSTEXPR
40421       MemoryDedicatedRequirements( MemoryDedicatedRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40422 
MemoryDedicatedRequirementsVULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements40423     MemoryDedicatedRequirements( VkMemoryDedicatedRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
40424       : MemoryDedicatedRequirements( *reinterpret_cast<MemoryDedicatedRequirements const *>( &rhs ) )
40425     {}
40426 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
40427 
40428     MemoryDedicatedRequirements & operator=( MemoryDedicatedRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40429 
operator =VULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements40430     MemoryDedicatedRequirements & operator=( VkMemoryDedicatedRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
40431     {
40432       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements const *>( &rhs );
40433       return *this;
40434     }
40435 
operator VkMemoryDedicatedRequirements const&VULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements40436     explicit operator VkMemoryDedicatedRequirements const &() const VULKAN_HPP_NOEXCEPT
40437     {
40438       return *reinterpret_cast<const VkMemoryDedicatedRequirements *>( this );
40439     }
40440 
operator VkMemoryDedicatedRequirements&VULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements40441     explicit operator VkMemoryDedicatedRequirements &() VULKAN_HPP_NOEXCEPT
40442     {
40443       return *reinterpret_cast<VkMemoryDedicatedRequirements *>( this );
40444     }
40445 
40446 #if 14 <= VULKAN_HPP_CPP_VERSION
40447     auto
40448 #else
40449     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
40450                void * const &,
40451                VULKAN_HPP_NAMESPACE::Bool32 const &,
40452                VULKAN_HPP_NAMESPACE::Bool32 const &>
40453 #endif
reflectVULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements40454       reflect() const VULKAN_HPP_NOEXCEPT
40455     {
40456       return std::tie( sType, pNext, prefersDedicatedAllocation, requiresDedicatedAllocation );
40457     }
40458 
40459 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
40460     auto operator<=>( MemoryDedicatedRequirements const & ) const = default;
40461 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements40462     bool operator==( MemoryDedicatedRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT
40463     {
40464       return this->reflect() == rhs.reflect();
40465     }
40466 
operator !=VULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements40467     bool operator!=( MemoryDedicatedRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT
40468     {
40469       return this->reflect() != rhs.reflect();
40470     }
40471 #endif
40472 
40473   public:
40474     VULKAN_HPP_NAMESPACE::StructureType sType                       = StructureType::eMemoryDedicatedRequirements;
40475     void *                              pNext                       = {};
40476     VULKAN_HPP_NAMESPACE::Bool32        prefersDedicatedAllocation  = {};
40477     VULKAN_HPP_NAMESPACE::Bool32        requiresDedicatedAllocation = {};
40478   };
40479   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements ) ==
40480                               sizeof( VkMemoryDedicatedRequirements ),
40481                             "struct and wrapper have different size!" );
40482   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements>::value,
40483                             "struct wrapper is not a standard layout!" );
40484   VULKAN_HPP_STATIC_ASSERT(
40485     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements>::value,
40486     "MemoryDedicatedRequirements is not nothrow_move_constructible!" );
40487 
40488   template <>
40489   struct CppType<StructureType, StructureType::eMemoryDedicatedRequirements>
40490   {
40491     using Type = MemoryDedicatedRequirements;
40492   };
40493   using MemoryDedicatedRequirementsKHR = MemoryDedicatedRequirements;
40494 
40495   struct MemoryFdPropertiesKHR
40496   {
40497     using NativeType = VkMemoryFdPropertiesKHR;
40498 
40499     static const bool                                  allowDuplicate = false;
40500     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryFdPropertiesKHR;
40501 
40502 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryFdPropertiesKHRVULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR40503     VULKAN_HPP_CONSTEXPR MemoryFdPropertiesKHR( uint32_t memoryTypeBits_ = {} ) VULKAN_HPP_NOEXCEPT
40504       : memoryTypeBits( memoryTypeBits_ )
40505     {}
40506 
40507     VULKAN_HPP_CONSTEXPR MemoryFdPropertiesKHR( MemoryFdPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40508 
MemoryFdPropertiesKHRVULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR40509     MemoryFdPropertiesKHR( VkMemoryFdPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
40510       : MemoryFdPropertiesKHR( *reinterpret_cast<MemoryFdPropertiesKHR const *>( &rhs ) )
40511     {}
40512 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
40513 
40514     MemoryFdPropertiesKHR & operator=( MemoryFdPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40515 
operator =VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR40516     MemoryFdPropertiesKHR & operator=( VkMemoryFdPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
40517     {
40518       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR const *>( &rhs );
40519       return *this;
40520     }
40521 
operator VkMemoryFdPropertiesKHR const&VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR40522     explicit operator VkMemoryFdPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
40523     {
40524       return *reinterpret_cast<const VkMemoryFdPropertiesKHR *>( this );
40525     }
40526 
operator VkMemoryFdPropertiesKHR&VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR40527     explicit operator VkMemoryFdPropertiesKHR &() VULKAN_HPP_NOEXCEPT
40528     {
40529       return *reinterpret_cast<VkMemoryFdPropertiesKHR *>( this );
40530     }
40531 
40532 #if 14 <= VULKAN_HPP_CPP_VERSION
40533     auto
40534 #else
40535     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
40536 #endif
reflectVULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR40537       reflect() const VULKAN_HPP_NOEXCEPT
40538     {
40539       return std::tie( sType, pNext, memoryTypeBits );
40540     }
40541 
40542 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
40543     auto operator<=>( MemoryFdPropertiesKHR const & ) const = default;
40544 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR40545     bool operator==( MemoryFdPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
40546     {
40547       return this->reflect() == rhs.reflect();
40548     }
40549 
operator !=VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR40550     bool operator!=( MemoryFdPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
40551     {
40552       return this->reflect() != rhs.reflect();
40553     }
40554 #endif
40555 
40556   public:
40557     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eMemoryFdPropertiesKHR;
40558     void *                              pNext          = {};
40559     uint32_t                            memoryTypeBits = {};
40560   };
40561   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR ) == sizeof( VkMemoryFdPropertiesKHR ),
40562                             "struct and wrapper have different size!" );
40563   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR>::value,
40564                             "struct wrapper is not a standard layout!" );
40565   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR>::value,
40566                             "MemoryFdPropertiesKHR is not nothrow_move_constructible!" );
40567 
40568   template <>
40569   struct CppType<StructureType, StructureType::eMemoryFdPropertiesKHR>
40570   {
40571     using Type = MemoryFdPropertiesKHR;
40572   };
40573 
40574 #if defined( VK_USE_PLATFORM_ANDROID_KHR )
40575   struct MemoryGetAndroidHardwareBufferInfoANDROID
40576   {
40577     using NativeType = VkMemoryGetAndroidHardwareBufferInfoANDROID;
40578 
40579     static const bool                                  allowDuplicate = false;
40580     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
40581       StructureType::eMemoryGetAndroidHardwareBufferInfoANDROID;
40582 
40583 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
40584     VULKAN_HPP_CONSTEXPR
MemoryGetAndroidHardwareBufferInfoANDROIDVULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID40585       MemoryGetAndroidHardwareBufferInfoANDROID( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {} ) VULKAN_HPP_NOEXCEPT
40586       : memory( memory_ )
40587     {}
40588 
40589     VULKAN_HPP_CONSTEXPR MemoryGetAndroidHardwareBufferInfoANDROID(
40590       MemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40591 
MemoryGetAndroidHardwareBufferInfoANDROIDVULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID40592     MemoryGetAndroidHardwareBufferInfoANDROID( VkMemoryGetAndroidHardwareBufferInfoANDROID const & rhs )
40593       VULKAN_HPP_NOEXCEPT
40594       : MemoryGetAndroidHardwareBufferInfoANDROID(
40595           *reinterpret_cast<MemoryGetAndroidHardwareBufferInfoANDROID const *>( &rhs ) )
40596     {}
40597 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
40598 
40599     MemoryGetAndroidHardwareBufferInfoANDROID &
40600       operator=( MemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40601 
40602     MemoryGetAndroidHardwareBufferInfoANDROID &
operator =VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID40603       operator=( VkMemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
40604     {
40605       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID const *>( &rhs );
40606       return *this;
40607     }
40608 
40609 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
40610     VULKAN_HPP_CONSTEXPR_14 MemoryGetAndroidHardwareBufferInfoANDROID &
setPNextVULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID40611                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
40612     {
40613       pNext = pNext_;
40614       return *this;
40615     }
40616 
40617     VULKAN_HPP_CONSTEXPR_14 MemoryGetAndroidHardwareBufferInfoANDROID &
setMemoryVULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID40618                             setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
40619     {
40620       memory = memory_;
40621       return *this;
40622     }
40623 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
40624 
operator VkMemoryGetAndroidHardwareBufferInfoANDROID const&VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID40625     explicit operator VkMemoryGetAndroidHardwareBufferInfoANDROID const &() const VULKAN_HPP_NOEXCEPT
40626     {
40627       return *reinterpret_cast<const VkMemoryGetAndroidHardwareBufferInfoANDROID *>( this );
40628     }
40629 
operator VkMemoryGetAndroidHardwareBufferInfoANDROID&VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID40630     explicit operator VkMemoryGetAndroidHardwareBufferInfoANDROID &() VULKAN_HPP_NOEXCEPT
40631     {
40632       return *reinterpret_cast<VkMemoryGetAndroidHardwareBufferInfoANDROID *>( this );
40633     }
40634 
40635 #  if 14 <= VULKAN_HPP_CPP_VERSION
40636     auto
40637 #  else
40638     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
40639                const void * const &,
40640                VULKAN_HPP_NAMESPACE::DeviceMemory const &>
40641 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID40642       reflect() const VULKAN_HPP_NOEXCEPT
40643     {
40644       return std::tie( sType, pNext, memory );
40645     }
40646 
40647 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
40648     auto operator<=>( MemoryGetAndroidHardwareBufferInfoANDROID const & ) const = default;
40649 #  else
operator ==VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID40650     bool operator==( MemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
40651     {
40652       return this->reflect() == rhs.reflect();
40653     }
40654 
operator !=VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID40655     bool operator!=( MemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
40656     {
40657       return this->reflect() != rhs.reflect();
40658     }
40659 #  endif
40660 
40661   public:
40662     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eMemoryGetAndroidHardwareBufferInfoANDROID;
40663     const void *                        pNext  = {};
40664     VULKAN_HPP_NAMESPACE::DeviceMemory  memory = {};
40665   };
40666   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID ) ==
40667                               sizeof( VkMemoryGetAndroidHardwareBufferInfoANDROID ),
40668                             "struct and wrapper have different size!" );
40669   VULKAN_HPP_STATIC_ASSERT(
40670     std::is_standard_layout<VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID>::value,
40671     "struct wrapper is not a standard layout!" );
40672   VULKAN_HPP_STATIC_ASSERT(
40673     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID>::value,
40674     "MemoryGetAndroidHardwareBufferInfoANDROID is not nothrow_move_constructible!" );
40675 
40676   template <>
40677   struct CppType<StructureType, StructureType::eMemoryGetAndroidHardwareBufferInfoANDROID>
40678   {
40679     using Type = MemoryGetAndroidHardwareBufferInfoANDROID;
40680   };
40681 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
40682 
40683   struct MemoryGetFdInfoKHR
40684   {
40685     using NativeType = VkMemoryGetFdInfoKHR;
40686 
40687     static const bool                                  allowDuplicate = false;
40688     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryGetFdInfoKHR;
40689 
40690 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
40691     VULKAN_HPP_CONSTEXPR
MemoryGetFdInfoKHRVULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR40692       MemoryGetFdInfoKHR( VULKAN_HPP_NAMESPACE::DeviceMemory                     memory_ = {},
40693                           VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ =
40694                             VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd ) VULKAN_HPP_NOEXCEPT
40695       : memory( memory_ )
40696       , handleType( handleType_ )
40697     {}
40698 
40699     VULKAN_HPP_CONSTEXPR MemoryGetFdInfoKHR( MemoryGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40700 
MemoryGetFdInfoKHRVULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR40701     MemoryGetFdInfoKHR( VkMemoryGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
40702       : MemoryGetFdInfoKHR( *reinterpret_cast<MemoryGetFdInfoKHR const *>( &rhs ) )
40703     {}
40704 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
40705 
40706     MemoryGetFdInfoKHR & operator=( MemoryGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40707 
operator =VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR40708     MemoryGetFdInfoKHR & operator=( VkMemoryGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
40709     {
40710       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR const *>( &rhs );
40711       return *this;
40712     }
40713 
40714 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR40715     VULKAN_HPP_CONSTEXPR_14 MemoryGetFdInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
40716     {
40717       pNext = pNext_;
40718       return *this;
40719     }
40720 
40721     VULKAN_HPP_CONSTEXPR_14 MemoryGetFdInfoKHR &
setMemoryVULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR40722                             setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
40723     {
40724       memory = memory_;
40725       return *this;
40726     }
40727 
40728     VULKAN_HPP_CONSTEXPR_14 MemoryGetFdInfoKHR &
setHandleTypeVULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR40729       setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
40730     {
40731       handleType = handleType_;
40732       return *this;
40733     }
40734 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
40735 
operator VkMemoryGetFdInfoKHR const&VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR40736     explicit operator VkMemoryGetFdInfoKHR const &() const VULKAN_HPP_NOEXCEPT
40737     {
40738       return *reinterpret_cast<const VkMemoryGetFdInfoKHR *>( this );
40739     }
40740 
operator VkMemoryGetFdInfoKHR&VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR40741     explicit operator VkMemoryGetFdInfoKHR &() VULKAN_HPP_NOEXCEPT
40742     {
40743       return *reinterpret_cast<VkMemoryGetFdInfoKHR *>( this );
40744     }
40745 
40746 #if 14 <= VULKAN_HPP_CPP_VERSION
40747     auto
40748 #else
40749     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
40750                const void * const &,
40751                VULKAN_HPP_NAMESPACE::DeviceMemory const &,
40752                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits const &>
40753 #endif
reflectVULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR40754       reflect() const VULKAN_HPP_NOEXCEPT
40755     {
40756       return std::tie( sType, pNext, memory, handleType );
40757     }
40758 
40759 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
40760     auto operator<=>( MemoryGetFdInfoKHR const & ) const = default;
40761 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR40762     bool operator==( MemoryGetFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
40763     {
40764       return this->reflect() == rhs.reflect();
40765     }
40766 
operator !=VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR40767     bool operator!=( MemoryGetFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
40768     {
40769       return this->reflect() != rhs.reflect();
40770     }
40771 #endif
40772 
40773   public:
40774     VULKAN_HPP_NAMESPACE::StructureType                    sType  = StructureType::eMemoryGetFdInfoKHR;
40775     const void *                                           pNext  = {};
40776     VULKAN_HPP_NAMESPACE::DeviceMemory                     memory = {};
40777     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType =
40778       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
40779   };
40780   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR ) == sizeof( VkMemoryGetFdInfoKHR ),
40781                             "struct and wrapper have different size!" );
40782   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR>::value,
40783                             "struct wrapper is not a standard layout!" );
40784   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR>::value,
40785                             "MemoryGetFdInfoKHR is not nothrow_move_constructible!" );
40786 
40787   template <>
40788   struct CppType<StructureType, StructureType::eMemoryGetFdInfoKHR>
40789   {
40790     using Type = MemoryGetFdInfoKHR;
40791   };
40792 
40793   struct MemoryGetRemoteAddressInfoNV
40794   {
40795     using NativeType = VkMemoryGetRemoteAddressInfoNV;
40796 
40797     static const bool                                  allowDuplicate = false;
40798     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryGetRemoteAddressInfoNV;
40799 
40800 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryGetRemoteAddressInfoNVVULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV40801     VULKAN_HPP_CONSTEXPR MemoryGetRemoteAddressInfoNV(
40802       VULKAN_HPP_NAMESPACE::DeviceMemory                     memory_ = {},
40803       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ =
40804         VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd ) VULKAN_HPP_NOEXCEPT
40805       : memory( memory_ )
40806       , handleType( handleType_ )
40807     {}
40808 
40809     VULKAN_HPP_CONSTEXPR
40810       MemoryGetRemoteAddressInfoNV( MemoryGetRemoteAddressInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40811 
MemoryGetRemoteAddressInfoNVVULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV40812     MemoryGetRemoteAddressInfoNV( VkMemoryGetRemoteAddressInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
40813       : MemoryGetRemoteAddressInfoNV( *reinterpret_cast<MemoryGetRemoteAddressInfoNV const *>( &rhs ) )
40814     {}
40815 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
40816 
40817     MemoryGetRemoteAddressInfoNV & operator=( MemoryGetRemoteAddressInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40818 
operator =VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV40819     MemoryGetRemoteAddressInfoNV & operator=( VkMemoryGetRemoteAddressInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
40820     {
40821       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV const *>( &rhs );
40822       return *this;
40823     }
40824 
40825 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV40826     VULKAN_HPP_CONSTEXPR_14 MemoryGetRemoteAddressInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
40827     {
40828       pNext = pNext_;
40829       return *this;
40830     }
40831 
40832     VULKAN_HPP_CONSTEXPR_14 MemoryGetRemoteAddressInfoNV &
setMemoryVULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV40833                             setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
40834     {
40835       memory = memory_;
40836       return *this;
40837     }
40838 
40839     VULKAN_HPP_CONSTEXPR_14 MemoryGetRemoteAddressInfoNV &
setHandleTypeVULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV40840       setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
40841     {
40842       handleType = handleType_;
40843       return *this;
40844     }
40845 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
40846 
operator VkMemoryGetRemoteAddressInfoNV const&VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV40847     explicit operator VkMemoryGetRemoteAddressInfoNV const &() const VULKAN_HPP_NOEXCEPT
40848     {
40849       return *reinterpret_cast<const VkMemoryGetRemoteAddressInfoNV *>( this );
40850     }
40851 
operator VkMemoryGetRemoteAddressInfoNV&VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV40852     explicit operator VkMemoryGetRemoteAddressInfoNV &() VULKAN_HPP_NOEXCEPT
40853     {
40854       return *reinterpret_cast<VkMemoryGetRemoteAddressInfoNV *>( this );
40855     }
40856 
40857 #if 14 <= VULKAN_HPP_CPP_VERSION
40858     auto
40859 #else
40860     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
40861                const void * const &,
40862                VULKAN_HPP_NAMESPACE::DeviceMemory const &,
40863                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits const &>
40864 #endif
reflectVULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV40865       reflect() const VULKAN_HPP_NOEXCEPT
40866     {
40867       return std::tie( sType, pNext, memory, handleType );
40868     }
40869 
40870 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
40871     auto operator<=>( MemoryGetRemoteAddressInfoNV const & ) const = default;
40872 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV40873     bool operator==( MemoryGetRemoteAddressInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
40874     {
40875       return this->reflect() == rhs.reflect();
40876     }
40877 
operator !=VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV40878     bool operator!=( MemoryGetRemoteAddressInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
40879     {
40880       return this->reflect() != rhs.reflect();
40881     }
40882 #endif
40883 
40884   public:
40885     VULKAN_HPP_NAMESPACE::StructureType                    sType  = StructureType::eMemoryGetRemoteAddressInfoNV;
40886     const void *                                           pNext  = {};
40887     VULKAN_HPP_NAMESPACE::DeviceMemory                     memory = {};
40888     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType =
40889       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
40890   };
40891   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV ) ==
40892                               sizeof( VkMemoryGetRemoteAddressInfoNV ),
40893                             "struct and wrapper have different size!" );
40894   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV>::value,
40895                             "struct wrapper is not a standard layout!" );
40896   VULKAN_HPP_STATIC_ASSERT(
40897     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV>::value,
40898     "MemoryGetRemoteAddressInfoNV is not nothrow_move_constructible!" );
40899 
40900   template <>
40901   struct CppType<StructureType, StructureType::eMemoryGetRemoteAddressInfoNV>
40902   {
40903     using Type = MemoryGetRemoteAddressInfoNV;
40904   };
40905 
40906 #if defined( VK_USE_PLATFORM_WIN32_KHR )
40907   struct MemoryGetWin32HandleInfoKHR
40908   {
40909     using NativeType = VkMemoryGetWin32HandleInfoKHR;
40910 
40911     static const bool                                  allowDuplicate = false;
40912     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryGetWin32HandleInfoKHR;
40913 
40914 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryGetWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR40915     VULKAN_HPP_CONSTEXPR MemoryGetWin32HandleInfoKHR(
40916       VULKAN_HPP_NAMESPACE::DeviceMemory                     memory_ = {},
40917       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ =
40918         VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd ) VULKAN_HPP_NOEXCEPT
40919       : memory( memory_ )
40920       , handleType( handleType_ )
40921     {}
40922 
40923     VULKAN_HPP_CONSTEXPR
40924       MemoryGetWin32HandleInfoKHR( MemoryGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40925 
MemoryGetWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR40926     MemoryGetWin32HandleInfoKHR( VkMemoryGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
40927       : MemoryGetWin32HandleInfoKHR( *reinterpret_cast<MemoryGetWin32HandleInfoKHR const *>( &rhs ) )
40928     {}
40929 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
40930 
40931     MemoryGetWin32HandleInfoKHR & operator=( MemoryGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40932 
operator =VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR40933     MemoryGetWin32HandleInfoKHR & operator=( VkMemoryGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
40934     {
40935       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR const *>( &rhs );
40936       return *this;
40937     }
40938 
40939 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR40940     VULKAN_HPP_CONSTEXPR_14 MemoryGetWin32HandleInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
40941     {
40942       pNext = pNext_;
40943       return *this;
40944     }
40945 
40946     VULKAN_HPP_CONSTEXPR_14 MemoryGetWin32HandleInfoKHR &
setMemoryVULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR40947                             setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
40948     {
40949       memory = memory_;
40950       return *this;
40951     }
40952 
40953     VULKAN_HPP_CONSTEXPR_14 MemoryGetWin32HandleInfoKHR &
setHandleTypeVULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR40954       setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
40955     {
40956       handleType = handleType_;
40957       return *this;
40958     }
40959 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
40960 
operator VkMemoryGetWin32HandleInfoKHR const&VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR40961     explicit operator VkMemoryGetWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT
40962     {
40963       return *reinterpret_cast<const VkMemoryGetWin32HandleInfoKHR *>( this );
40964     }
40965 
operator VkMemoryGetWin32HandleInfoKHR&VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR40966     explicit operator VkMemoryGetWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT
40967     {
40968       return *reinterpret_cast<VkMemoryGetWin32HandleInfoKHR *>( this );
40969     }
40970 
40971 #  if 14 <= VULKAN_HPP_CPP_VERSION
40972     auto
40973 #  else
40974     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
40975                const void * const &,
40976                VULKAN_HPP_NAMESPACE::DeviceMemory const &,
40977                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits const &>
40978 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR40979       reflect() const VULKAN_HPP_NOEXCEPT
40980     {
40981       return std::tie( sType, pNext, memory, handleType );
40982     }
40983 
40984 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
40985     auto operator<=>( MemoryGetWin32HandleInfoKHR const & ) const = default;
40986 #  else
operator ==VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR40987     bool operator==( MemoryGetWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
40988     {
40989       return this->reflect() == rhs.reflect();
40990     }
40991 
operator !=VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR40992     bool operator!=( MemoryGetWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
40993     {
40994       return this->reflect() != rhs.reflect();
40995     }
40996 #  endif
40997 
40998   public:
40999     VULKAN_HPP_NAMESPACE::StructureType                    sType  = StructureType::eMemoryGetWin32HandleInfoKHR;
41000     const void *                                           pNext  = {};
41001     VULKAN_HPP_NAMESPACE::DeviceMemory                     memory = {};
41002     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType =
41003       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
41004   };
41005   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR ) ==
41006                               sizeof( VkMemoryGetWin32HandleInfoKHR ),
41007                             "struct and wrapper have different size!" );
41008   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR>::value,
41009                             "struct wrapper is not a standard layout!" );
41010   VULKAN_HPP_STATIC_ASSERT(
41011     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR>::value,
41012     "MemoryGetWin32HandleInfoKHR is not nothrow_move_constructible!" );
41013 
41014   template <>
41015   struct CppType<StructureType, StructureType::eMemoryGetWin32HandleInfoKHR>
41016   {
41017     using Type = MemoryGetWin32HandleInfoKHR;
41018   };
41019 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
41020 
41021 #if defined( VK_USE_PLATFORM_FUCHSIA )
41022   struct MemoryGetZirconHandleInfoFUCHSIA
41023   {
41024     using NativeType = VkMemoryGetZirconHandleInfoFUCHSIA;
41025 
41026     static const bool                                  allowDuplicate = false;
41027     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryGetZirconHandleInfoFUCHSIA;
41028 
41029 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryGetZirconHandleInfoFUCHSIAVULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA41030     VULKAN_HPP_CONSTEXPR MemoryGetZirconHandleInfoFUCHSIA(
41031       VULKAN_HPP_NAMESPACE::DeviceMemory                     memory_ = {},
41032       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ =
41033         VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd ) VULKAN_HPP_NOEXCEPT
41034       : memory( memory_ )
41035       , handleType( handleType_ )
41036     {}
41037 
41038     VULKAN_HPP_CONSTEXPR
41039       MemoryGetZirconHandleInfoFUCHSIA( MemoryGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41040 
MemoryGetZirconHandleInfoFUCHSIAVULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA41041     MemoryGetZirconHandleInfoFUCHSIA( VkMemoryGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
41042       : MemoryGetZirconHandleInfoFUCHSIA( *reinterpret_cast<MemoryGetZirconHandleInfoFUCHSIA const *>( &rhs ) )
41043     {}
41044 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
41045 
41046     MemoryGetZirconHandleInfoFUCHSIA &
41047       operator=( MemoryGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41048 
operator =VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA41049     MemoryGetZirconHandleInfoFUCHSIA & operator=( VkMemoryGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
41050     {
41051       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA const *>( &rhs );
41052       return *this;
41053     }
41054 
41055 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA41056     VULKAN_HPP_CONSTEXPR_14 MemoryGetZirconHandleInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
41057     {
41058       pNext = pNext_;
41059       return *this;
41060     }
41061 
41062     VULKAN_HPP_CONSTEXPR_14 MemoryGetZirconHandleInfoFUCHSIA &
setMemoryVULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA41063                             setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
41064     {
41065       memory = memory_;
41066       return *this;
41067     }
41068 
41069     VULKAN_HPP_CONSTEXPR_14 MemoryGetZirconHandleInfoFUCHSIA &
setHandleTypeVULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA41070       setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
41071     {
41072       handleType = handleType_;
41073       return *this;
41074     }
41075 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
41076 
operator VkMemoryGetZirconHandleInfoFUCHSIA const&VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA41077     explicit operator VkMemoryGetZirconHandleInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
41078     {
41079       return *reinterpret_cast<const VkMemoryGetZirconHandleInfoFUCHSIA *>( this );
41080     }
41081 
operator VkMemoryGetZirconHandleInfoFUCHSIA&VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA41082     explicit operator VkMemoryGetZirconHandleInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT
41083     {
41084       return *reinterpret_cast<VkMemoryGetZirconHandleInfoFUCHSIA *>( this );
41085     }
41086 
41087 #  if 14 <= VULKAN_HPP_CPP_VERSION
41088     auto
41089 #  else
41090     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
41091                const void * const &,
41092                VULKAN_HPP_NAMESPACE::DeviceMemory const &,
41093                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits const &>
41094 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA41095       reflect() const VULKAN_HPP_NOEXCEPT
41096     {
41097       return std::tie( sType, pNext, memory, handleType );
41098     }
41099 
41100 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
41101     auto operator<=>( MemoryGetZirconHandleInfoFUCHSIA const & ) const = default;
41102 #  else
operator ==VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA41103     bool operator==( MemoryGetZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
41104     {
41105       return this->reflect() == rhs.reflect();
41106     }
41107 
operator !=VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA41108     bool operator!=( MemoryGetZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
41109     {
41110       return this->reflect() != rhs.reflect();
41111     }
41112 #  endif
41113 
41114   public:
41115     VULKAN_HPP_NAMESPACE::StructureType                    sType  = StructureType::eMemoryGetZirconHandleInfoFUCHSIA;
41116     const void *                                           pNext  = {};
41117     VULKAN_HPP_NAMESPACE::DeviceMemory                     memory = {};
41118     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType =
41119       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
41120   };
41121   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA ) ==
41122                               sizeof( VkMemoryGetZirconHandleInfoFUCHSIA ),
41123                             "struct and wrapper have different size!" );
41124   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA>::value,
41125                             "struct wrapper is not a standard layout!" );
41126   VULKAN_HPP_STATIC_ASSERT(
41127     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA>::value,
41128     "MemoryGetZirconHandleInfoFUCHSIA is not nothrow_move_constructible!" );
41129 
41130   template <>
41131   struct CppType<StructureType, StructureType::eMemoryGetZirconHandleInfoFUCHSIA>
41132   {
41133     using Type = MemoryGetZirconHandleInfoFUCHSIA;
41134   };
41135 #endif /*VK_USE_PLATFORM_FUCHSIA*/
41136 
41137   struct MemoryHeap
41138   {
41139     using NativeType = VkMemoryHeap;
41140 
41141 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryHeapVULKAN_HPP_NAMESPACE::MemoryHeap41142     VULKAN_HPP_CONSTEXPR MemoryHeap( VULKAN_HPP_NAMESPACE::DeviceSize      size_  = {},
41143                                      VULKAN_HPP_NAMESPACE::MemoryHeapFlags flags_ = {} ) VULKAN_HPP_NOEXCEPT
41144       : size( size_ )
41145       , flags( flags_ )
41146     {}
41147 
41148     VULKAN_HPP_CONSTEXPR MemoryHeap( MemoryHeap const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41149 
MemoryHeapVULKAN_HPP_NAMESPACE::MemoryHeap41150     MemoryHeap( VkMemoryHeap const & rhs ) VULKAN_HPP_NOEXCEPT
41151       : MemoryHeap( *reinterpret_cast<MemoryHeap const *>( &rhs ) )
41152     {}
41153 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
41154 
41155     MemoryHeap & operator=( MemoryHeap const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41156 
operator =VULKAN_HPP_NAMESPACE::MemoryHeap41157     MemoryHeap & operator=( VkMemoryHeap const & rhs ) VULKAN_HPP_NOEXCEPT
41158     {
41159       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryHeap const *>( &rhs );
41160       return *this;
41161     }
41162 
operator VkMemoryHeap const&VULKAN_HPP_NAMESPACE::MemoryHeap41163     explicit operator VkMemoryHeap const &() const VULKAN_HPP_NOEXCEPT
41164     {
41165       return *reinterpret_cast<const VkMemoryHeap *>( this );
41166     }
41167 
operator VkMemoryHeap&VULKAN_HPP_NAMESPACE::MemoryHeap41168     explicit operator VkMemoryHeap &() VULKAN_HPP_NOEXCEPT
41169     {
41170       return *reinterpret_cast<VkMemoryHeap *>( this );
41171     }
41172 
41173 #if 14 <= VULKAN_HPP_CPP_VERSION
41174     auto
41175 #else
41176     std::tuple<VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::MemoryHeapFlags const &>
41177 #endif
reflectVULKAN_HPP_NAMESPACE::MemoryHeap41178       reflect() const VULKAN_HPP_NOEXCEPT
41179     {
41180       return std::tie( size, flags );
41181     }
41182 
41183 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
41184     auto operator<=>( MemoryHeap const & ) const = default;
41185 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryHeap41186     bool operator==( MemoryHeap const & rhs ) const VULKAN_HPP_NOEXCEPT
41187     {
41188       return this->reflect() == rhs.reflect();
41189     }
41190 
operator !=VULKAN_HPP_NAMESPACE::MemoryHeap41191     bool operator!=( MemoryHeap const & rhs ) const VULKAN_HPP_NOEXCEPT
41192     {
41193       return this->reflect() != rhs.reflect();
41194     }
41195 #endif
41196 
41197   public:
41198     VULKAN_HPP_NAMESPACE::DeviceSize      size  = {};
41199     VULKAN_HPP_NAMESPACE::MemoryHeapFlags flags = {};
41200   };
41201   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryHeap ) == sizeof( VkMemoryHeap ),
41202                             "struct and wrapper have different size!" );
41203   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::MemoryHeap>::value,
41204                             "struct wrapper is not a standard layout!" );
41205   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::MemoryHeap>::value,
41206                             "MemoryHeap is not nothrow_move_constructible!" );
41207 
41208   struct MemoryHostPointerPropertiesEXT
41209   {
41210     using NativeType = VkMemoryHostPointerPropertiesEXT;
41211 
41212     static const bool                                  allowDuplicate = false;
41213     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryHostPointerPropertiesEXT;
41214 
41215 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryHostPointerPropertiesEXTVULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT41216     VULKAN_HPP_CONSTEXPR MemoryHostPointerPropertiesEXT( uint32_t memoryTypeBits_ = {} ) VULKAN_HPP_NOEXCEPT
41217       : memoryTypeBits( memoryTypeBits_ )
41218     {}
41219 
41220     VULKAN_HPP_CONSTEXPR
41221       MemoryHostPointerPropertiesEXT( MemoryHostPointerPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41222 
MemoryHostPointerPropertiesEXTVULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT41223     MemoryHostPointerPropertiesEXT( VkMemoryHostPointerPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
41224       : MemoryHostPointerPropertiesEXT( *reinterpret_cast<MemoryHostPointerPropertiesEXT const *>( &rhs ) )
41225     {}
41226 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
41227 
41228     MemoryHostPointerPropertiesEXT &
41229       operator=( MemoryHostPointerPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41230 
operator =VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT41231     MemoryHostPointerPropertiesEXT & operator=( VkMemoryHostPointerPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
41232     {
41233       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT const *>( &rhs );
41234       return *this;
41235     }
41236 
operator VkMemoryHostPointerPropertiesEXT const&VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT41237     explicit operator VkMemoryHostPointerPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
41238     {
41239       return *reinterpret_cast<const VkMemoryHostPointerPropertiesEXT *>( this );
41240     }
41241 
operator VkMemoryHostPointerPropertiesEXT&VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT41242     explicit operator VkMemoryHostPointerPropertiesEXT &() VULKAN_HPP_NOEXCEPT
41243     {
41244       return *reinterpret_cast<VkMemoryHostPointerPropertiesEXT *>( this );
41245     }
41246 
41247 #if 14 <= VULKAN_HPP_CPP_VERSION
41248     auto
41249 #else
41250     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
41251 #endif
reflectVULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT41252       reflect() const VULKAN_HPP_NOEXCEPT
41253     {
41254       return std::tie( sType, pNext, memoryTypeBits );
41255     }
41256 
41257 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
41258     auto operator<=>( MemoryHostPointerPropertiesEXT const & ) const = default;
41259 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT41260     bool operator==( MemoryHostPointerPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
41261     {
41262       return this->reflect() == rhs.reflect();
41263     }
41264 
operator !=VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT41265     bool operator!=( MemoryHostPointerPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
41266     {
41267       return this->reflect() != rhs.reflect();
41268     }
41269 #endif
41270 
41271   public:
41272     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eMemoryHostPointerPropertiesEXT;
41273     void *                              pNext          = {};
41274     uint32_t                            memoryTypeBits = {};
41275   };
41276   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT ) ==
41277                               sizeof( VkMemoryHostPointerPropertiesEXT ),
41278                             "struct and wrapper have different size!" );
41279   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT>::value,
41280                             "struct wrapper is not a standard layout!" );
41281   VULKAN_HPP_STATIC_ASSERT(
41282     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT>::value,
41283     "MemoryHostPointerPropertiesEXT is not nothrow_move_constructible!" );
41284 
41285   template <>
41286   struct CppType<StructureType, StructureType::eMemoryHostPointerPropertiesEXT>
41287   {
41288     using Type = MemoryHostPointerPropertiesEXT;
41289   };
41290 
41291   struct MemoryOpaqueCaptureAddressAllocateInfo
41292   {
41293     using NativeType = VkMemoryOpaqueCaptureAddressAllocateInfo;
41294 
41295     static const bool                                  allowDuplicate = false;
41296     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
41297       StructureType::eMemoryOpaqueCaptureAddressAllocateInfo;
41298 
41299 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
41300     VULKAN_HPP_CONSTEXPR
MemoryOpaqueCaptureAddressAllocateInfoVULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo41301       MemoryOpaqueCaptureAddressAllocateInfo( uint64_t opaqueCaptureAddress_ = {} ) VULKAN_HPP_NOEXCEPT
41302       : opaqueCaptureAddress( opaqueCaptureAddress_ )
41303     {}
41304 
41305     VULKAN_HPP_CONSTEXPR MemoryOpaqueCaptureAddressAllocateInfo( MemoryOpaqueCaptureAddressAllocateInfo const & rhs )
41306       VULKAN_HPP_NOEXCEPT = default;
41307 
MemoryOpaqueCaptureAddressAllocateInfoVULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo41308     MemoryOpaqueCaptureAddressAllocateInfo( VkMemoryOpaqueCaptureAddressAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
41309       : MemoryOpaqueCaptureAddressAllocateInfo(
41310           *reinterpret_cast<MemoryOpaqueCaptureAddressAllocateInfo const *>( &rhs ) )
41311     {}
41312 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
41313 
41314     MemoryOpaqueCaptureAddressAllocateInfo &
41315       operator=( MemoryOpaqueCaptureAddressAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41316 
41317     MemoryOpaqueCaptureAddressAllocateInfo &
operator =VULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo41318       operator=( VkMemoryOpaqueCaptureAddressAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
41319     {
41320       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo const *>( &rhs );
41321       return *this;
41322     }
41323 
41324 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo41325     VULKAN_HPP_CONSTEXPR_14 MemoryOpaqueCaptureAddressAllocateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
41326     {
41327       pNext = pNext_;
41328       return *this;
41329     }
41330 
41331     VULKAN_HPP_CONSTEXPR_14 MemoryOpaqueCaptureAddressAllocateInfo &
setOpaqueCaptureAddressVULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo41332                             setOpaqueCaptureAddress( uint64_t opaqueCaptureAddress_ ) VULKAN_HPP_NOEXCEPT
41333     {
41334       opaqueCaptureAddress = opaqueCaptureAddress_;
41335       return *this;
41336     }
41337 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
41338 
operator VkMemoryOpaqueCaptureAddressAllocateInfo const&VULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo41339     explicit operator VkMemoryOpaqueCaptureAddressAllocateInfo const &() const VULKAN_HPP_NOEXCEPT
41340     {
41341       return *reinterpret_cast<const VkMemoryOpaqueCaptureAddressAllocateInfo *>( this );
41342     }
41343 
operator VkMemoryOpaqueCaptureAddressAllocateInfo&VULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo41344     explicit operator VkMemoryOpaqueCaptureAddressAllocateInfo &() VULKAN_HPP_NOEXCEPT
41345     {
41346       return *reinterpret_cast<VkMemoryOpaqueCaptureAddressAllocateInfo *>( this );
41347     }
41348 
41349 #if 14 <= VULKAN_HPP_CPP_VERSION
41350     auto
41351 #else
41352     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint64_t const &>
41353 #endif
reflectVULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo41354       reflect() const VULKAN_HPP_NOEXCEPT
41355     {
41356       return std::tie( sType, pNext, opaqueCaptureAddress );
41357     }
41358 
41359 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
41360     auto operator<=>( MemoryOpaqueCaptureAddressAllocateInfo const & ) const = default;
41361 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo41362     bool operator==( MemoryOpaqueCaptureAddressAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
41363     {
41364       return this->reflect() == rhs.reflect();
41365     }
41366 
operator !=VULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo41367     bool operator!=( MemoryOpaqueCaptureAddressAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
41368     {
41369       return this->reflect() != rhs.reflect();
41370     }
41371 #endif
41372 
41373   public:
41374     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::eMemoryOpaqueCaptureAddressAllocateInfo;
41375     const void *                        pNext                = {};
41376     uint64_t                            opaqueCaptureAddress = {};
41377   };
41378   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo ) ==
41379                               sizeof( VkMemoryOpaqueCaptureAddressAllocateInfo ),
41380                             "struct and wrapper have different size!" );
41381   VULKAN_HPP_STATIC_ASSERT(
41382     std::is_standard_layout<VULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo>::value,
41383     "struct wrapper is not a standard layout!" );
41384   VULKAN_HPP_STATIC_ASSERT(
41385     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo>::value,
41386     "MemoryOpaqueCaptureAddressAllocateInfo is not nothrow_move_constructible!" );
41387 
41388   template <>
41389   struct CppType<StructureType, StructureType::eMemoryOpaqueCaptureAddressAllocateInfo>
41390   {
41391     using Type = MemoryOpaqueCaptureAddressAllocateInfo;
41392   };
41393   using MemoryOpaqueCaptureAddressAllocateInfoKHR = MemoryOpaqueCaptureAddressAllocateInfo;
41394 
41395   struct MemoryPriorityAllocateInfoEXT
41396   {
41397     using NativeType = VkMemoryPriorityAllocateInfoEXT;
41398 
41399     static const bool                                  allowDuplicate = false;
41400     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryPriorityAllocateInfoEXT;
41401 
41402 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryPriorityAllocateInfoEXTVULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT41403     VULKAN_HPP_CONSTEXPR MemoryPriorityAllocateInfoEXT( float priority_ = {} ) VULKAN_HPP_NOEXCEPT
41404       : priority( priority_ )
41405     {}
41406 
41407     VULKAN_HPP_CONSTEXPR
41408       MemoryPriorityAllocateInfoEXT( MemoryPriorityAllocateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41409 
MemoryPriorityAllocateInfoEXTVULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT41410     MemoryPriorityAllocateInfoEXT( VkMemoryPriorityAllocateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
41411       : MemoryPriorityAllocateInfoEXT( *reinterpret_cast<MemoryPriorityAllocateInfoEXT const *>( &rhs ) )
41412     {}
41413 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
41414 
41415     MemoryPriorityAllocateInfoEXT &
41416       operator=( MemoryPriorityAllocateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41417 
operator =VULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT41418     MemoryPriorityAllocateInfoEXT & operator=( VkMemoryPriorityAllocateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
41419     {
41420       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT const *>( &rhs );
41421       return *this;
41422     }
41423 
41424 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT41425     VULKAN_HPP_CONSTEXPR_14 MemoryPriorityAllocateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
41426     {
41427       pNext = pNext_;
41428       return *this;
41429     }
41430 
setPriorityVULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT41431     VULKAN_HPP_CONSTEXPR_14 MemoryPriorityAllocateInfoEXT & setPriority( float priority_ ) VULKAN_HPP_NOEXCEPT
41432     {
41433       priority = priority_;
41434       return *this;
41435     }
41436 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
41437 
operator VkMemoryPriorityAllocateInfoEXT const&VULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT41438     explicit operator VkMemoryPriorityAllocateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
41439     {
41440       return *reinterpret_cast<const VkMemoryPriorityAllocateInfoEXT *>( this );
41441     }
41442 
operator VkMemoryPriorityAllocateInfoEXT&VULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT41443     explicit operator VkMemoryPriorityAllocateInfoEXT &() VULKAN_HPP_NOEXCEPT
41444     {
41445       return *reinterpret_cast<VkMemoryPriorityAllocateInfoEXT *>( this );
41446     }
41447 
41448 #if 14 <= VULKAN_HPP_CPP_VERSION
41449     auto
41450 #else
41451     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, float const &>
41452 #endif
reflectVULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT41453       reflect() const VULKAN_HPP_NOEXCEPT
41454     {
41455       return std::tie( sType, pNext, priority );
41456     }
41457 
41458 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
41459     auto operator<=>( MemoryPriorityAllocateInfoEXT const & ) const = default;
41460 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT41461     bool operator==( MemoryPriorityAllocateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
41462     {
41463       return this->reflect() == rhs.reflect();
41464     }
41465 
operator !=VULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT41466     bool operator!=( MemoryPriorityAllocateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
41467     {
41468       return this->reflect() != rhs.reflect();
41469     }
41470 #endif
41471 
41472   public:
41473     VULKAN_HPP_NAMESPACE::StructureType sType    = StructureType::eMemoryPriorityAllocateInfoEXT;
41474     const void *                        pNext    = {};
41475     float                               priority = {};
41476   };
41477   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT ) ==
41478                               sizeof( VkMemoryPriorityAllocateInfoEXT ),
41479                             "struct and wrapper have different size!" );
41480   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT>::value,
41481                             "struct wrapper is not a standard layout!" );
41482   VULKAN_HPP_STATIC_ASSERT(
41483     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT>::value,
41484     "MemoryPriorityAllocateInfoEXT is not nothrow_move_constructible!" );
41485 
41486   template <>
41487   struct CppType<StructureType, StructureType::eMemoryPriorityAllocateInfoEXT>
41488   {
41489     using Type = MemoryPriorityAllocateInfoEXT;
41490   };
41491 
41492   struct MemoryRequirements
41493   {
41494     using NativeType = VkMemoryRequirements;
41495 
41496 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryRequirementsVULKAN_HPP_NAMESPACE::MemoryRequirements41497     VULKAN_HPP_CONSTEXPR MemoryRequirements( VULKAN_HPP_NAMESPACE::DeviceSize size_           = {},
41498                                              VULKAN_HPP_NAMESPACE::DeviceSize alignment_      = {},
41499                                              uint32_t                         memoryTypeBits_ = {} ) VULKAN_HPP_NOEXCEPT
41500       : size( size_ )
41501       , alignment( alignment_ )
41502       , memoryTypeBits( memoryTypeBits_ )
41503     {}
41504 
41505     VULKAN_HPP_CONSTEXPR MemoryRequirements( MemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41506 
MemoryRequirementsVULKAN_HPP_NAMESPACE::MemoryRequirements41507     MemoryRequirements( VkMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
41508       : MemoryRequirements( *reinterpret_cast<MemoryRequirements const *>( &rhs ) )
41509     {}
41510 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
41511 
41512     MemoryRequirements & operator=( MemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41513 
operator =VULKAN_HPP_NAMESPACE::MemoryRequirements41514     MemoryRequirements & operator=( VkMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
41515     {
41516       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryRequirements const *>( &rhs );
41517       return *this;
41518     }
41519 
operator VkMemoryRequirements const&VULKAN_HPP_NAMESPACE::MemoryRequirements41520     explicit operator VkMemoryRequirements const &() const VULKAN_HPP_NOEXCEPT
41521     {
41522       return *reinterpret_cast<const VkMemoryRequirements *>( this );
41523     }
41524 
operator VkMemoryRequirements&VULKAN_HPP_NAMESPACE::MemoryRequirements41525     explicit operator VkMemoryRequirements &() VULKAN_HPP_NOEXCEPT
41526     {
41527       return *reinterpret_cast<VkMemoryRequirements *>( this );
41528     }
41529 
41530 #if 14 <= VULKAN_HPP_CPP_VERSION
41531     auto
41532 #else
41533     std::tuple<VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, uint32_t const &>
41534 #endif
reflectVULKAN_HPP_NAMESPACE::MemoryRequirements41535       reflect() const VULKAN_HPP_NOEXCEPT
41536     {
41537       return std::tie( size, alignment, memoryTypeBits );
41538     }
41539 
41540 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
41541     auto operator<=>( MemoryRequirements const & ) const = default;
41542 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryRequirements41543     bool operator==( MemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT
41544     {
41545       return this->reflect() == rhs.reflect();
41546     }
41547 
operator !=VULKAN_HPP_NAMESPACE::MemoryRequirements41548     bool operator!=( MemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT
41549     {
41550       return this->reflect() != rhs.reflect();
41551     }
41552 #endif
41553 
41554   public:
41555     VULKAN_HPP_NAMESPACE::DeviceSize size           = {};
41556     VULKAN_HPP_NAMESPACE::DeviceSize alignment      = {};
41557     uint32_t                         memoryTypeBits = {};
41558   };
41559   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryRequirements ) == sizeof( VkMemoryRequirements ),
41560                             "struct and wrapper have different size!" );
41561   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::MemoryRequirements>::value,
41562                             "struct wrapper is not a standard layout!" );
41563   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::MemoryRequirements>::value,
41564                             "MemoryRequirements is not nothrow_move_constructible!" );
41565 
41566   struct MemoryRequirements2
41567   {
41568     using NativeType = VkMemoryRequirements2;
41569 
41570     static const bool                                  allowDuplicate = false;
41571     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryRequirements2;
41572 
41573 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
41574     VULKAN_HPP_CONSTEXPR
MemoryRequirements2VULKAN_HPP_NAMESPACE::MemoryRequirements241575       MemoryRequirements2( VULKAN_HPP_NAMESPACE::MemoryRequirements memoryRequirements_ = {} ) VULKAN_HPP_NOEXCEPT
41576       : memoryRequirements( memoryRequirements_ )
41577     {}
41578 
41579     VULKAN_HPP_CONSTEXPR MemoryRequirements2( MemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41580 
MemoryRequirements2VULKAN_HPP_NAMESPACE::MemoryRequirements241581     MemoryRequirements2( VkMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT
41582       : MemoryRequirements2( *reinterpret_cast<MemoryRequirements2 const *>( &rhs ) )
41583     {}
41584 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
41585 
41586     MemoryRequirements2 & operator=( MemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41587 
operator =VULKAN_HPP_NAMESPACE::MemoryRequirements241588     MemoryRequirements2 & operator=( VkMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT
41589     {
41590       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryRequirements2 const *>( &rhs );
41591       return *this;
41592     }
41593 
operator VkMemoryRequirements2 const&VULKAN_HPP_NAMESPACE::MemoryRequirements241594     explicit operator VkMemoryRequirements2 const &() const VULKAN_HPP_NOEXCEPT
41595     {
41596       return *reinterpret_cast<const VkMemoryRequirements2 *>( this );
41597     }
41598 
operator VkMemoryRequirements2&VULKAN_HPP_NAMESPACE::MemoryRequirements241599     explicit operator VkMemoryRequirements2 &() VULKAN_HPP_NOEXCEPT
41600     {
41601       return *reinterpret_cast<VkMemoryRequirements2 *>( this );
41602     }
41603 
41604 #if 14 <= VULKAN_HPP_CPP_VERSION
41605     auto
41606 #else
41607     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
41608                void * const &,
41609                VULKAN_HPP_NAMESPACE::MemoryRequirements const &>
41610 #endif
reflectVULKAN_HPP_NAMESPACE::MemoryRequirements241611       reflect() const VULKAN_HPP_NOEXCEPT
41612     {
41613       return std::tie( sType, pNext, memoryRequirements );
41614     }
41615 
41616 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
41617     auto operator<=>( MemoryRequirements2 const & ) const = default;
41618 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryRequirements241619     bool operator==( MemoryRequirements2 const & rhs ) const VULKAN_HPP_NOEXCEPT
41620     {
41621       return this->reflect() == rhs.reflect();
41622     }
41623 
operator !=VULKAN_HPP_NAMESPACE::MemoryRequirements241624     bool operator!=( MemoryRequirements2 const & rhs ) const VULKAN_HPP_NOEXCEPT
41625     {
41626       return this->reflect() != rhs.reflect();
41627     }
41628 #endif
41629 
41630   public:
41631     VULKAN_HPP_NAMESPACE::StructureType      sType              = StructureType::eMemoryRequirements2;
41632     void *                                   pNext              = {};
41633     VULKAN_HPP_NAMESPACE::MemoryRequirements memoryRequirements = {};
41634   };
41635   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryRequirements2 ) == sizeof( VkMemoryRequirements2 ),
41636                             "struct and wrapper have different size!" );
41637   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::MemoryRequirements2>::value,
41638                             "struct wrapper is not a standard layout!" );
41639   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::MemoryRequirements2>::value,
41640                             "MemoryRequirements2 is not nothrow_move_constructible!" );
41641 
41642   template <>
41643   struct CppType<StructureType, StructureType::eMemoryRequirements2>
41644   {
41645     using Type = MemoryRequirements2;
41646   };
41647   using MemoryRequirements2KHR = MemoryRequirements2;
41648 
41649   struct MemoryType
41650   {
41651     using NativeType = VkMemoryType;
41652 
41653 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryTypeVULKAN_HPP_NAMESPACE::MemoryType41654     VULKAN_HPP_CONSTEXPR MemoryType( VULKAN_HPP_NAMESPACE::MemoryPropertyFlags propertyFlags_ = {},
41655                                      uint32_t                                  heapIndex_     = {} ) VULKAN_HPP_NOEXCEPT
41656       : propertyFlags( propertyFlags_ )
41657       , heapIndex( heapIndex_ )
41658     {}
41659 
41660     VULKAN_HPP_CONSTEXPR MemoryType( MemoryType const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41661 
MemoryTypeVULKAN_HPP_NAMESPACE::MemoryType41662     MemoryType( VkMemoryType const & rhs ) VULKAN_HPP_NOEXCEPT
41663       : MemoryType( *reinterpret_cast<MemoryType const *>( &rhs ) )
41664     {}
41665 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
41666 
41667     MemoryType & operator=( MemoryType const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41668 
operator =VULKAN_HPP_NAMESPACE::MemoryType41669     MemoryType & operator=( VkMemoryType const & rhs ) VULKAN_HPP_NOEXCEPT
41670     {
41671       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryType const *>( &rhs );
41672       return *this;
41673     }
41674 
operator VkMemoryType const&VULKAN_HPP_NAMESPACE::MemoryType41675     explicit operator VkMemoryType const &() const VULKAN_HPP_NOEXCEPT
41676     {
41677       return *reinterpret_cast<const VkMemoryType *>( this );
41678     }
41679 
operator VkMemoryType&VULKAN_HPP_NAMESPACE::MemoryType41680     explicit operator VkMemoryType &() VULKAN_HPP_NOEXCEPT
41681     {
41682       return *reinterpret_cast<VkMemoryType *>( this );
41683     }
41684 
41685 #if 14 <= VULKAN_HPP_CPP_VERSION
41686     auto
41687 #else
41688     std::tuple<VULKAN_HPP_NAMESPACE::MemoryPropertyFlags const &, uint32_t const &>
41689 #endif
reflectVULKAN_HPP_NAMESPACE::MemoryType41690       reflect() const VULKAN_HPP_NOEXCEPT
41691     {
41692       return std::tie( propertyFlags, heapIndex );
41693     }
41694 
41695 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
41696     auto operator<=>( MemoryType const & ) const = default;
41697 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryType41698     bool operator==( MemoryType const & rhs ) const VULKAN_HPP_NOEXCEPT
41699     {
41700       return this->reflect() == rhs.reflect();
41701     }
41702 
operator !=VULKAN_HPP_NAMESPACE::MemoryType41703     bool operator!=( MemoryType const & rhs ) const VULKAN_HPP_NOEXCEPT
41704     {
41705       return this->reflect() != rhs.reflect();
41706     }
41707 #endif
41708 
41709   public:
41710     VULKAN_HPP_NAMESPACE::MemoryPropertyFlags propertyFlags = {};
41711     uint32_t                                  heapIndex     = {};
41712   };
41713   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryType ) == sizeof( VkMemoryType ),
41714                             "struct and wrapper have different size!" );
41715   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::MemoryType>::value,
41716                             "struct wrapper is not a standard layout!" );
41717   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::MemoryType>::value,
41718                             "MemoryType is not nothrow_move_constructible!" );
41719 
41720 #if defined( VK_USE_PLATFORM_WIN32_KHR )
41721   struct MemoryWin32HandlePropertiesKHR
41722   {
41723     using NativeType = VkMemoryWin32HandlePropertiesKHR;
41724 
41725     static const bool                                  allowDuplicate = false;
41726     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryWin32HandlePropertiesKHR;
41727 
41728 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryWin32HandlePropertiesKHRVULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR41729     VULKAN_HPP_CONSTEXPR MemoryWin32HandlePropertiesKHR( uint32_t memoryTypeBits_ = {} ) VULKAN_HPP_NOEXCEPT
41730       : memoryTypeBits( memoryTypeBits_ )
41731     {}
41732 
41733     VULKAN_HPP_CONSTEXPR
41734       MemoryWin32HandlePropertiesKHR( MemoryWin32HandlePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41735 
MemoryWin32HandlePropertiesKHRVULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR41736     MemoryWin32HandlePropertiesKHR( VkMemoryWin32HandlePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
41737       : MemoryWin32HandlePropertiesKHR( *reinterpret_cast<MemoryWin32HandlePropertiesKHR const *>( &rhs ) )
41738     {}
41739 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
41740 
41741     MemoryWin32HandlePropertiesKHR &
41742       operator=( MemoryWin32HandlePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41743 
operator =VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR41744     MemoryWin32HandlePropertiesKHR & operator=( VkMemoryWin32HandlePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
41745     {
41746       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR const *>( &rhs );
41747       return *this;
41748     }
41749 
operator VkMemoryWin32HandlePropertiesKHR const&VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR41750     explicit operator VkMemoryWin32HandlePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
41751     {
41752       return *reinterpret_cast<const VkMemoryWin32HandlePropertiesKHR *>( this );
41753     }
41754 
operator VkMemoryWin32HandlePropertiesKHR&VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR41755     explicit operator VkMemoryWin32HandlePropertiesKHR &() VULKAN_HPP_NOEXCEPT
41756     {
41757       return *reinterpret_cast<VkMemoryWin32HandlePropertiesKHR *>( this );
41758     }
41759 
41760 #  if 14 <= VULKAN_HPP_CPP_VERSION
41761     auto
41762 #  else
41763     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
41764 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR41765       reflect() const VULKAN_HPP_NOEXCEPT
41766     {
41767       return std::tie( sType, pNext, memoryTypeBits );
41768     }
41769 
41770 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
41771     auto operator<=>( MemoryWin32HandlePropertiesKHR const & ) const = default;
41772 #  else
operator ==VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR41773     bool operator==( MemoryWin32HandlePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
41774     {
41775       return this->reflect() == rhs.reflect();
41776     }
41777 
operator !=VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR41778     bool operator!=( MemoryWin32HandlePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
41779     {
41780       return this->reflect() != rhs.reflect();
41781     }
41782 #  endif
41783 
41784   public:
41785     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eMemoryWin32HandlePropertiesKHR;
41786     void *                              pNext          = {};
41787     uint32_t                            memoryTypeBits = {};
41788   };
41789   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR ) ==
41790                               sizeof( VkMemoryWin32HandlePropertiesKHR ),
41791                             "struct and wrapper have different size!" );
41792   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR>::value,
41793                             "struct wrapper is not a standard layout!" );
41794   VULKAN_HPP_STATIC_ASSERT(
41795     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR>::value,
41796     "MemoryWin32HandlePropertiesKHR is not nothrow_move_constructible!" );
41797 
41798   template <>
41799   struct CppType<StructureType, StructureType::eMemoryWin32HandlePropertiesKHR>
41800   {
41801     using Type = MemoryWin32HandlePropertiesKHR;
41802   };
41803 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
41804 
41805 #if defined( VK_USE_PLATFORM_FUCHSIA )
41806   struct MemoryZirconHandlePropertiesFUCHSIA
41807   {
41808     using NativeType = VkMemoryZirconHandlePropertiesFUCHSIA;
41809 
41810     static const bool                                  allowDuplicate = false;
41811     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
41812       StructureType::eMemoryZirconHandlePropertiesFUCHSIA;
41813 
41814 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryZirconHandlePropertiesFUCHSIAVULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA41815     VULKAN_HPP_CONSTEXPR MemoryZirconHandlePropertiesFUCHSIA( uint32_t memoryTypeBits_ = {} ) VULKAN_HPP_NOEXCEPT
41816       : memoryTypeBits( memoryTypeBits_ )
41817     {}
41818 
41819     VULKAN_HPP_CONSTEXPR MemoryZirconHandlePropertiesFUCHSIA( MemoryZirconHandlePropertiesFUCHSIA const & rhs )
41820       VULKAN_HPP_NOEXCEPT = default;
41821 
MemoryZirconHandlePropertiesFUCHSIAVULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA41822     MemoryZirconHandlePropertiesFUCHSIA( VkMemoryZirconHandlePropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
41823       : MemoryZirconHandlePropertiesFUCHSIA( *reinterpret_cast<MemoryZirconHandlePropertiesFUCHSIA const *>( &rhs ) )
41824     {}
41825 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
41826 
41827     MemoryZirconHandlePropertiesFUCHSIA &
41828       operator=( MemoryZirconHandlePropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41829 
41830     MemoryZirconHandlePropertiesFUCHSIA &
operator =VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA41831       operator=( VkMemoryZirconHandlePropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
41832     {
41833       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA const *>( &rhs );
41834       return *this;
41835     }
41836 
operator VkMemoryZirconHandlePropertiesFUCHSIA const&VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA41837     explicit operator VkMemoryZirconHandlePropertiesFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
41838     {
41839       return *reinterpret_cast<const VkMemoryZirconHandlePropertiesFUCHSIA *>( this );
41840     }
41841 
operator VkMemoryZirconHandlePropertiesFUCHSIA&VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA41842     explicit operator VkMemoryZirconHandlePropertiesFUCHSIA &() VULKAN_HPP_NOEXCEPT
41843     {
41844       return *reinterpret_cast<VkMemoryZirconHandlePropertiesFUCHSIA *>( this );
41845     }
41846 
41847 #  if 14 <= VULKAN_HPP_CPP_VERSION
41848     auto
41849 #  else
41850     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
41851 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA41852       reflect() const VULKAN_HPP_NOEXCEPT
41853     {
41854       return std::tie( sType, pNext, memoryTypeBits );
41855     }
41856 
41857 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
41858     auto operator<=>( MemoryZirconHandlePropertiesFUCHSIA const & ) const = default;
41859 #  else
operator ==VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA41860     bool operator==( MemoryZirconHandlePropertiesFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
41861     {
41862       return this->reflect() == rhs.reflect();
41863     }
41864 
operator !=VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA41865     bool operator!=( MemoryZirconHandlePropertiesFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
41866     {
41867       return this->reflect() != rhs.reflect();
41868     }
41869 #  endif
41870 
41871   public:
41872     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eMemoryZirconHandlePropertiesFUCHSIA;
41873     void *                              pNext          = {};
41874     uint32_t                            memoryTypeBits = {};
41875   };
41876   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA ) ==
41877                               sizeof( VkMemoryZirconHandlePropertiesFUCHSIA ),
41878                             "struct and wrapper have different size!" );
41879   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA>::value,
41880                             "struct wrapper is not a standard layout!" );
41881   VULKAN_HPP_STATIC_ASSERT(
41882     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA>::value,
41883     "MemoryZirconHandlePropertiesFUCHSIA is not nothrow_move_constructible!" );
41884 
41885   template <>
41886   struct CppType<StructureType, StructureType::eMemoryZirconHandlePropertiesFUCHSIA>
41887   {
41888     using Type = MemoryZirconHandlePropertiesFUCHSIA;
41889   };
41890 #endif /*VK_USE_PLATFORM_FUCHSIA*/
41891 
41892 #if defined( VK_USE_PLATFORM_METAL_EXT )
41893   struct MetalSurfaceCreateInfoEXT
41894   {
41895     using NativeType = VkMetalSurfaceCreateInfoEXT;
41896 
41897     static const bool                                  allowDuplicate = false;
41898     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMetalSurfaceCreateInfoEXT;
41899 
41900 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MetalSurfaceCreateInfoEXTVULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT41901     VULKAN_HPP_CONSTEXPR MetalSurfaceCreateInfoEXT( VULKAN_HPP_NAMESPACE::MetalSurfaceCreateFlagsEXT flags_ = {},
41902                                                     const CAMetalLayer * pLayer_ = {} ) VULKAN_HPP_NOEXCEPT
41903       : flags( flags_ )
41904       , pLayer( pLayer_ )
41905     {}
41906 
41907     VULKAN_HPP_CONSTEXPR
41908       MetalSurfaceCreateInfoEXT( MetalSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41909 
MetalSurfaceCreateInfoEXTVULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT41910     MetalSurfaceCreateInfoEXT( VkMetalSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
41911       : MetalSurfaceCreateInfoEXT( *reinterpret_cast<MetalSurfaceCreateInfoEXT const *>( &rhs ) )
41912     {}
41913 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
41914 
41915     MetalSurfaceCreateInfoEXT & operator=( MetalSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41916 
operator =VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT41917     MetalSurfaceCreateInfoEXT & operator=( VkMetalSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
41918     {
41919       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT const *>( &rhs );
41920       return *this;
41921     }
41922 
41923 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT41924     VULKAN_HPP_CONSTEXPR_14 MetalSurfaceCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
41925     {
41926       pNext = pNext_;
41927       return *this;
41928     }
41929 
41930     VULKAN_HPP_CONSTEXPR_14 MetalSurfaceCreateInfoEXT &
setFlagsVULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT41931                             setFlags( VULKAN_HPP_NAMESPACE::MetalSurfaceCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
41932     {
41933       flags = flags_;
41934       return *this;
41935     }
41936 
setPLayerVULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT41937     VULKAN_HPP_CONSTEXPR_14 MetalSurfaceCreateInfoEXT & setPLayer( const CAMetalLayer * pLayer_ ) VULKAN_HPP_NOEXCEPT
41938     {
41939       pLayer = pLayer_;
41940       return *this;
41941     }
41942 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
41943 
operator VkMetalSurfaceCreateInfoEXT const&VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT41944     explicit operator VkMetalSurfaceCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
41945     {
41946       return *reinterpret_cast<const VkMetalSurfaceCreateInfoEXT *>( this );
41947     }
41948 
operator VkMetalSurfaceCreateInfoEXT&VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT41949     explicit operator VkMetalSurfaceCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
41950     {
41951       return *reinterpret_cast<VkMetalSurfaceCreateInfoEXT *>( this );
41952     }
41953 
41954 #  if 14 <= VULKAN_HPP_CPP_VERSION
41955     auto
41956 #  else
41957     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
41958                const void * const &,
41959                VULKAN_HPP_NAMESPACE::MetalSurfaceCreateFlagsEXT const &,
41960                const CAMetalLayer * const &>
41961 #  endif
reflectVULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT41962       reflect() const VULKAN_HPP_NOEXCEPT
41963     {
41964       return std::tie( sType, pNext, flags, pLayer );
41965     }
41966 
41967 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
41968     auto operator<=>( MetalSurfaceCreateInfoEXT const & ) const = default;
41969 #  else
operator ==VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT41970     bool operator==( MetalSurfaceCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
41971     {
41972       return this->reflect() == rhs.reflect();
41973     }
41974 
operator !=VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT41975     bool operator!=( MetalSurfaceCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
41976     {
41977       return this->reflect() != rhs.reflect();
41978     }
41979 #  endif
41980 
41981   public:
41982     VULKAN_HPP_NAMESPACE::StructureType              sType  = StructureType::eMetalSurfaceCreateInfoEXT;
41983     const void *                                     pNext  = {};
41984     VULKAN_HPP_NAMESPACE::MetalSurfaceCreateFlagsEXT flags  = {};
41985     const CAMetalLayer *                             pLayer = {};
41986   };
41987   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT ) ==
41988                               sizeof( VkMetalSurfaceCreateInfoEXT ),
41989                             "struct and wrapper have different size!" );
41990   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT>::value,
41991                             "struct wrapper is not a standard layout!" );
41992   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT>::value,
41993                             "MetalSurfaceCreateInfoEXT is not nothrow_move_constructible!" );
41994 
41995   template <>
41996   struct CppType<StructureType, StructureType::eMetalSurfaceCreateInfoEXT>
41997   {
41998     using Type = MetalSurfaceCreateInfoEXT;
41999   };
42000 #endif /*VK_USE_PLATFORM_METAL_EXT*/
42001 
42002   struct MultiDrawIndexedInfoEXT
42003   {
42004     using NativeType = VkMultiDrawIndexedInfoEXT;
42005 
42006 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MultiDrawIndexedInfoEXTVULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT42007     VULKAN_HPP_CONSTEXPR MultiDrawIndexedInfoEXT( uint32_t firstIndex_   = {},
42008                                                   uint32_t indexCount_   = {},
42009                                                   int32_t  vertexOffset_ = {} ) VULKAN_HPP_NOEXCEPT
42010       : firstIndex( firstIndex_ )
42011       , indexCount( indexCount_ )
42012       , vertexOffset( vertexOffset_ )
42013     {}
42014 
42015     VULKAN_HPP_CONSTEXPR MultiDrawIndexedInfoEXT( MultiDrawIndexedInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42016 
MultiDrawIndexedInfoEXTVULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT42017     MultiDrawIndexedInfoEXT( VkMultiDrawIndexedInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
42018       : MultiDrawIndexedInfoEXT( *reinterpret_cast<MultiDrawIndexedInfoEXT const *>( &rhs ) )
42019     {}
42020 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42021 
42022     MultiDrawIndexedInfoEXT & operator=( MultiDrawIndexedInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42023 
operator =VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT42024     MultiDrawIndexedInfoEXT & operator=( VkMultiDrawIndexedInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
42025     {
42026       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT const *>( &rhs );
42027       return *this;
42028     }
42029 
42030 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setFirstIndexVULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT42031     VULKAN_HPP_CONSTEXPR_14 MultiDrawIndexedInfoEXT & setFirstIndex( uint32_t firstIndex_ ) VULKAN_HPP_NOEXCEPT
42032     {
42033       firstIndex = firstIndex_;
42034       return *this;
42035     }
42036 
setIndexCountVULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT42037     VULKAN_HPP_CONSTEXPR_14 MultiDrawIndexedInfoEXT & setIndexCount( uint32_t indexCount_ ) VULKAN_HPP_NOEXCEPT
42038     {
42039       indexCount = indexCount_;
42040       return *this;
42041     }
42042 
setVertexOffsetVULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT42043     VULKAN_HPP_CONSTEXPR_14 MultiDrawIndexedInfoEXT & setVertexOffset( int32_t vertexOffset_ ) VULKAN_HPP_NOEXCEPT
42044     {
42045       vertexOffset = vertexOffset_;
42046       return *this;
42047     }
42048 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
42049 
operator VkMultiDrawIndexedInfoEXT const&VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT42050     explicit operator VkMultiDrawIndexedInfoEXT const &() const VULKAN_HPP_NOEXCEPT
42051     {
42052       return *reinterpret_cast<const VkMultiDrawIndexedInfoEXT *>( this );
42053     }
42054 
operator VkMultiDrawIndexedInfoEXT&VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT42055     explicit operator VkMultiDrawIndexedInfoEXT &() VULKAN_HPP_NOEXCEPT
42056     {
42057       return *reinterpret_cast<VkMultiDrawIndexedInfoEXT *>( this );
42058     }
42059 
42060 #if 14 <= VULKAN_HPP_CPP_VERSION
42061     auto
42062 #else
42063     std::tuple<uint32_t const &, uint32_t const &, int32_t const &>
42064 #endif
reflectVULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT42065       reflect() const VULKAN_HPP_NOEXCEPT
42066     {
42067       return std::tie( firstIndex, indexCount, vertexOffset );
42068     }
42069 
42070 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
42071     auto operator<=>( MultiDrawIndexedInfoEXT const & ) const = default;
42072 #else
operator ==VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT42073     bool operator==( MultiDrawIndexedInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
42074     {
42075       return this->reflect() == rhs.reflect();
42076     }
42077 
operator !=VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT42078     bool operator!=( MultiDrawIndexedInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
42079     {
42080       return this->reflect() != rhs.reflect();
42081     }
42082 #endif
42083 
42084   public:
42085     uint32_t firstIndex   = {};
42086     uint32_t indexCount   = {};
42087     int32_t  vertexOffset = {};
42088   };
42089   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT ) ==
42090                               sizeof( VkMultiDrawIndexedInfoEXT ),
42091                             "struct and wrapper have different size!" );
42092   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT>::value,
42093                             "struct wrapper is not a standard layout!" );
42094   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT>::value,
42095                             "MultiDrawIndexedInfoEXT is not nothrow_move_constructible!" );
42096 
42097   struct MultiDrawInfoEXT
42098   {
42099     using NativeType = VkMultiDrawInfoEXT;
42100 
42101 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MultiDrawInfoEXTVULKAN_HPP_NAMESPACE::MultiDrawInfoEXT42102     VULKAN_HPP_CONSTEXPR MultiDrawInfoEXT( uint32_t firstVertex_ = {}, uint32_t vertexCount_ = {} ) VULKAN_HPP_NOEXCEPT
42103       : firstVertex( firstVertex_ )
42104       , vertexCount( vertexCount_ )
42105     {}
42106 
42107     VULKAN_HPP_CONSTEXPR MultiDrawInfoEXT( MultiDrawInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42108 
MultiDrawInfoEXTVULKAN_HPP_NAMESPACE::MultiDrawInfoEXT42109     MultiDrawInfoEXT( VkMultiDrawInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
42110       : MultiDrawInfoEXT( *reinterpret_cast<MultiDrawInfoEXT const *>( &rhs ) )
42111     {}
42112 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42113 
42114     MultiDrawInfoEXT & operator=( MultiDrawInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42115 
operator =VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT42116     MultiDrawInfoEXT & operator=( VkMultiDrawInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
42117     {
42118       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT const *>( &rhs );
42119       return *this;
42120     }
42121 
42122 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setFirstVertexVULKAN_HPP_NAMESPACE::MultiDrawInfoEXT42123     VULKAN_HPP_CONSTEXPR_14 MultiDrawInfoEXT & setFirstVertex( uint32_t firstVertex_ ) VULKAN_HPP_NOEXCEPT
42124     {
42125       firstVertex = firstVertex_;
42126       return *this;
42127     }
42128 
setVertexCountVULKAN_HPP_NAMESPACE::MultiDrawInfoEXT42129     VULKAN_HPP_CONSTEXPR_14 MultiDrawInfoEXT & setVertexCount( uint32_t vertexCount_ ) VULKAN_HPP_NOEXCEPT
42130     {
42131       vertexCount = vertexCount_;
42132       return *this;
42133     }
42134 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
42135 
operator VkMultiDrawInfoEXT const&VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT42136     explicit operator VkMultiDrawInfoEXT const &() const VULKAN_HPP_NOEXCEPT
42137     {
42138       return *reinterpret_cast<const VkMultiDrawInfoEXT *>( this );
42139     }
42140 
operator VkMultiDrawInfoEXT&VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT42141     explicit operator VkMultiDrawInfoEXT &() VULKAN_HPP_NOEXCEPT
42142     {
42143       return *reinterpret_cast<VkMultiDrawInfoEXT *>( this );
42144     }
42145 
42146 #if 14 <= VULKAN_HPP_CPP_VERSION
42147     auto
42148 #else
42149     std::tuple<uint32_t const &, uint32_t const &>
42150 #endif
reflectVULKAN_HPP_NAMESPACE::MultiDrawInfoEXT42151       reflect() const VULKAN_HPP_NOEXCEPT
42152     {
42153       return std::tie( firstVertex, vertexCount );
42154     }
42155 
42156 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
42157     auto operator<=>( MultiDrawInfoEXT const & ) const = default;
42158 #else
operator ==VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT42159     bool operator==( MultiDrawInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
42160     {
42161       return this->reflect() == rhs.reflect();
42162     }
42163 
operator !=VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT42164     bool operator!=( MultiDrawInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
42165     {
42166       return this->reflect() != rhs.reflect();
42167     }
42168 #endif
42169 
42170   public:
42171     uint32_t firstVertex = {};
42172     uint32_t vertexCount = {};
42173   };
42174   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT ) == sizeof( VkMultiDrawInfoEXT ),
42175                             "struct and wrapper have different size!" );
42176   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT>::value,
42177                             "struct wrapper is not a standard layout!" );
42178   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT>::value,
42179                             "MultiDrawInfoEXT is not nothrow_move_constructible!" );
42180 
42181   struct MultisamplePropertiesEXT
42182   {
42183     using NativeType = VkMultisamplePropertiesEXT;
42184 
42185     static const bool                                  allowDuplicate = false;
42186     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMultisamplePropertiesEXT;
42187 
42188 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
42189     VULKAN_HPP_CONSTEXPR
MultisamplePropertiesEXTVULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT42190       MultisamplePropertiesEXT( VULKAN_HPP_NAMESPACE::Extent2D maxSampleLocationGridSize_ = {} ) VULKAN_HPP_NOEXCEPT
42191       : maxSampleLocationGridSize( maxSampleLocationGridSize_ )
42192     {}
42193 
42194     VULKAN_HPP_CONSTEXPR MultisamplePropertiesEXT( MultisamplePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42195 
MultisamplePropertiesEXTVULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT42196     MultisamplePropertiesEXT( VkMultisamplePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
42197       : MultisamplePropertiesEXT( *reinterpret_cast<MultisamplePropertiesEXT const *>( &rhs ) )
42198     {}
42199 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42200 
42201     MultisamplePropertiesEXT & operator=( MultisamplePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42202 
operator =VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT42203     MultisamplePropertiesEXT & operator=( VkMultisamplePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
42204     {
42205       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT const *>( &rhs );
42206       return *this;
42207     }
42208 
operator VkMultisamplePropertiesEXT const&VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT42209     explicit operator VkMultisamplePropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
42210     {
42211       return *reinterpret_cast<const VkMultisamplePropertiesEXT *>( this );
42212     }
42213 
operator VkMultisamplePropertiesEXT&VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT42214     explicit operator VkMultisamplePropertiesEXT &() VULKAN_HPP_NOEXCEPT
42215     {
42216       return *reinterpret_cast<VkMultisamplePropertiesEXT *>( this );
42217     }
42218 
42219 #if 14 <= VULKAN_HPP_CPP_VERSION
42220     auto
42221 #else
42222     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Extent2D const &>
42223 #endif
reflectVULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT42224       reflect() const VULKAN_HPP_NOEXCEPT
42225     {
42226       return std::tie( sType, pNext, maxSampleLocationGridSize );
42227     }
42228 
42229 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
42230     auto operator<=>( MultisamplePropertiesEXT const & ) const = default;
42231 #else
operator ==VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT42232     bool operator==( MultisamplePropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
42233     {
42234       return this->reflect() == rhs.reflect();
42235     }
42236 
operator !=VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT42237     bool operator!=( MultisamplePropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
42238     {
42239       return this->reflect() != rhs.reflect();
42240     }
42241 #endif
42242 
42243   public:
42244     VULKAN_HPP_NAMESPACE::StructureType sType                     = StructureType::eMultisamplePropertiesEXT;
42245     void *                              pNext                     = {};
42246     VULKAN_HPP_NAMESPACE::Extent2D      maxSampleLocationGridSize = {};
42247   };
42248   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT ) ==
42249                               sizeof( VkMultisamplePropertiesEXT ),
42250                             "struct and wrapper have different size!" );
42251   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT>::value,
42252                             "struct wrapper is not a standard layout!" );
42253   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT>::value,
42254                             "MultisamplePropertiesEXT is not nothrow_move_constructible!" );
42255 
42256   template <>
42257   struct CppType<StructureType, StructureType::eMultisamplePropertiesEXT>
42258   {
42259     using Type = MultisamplePropertiesEXT;
42260   };
42261 
42262   struct MultiviewPerViewAttributesInfoNVX
42263   {
42264     using NativeType = VkMultiviewPerViewAttributesInfoNVX;
42265 
42266     static const bool                                  allowDuplicate = false;
42267     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
42268       StructureType::eMultiviewPerViewAttributesInfoNVX;
42269 
42270 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MultiviewPerViewAttributesInfoNVXVULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX42271     VULKAN_HPP_CONSTEXPR MultiviewPerViewAttributesInfoNVX(
42272       VULKAN_HPP_NAMESPACE::Bool32 perViewAttributes_              = {},
42273       VULKAN_HPP_NAMESPACE::Bool32 perViewAttributesPositionXOnly_ = {} ) VULKAN_HPP_NOEXCEPT
42274       : perViewAttributes( perViewAttributes_ )
42275       , perViewAttributesPositionXOnly( perViewAttributesPositionXOnly_ )
42276     {}
42277 
42278     VULKAN_HPP_CONSTEXPR
42279       MultiviewPerViewAttributesInfoNVX( MultiviewPerViewAttributesInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42280 
MultiviewPerViewAttributesInfoNVXVULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX42281     MultiviewPerViewAttributesInfoNVX( VkMultiviewPerViewAttributesInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT
42282       : MultiviewPerViewAttributesInfoNVX( *reinterpret_cast<MultiviewPerViewAttributesInfoNVX const *>( &rhs ) )
42283     {}
42284 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42285 
42286     MultiviewPerViewAttributesInfoNVX &
42287       operator=( MultiviewPerViewAttributesInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42288 
operator =VULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX42289     MultiviewPerViewAttributesInfoNVX & operator=( VkMultiviewPerViewAttributesInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT
42290     {
42291       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX const *>( &rhs );
42292       return *this;
42293     }
42294 
42295 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX42296     VULKAN_HPP_CONSTEXPR_14 MultiviewPerViewAttributesInfoNVX & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
42297     {
42298       pNext = pNext_;
42299       return *this;
42300     }
42301 
42302     VULKAN_HPP_CONSTEXPR_14 MultiviewPerViewAttributesInfoNVX &
setPerViewAttributesVULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX42303                             setPerViewAttributes( VULKAN_HPP_NAMESPACE::Bool32 perViewAttributes_ ) VULKAN_HPP_NOEXCEPT
42304     {
42305       perViewAttributes = perViewAttributes_;
42306       return *this;
42307     }
42308 
setPerViewAttributesPositionXOnlyVULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX42309     VULKAN_HPP_CONSTEXPR_14 MultiviewPerViewAttributesInfoNVX & setPerViewAttributesPositionXOnly(
42310       VULKAN_HPP_NAMESPACE::Bool32 perViewAttributesPositionXOnly_ ) VULKAN_HPP_NOEXCEPT
42311     {
42312       perViewAttributesPositionXOnly = perViewAttributesPositionXOnly_;
42313       return *this;
42314     }
42315 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
42316 
operator VkMultiviewPerViewAttributesInfoNVX const&VULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX42317     explicit operator VkMultiviewPerViewAttributesInfoNVX const &() const VULKAN_HPP_NOEXCEPT
42318     {
42319       return *reinterpret_cast<const VkMultiviewPerViewAttributesInfoNVX *>( this );
42320     }
42321 
operator VkMultiviewPerViewAttributesInfoNVX&VULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX42322     explicit operator VkMultiviewPerViewAttributesInfoNVX &() VULKAN_HPP_NOEXCEPT
42323     {
42324       return *reinterpret_cast<VkMultiviewPerViewAttributesInfoNVX *>( this );
42325     }
42326 
42327 #if 14 <= VULKAN_HPP_CPP_VERSION
42328     auto
42329 #else
42330     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
42331                const void * const &,
42332                VULKAN_HPP_NAMESPACE::Bool32 const &,
42333                VULKAN_HPP_NAMESPACE::Bool32 const &>
42334 #endif
reflectVULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX42335       reflect() const VULKAN_HPP_NOEXCEPT
42336     {
42337       return std::tie( sType, pNext, perViewAttributes, perViewAttributesPositionXOnly );
42338     }
42339 
42340 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
42341     auto operator<=>( MultiviewPerViewAttributesInfoNVX const & ) const = default;
42342 #else
operator ==VULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX42343     bool operator==( MultiviewPerViewAttributesInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
42344     {
42345       return this->reflect() == rhs.reflect();
42346     }
42347 
operator !=VULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX42348     bool operator!=( MultiviewPerViewAttributesInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
42349     {
42350       return this->reflect() != rhs.reflect();
42351     }
42352 #endif
42353 
42354   public:
42355     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::eMultiviewPerViewAttributesInfoNVX;
42356     const void *                        pNext             = {};
42357     VULKAN_HPP_NAMESPACE::Bool32        perViewAttributes = {};
42358     VULKAN_HPP_NAMESPACE::Bool32        perViewAttributesPositionXOnly = {};
42359   };
42360   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX ) ==
42361                               sizeof( VkMultiviewPerViewAttributesInfoNVX ),
42362                             "struct and wrapper have different size!" );
42363   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX>::value,
42364                             "struct wrapper is not a standard layout!" );
42365   VULKAN_HPP_STATIC_ASSERT(
42366     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX>::value,
42367     "MultiviewPerViewAttributesInfoNVX is not nothrow_move_constructible!" );
42368 
42369   template <>
42370   struct CppType<StructureType, StructureType::eMultiviewPerViewAttributesInfoNVX>
42371   {
42372     using Type = MultiviewPerViewAttributesInfoNVX;
42373   };
42374 
42375   struct MutableDescriptorTypeListVALVE
42376   {
42377     using NativeType = VkMutableDescriptorTypeListVALVE;
42378 
42379 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MutableDescriptorTypeListVALVEVULKAN_HPP_NAMESPACE::MutableDescriptorTypeListVALVE42380     VULKAN_HPP_CONSTEXPR MutableDescriptorTypeListVALVE(
42381       uint32_t                                     descriptorTypeCount_ = {},
42382       const VULKAN_HPP_NAMESPACE::DescriptorType * pDescriptorTypes_    = {} ) VULKAN_HPP_NOEXCEPT
42383       : descriptorTypeCount( descriptorTypeCount_ )
42384       , pDescriptorTypes( pDescriptorTypes_ )
42385     {}
42386 
42387     VULKAN_HPP_CONSTEXPR
42388       MutableDescriptorTypeListVALVE( MutableDescriptorTypeListVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42389 
MutableDescriptorTypeListVALVEVULKAN_HPP_NAMESPACE::MutableDescriptorTypeListVALVE42390     MutableDescriptorTypeListVALVE( VkMutableDescriptorTypeListVALVE const & rhs ) VULKAN_HPP_NOEXCEPT
42391       : MutableDescriptorTypeListVALVE( *reinterpret_cast<MutableDescriptorTypeListVALVE const *>( &rhs ) )
42392     {}
42393 
42394 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
MutableDescriptorTypeListVALVEVULKAN_HPP_NAMESPACE::MutableDescriptorTypeListVALVE42395     MutableDescriptorTypeListVALVE(
42396       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorType> const &
42397         descriptorTypes_ )
42398       : descriptorTypeCount( static_cast<uint32_t>( descriptorTypes_.size() ) )
42399       , pDescriptorTypes( descriptorTypes_.data() )
42400     {}
42401 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
42402 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42403 
42404     MutableDescriptorTypeListVALVE &
42405       operator=( MutableDescriptorTypeListVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42406 
operator =VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListVALVE42407     MutableDescriptorTypeListVALVE & operator=( VkMutableDescriptorTypeListVALVE const & rhs ) VULKAN_HPP_NOEXCEPT
42408     {
42409       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListVALVE const *>( &rhs );
42410       return *this;
42411     }
42412 
42413 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
42414     VULKAN_HPP_CONSTEXPR_14 MutableDescriptorTypeListVALVE &
setDescriptorTypeCountVULKAN_HPP_NAMESPACE::MutableDescriptorTypeListVALVE42415                             setDescriptorTypeCount( uint32_t descriptorTypeCount_ ) VULKAN_HPP_NOEXCEPT
42416     {
42417       descriptorTypeCount = descriptorTypeCount_;
42418       return *this;
42419     }
42420 
42421     VULKAN_HPP_CONSTEXPR_14 MutableDescriptorTypeListVALVE &
setPDescriptorTypesVULKAN_HPP_NAMESPACE::MutableDescriptorTypeListVALVE42422       setPDescriptorTypes( const VULKAN_HPP_NAMESPACE::DescriptorType * pDescriptorTypes_ ) VULKAN_HPP_NOEXCEPT
42423     {
42424       pDescriptorTypes = pDescriptorTypes_;
42425       return *this;
42426     }
42427 
42428 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDescriptorTypesVULKAN_HPP_NAMESPACE::MutableDescriptorTypeListVALVE42429     MutableDescriptorTypeListVALVE & setDescriptorTypes(
42430       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorType> const &
42431         descriptorTypes_ ) VULKAN_HPP_NOEXCEPT
42432     {
42433       descriptorTypeCount = static_cast<uint32_t>( descriptorTypes_.size() );
42434       pDescriptorTypes    = descriptorTypes_.data();
42435       return *this;
42436     }
42437 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
42438 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
42439 
operator VkMutableDescriptorTypeListVALVE const&VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListVALVE42440     explicit operator VkMutableDescriptorTypeListVALVE const &() const VULKAN_HPP_NOEXCEPT
42441     {
42442       return *reinterpret_cast<const VkMutableDescriptorTypeListVALVE *>( this );
42443     }
42444 
operator VkMutableDescriptorTypeListVALVE&VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListVALVE42445     explicit operator VkMutableDescriptorTypeListVALVE &() VULKAN_HPP_NOEXCEPT
42446     {
42447       return *reinterpret_cast<VkMutableDescriptorTypeListVALVE *>( this );
42448     }
42449 
42450 #if 14 <= VULKAN_HPP_CPP_VERSION
42451     auto
42452 #else
42453     std::tuple<uint32_t const &, const VULKAN_HPP_NAMESPACE::DescriptorType * const &>
42454 #endif
reflectVULKAN_HPP_NAMESPACE::MutableDescriptorTypeListVALVE42455       reflect() const VULKAN_HPP_NOEXCEPT
42456     {
42457       return std::tie( descriptorTypeCount, pDescriptorTypes );
42458     }
42459 
42460 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
42461     auto operator<=>( MutableDescriptorTypeListVALVE const & ) const = default;
42462 #else
operator ==VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListVALVE42463     bool operator==( MutableDescriptorTypeListVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT
42464     {
42465       return this->reflect() == rhs.reflect();
42466     }
42467 
operator !=VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListVALVE42468     bool operator!=( MutableDescriptorTypeListVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT
42469     {
42470       return this->reflect() != rhs.reflect();
42471     }
42472 #endif
42473 
42474   public:
42475     uint32_t                                     descriptorTypeCount = {};
42476     const VULKAN_HPP_NAMESPACE::DescriptorType * pDescriptorTypes    = {};
42477   };
42478   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListVALVE ) ==
42479                               sizeof( VkMutableDescriptorTypeListVALVE ),
42480                             "struct and wrapper have different size!" );
42481   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListVALVE>::value,
42482                             "struct wrapper is not a standard layout!" );
42483   VULKAN_HPP_STATIC_ASSERT(
42484     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListVALVE>::value,
42485     "MutableDescriptorTypeListVALVE is not nothrow_move_constructible!" );
42486 
42487   struct MutableDescriptorTypeCreateInfoVALVE
42488   {
42489     using NativeType = VkMutableDescriptorTypeCreateInfoVALVE;
42490 
42491     static const bool                                  allowDuplicate = false;
42492     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
42493       StructureType::eMutableDescriptorTypeCreateInfoVALVE;
42494 
42495 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MutableDescriptorTypeCreateInfoVALVEVULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoVALVE42496     VULKAN_HPP_CONSTEXPR MutableDescriptorTypeCreateInfoVALVE(
42497       uint32_t                                                     mutableDescriptorTypeListCount_ = {},
42498       const VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListVALVE * pMutableDescriptorTypeLists_    = {} )
42499       VULKAN_HPP_NOEXCEPT
42500       : mutableDescriptorTypeListCount( mutableDescriptorTypeListCount_ )
42501       , pMutableDescriptorTypeLists( pMutableDescriptorTypeLists_ )
42502     {}
42503 
42504     VULKAN_HPP_CONSTEXPR MutableDescriptorTypeCreateInfoVALVE( MutableDescriptorTypeCreateInfoVALVE const & rhs )
42505       VULKAN_HPP_NOEXCEPT = default;
42506 
MutableDescriptorTypeCreateInfoVALVEVULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoVALVE42507     MutableDescriptorTypeCreateInfoVALVE( VkMutableDescriptorTypeCreateInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT
42508       : MutableDescriptorTypeCreateInfoVALVE( *reinterpret_cast<MutableDescriptorTypeCreateInfoVALVE const *>( &rhs ) )
42509     {}
42510 
42511 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
MutableDescriptorTypeCreateInfoVALVEVULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoVALVE42512     MutableDescriptorTypeCreateInfoVALVE(
42513       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListVALVE> const &
42514         mutableDescriptorTypeLists_ )
42515       : mutableDescriptorTypeListCount( static_cast<uint32_t>( mutableDescriptorTypeLists_.size() ) )
42516       , pMutableDescriptorTypeLists( mutableDescriptorTypeLists_.data() )
42517     {}
42518 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
42519 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42520 
42521     MutableDescriptorTypeCreateInfoVALVE &
42522       operator=( MutableDescriptorTypeCreateInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42523 
42524     MutableDescriptorTypeCreateInfoVALVE &
operator =VULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoVALVE42525       operator=( VkMutableDescriptorTypeCreateInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT
42526     {
42527       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoVALVE const *>( &rhs );
42528       return *this;
42529     }
42530 
42531 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoVALVE42532     VULKAN_HPP_CONSTEXPR_14 MutableDescriptorTypeCreateInfoVALVE & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
42533     {
42534       pNext = pNext_;
42535       return *this;
42536     }
42537 
42538     VULKAN_HPP_CONSTEXPR_14 MutableDescriptorTypeCreateInfoVALVE &
setMutableDescriptorTypeListCountVULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoVALVE42539       setMutableDescriptorTypeListCount( uint32_t mutableDescriptorTypeListCount_ ) VULKAN_HPP_NOEXCEPT
42540     {
42541       mutableDescriptorTypeListCount = mutableDescriptorTypeListCount_;
42542       return *this;
42543     }
42544 
setPMutableDescriptorTypeListsVULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoVALVE42545     VULKAN_HPP_CONSTEXPR_14 MutableDescriptorTypeCreateInfoVALVE & setPMutableDescriptorTypeLists(
42546       const VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListVALVE * pMutableDescriptorTypeLists_ ) VULKAN_HPP_NOEXCEPT
42547     {
42548       pMutableDescriptorTypeLists = pMutableDescriptorTypeLists_;
42549       return *this;
42550     }
42551 
42552 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setMutableDescriptorTypeListsVULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoVALVE42553     MutableDescriptorTypeCreateInfoVALVE & setMutableDescriptorTypeLists(
42554       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListVALVE> const &
42555         mutableDescriptorTypeLists_ ) VULKAN_HPP_NOEXCEPT
42556     {
42557       mutableDescriptorTypeListCount = static_cast<uint32_t>( mutableDescriptorTypeLists_.size() );
42558       pMutableDescriptorTypeLists    = mutableDescriptorTypeLists_.data();
42559       return *this;
42560     }
42561 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
42562 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
42563 
operator VkMutableDescriptorTypeCreateInfoVALVE const&VULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoVALVE42564     explicit operator VkMutableDescriptorTypeCreateInfoVALVE const &() const VULKAN_HPP_NOEXCEPT
42565     {
42566       return *reinterpret_cast<const VkMutableDescriptorTypeCreateInfoVALVE *>( this );
42567     }
42568 
operator VkMutableDescriptorTypeCreateInfoVALVE&VULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoVALVE42569     explicit operator VkMutableDescriptorTypeCreateInfoVALVE &() VULKAN_HPP_NOEXCEPT
42570     {
42571       return *reinterpret_cast<VkMutableDescriptorTypeCreateInfoVALVE *>( this );
42572     }
42573 
42574 #if 14 <= VULKAN_HPP_CPP_VERSION
42575     auto
42576 #else
42577     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
42578                const void * const &,
42579                uint32_t const &,
42580                const VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListVALVE * const &>
42581 #endif
reflectVULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoVALVE42582       reflect() const VULKAN_HPP_NOEXCEPT
42583     {
42584       return std::tie( sType, pNext, mutableDescriptorTypeListCount, pMutableDescriptorTypeLists );
42585     }
42586 
42587 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
42588     auto operator<=>( MutableDescriptorTypeCreateInfoVALVE const & ) const = default;
42589 #else
operator ==VULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoVALVE42590     bool operator==( MutableDescriptorTypeCreateInfoVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT
42591     {
42592       return this->reflect() == rhs.reflect();
42593     }
42594 
operator !=VULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoVALVE42595     bool operator!=( MutableDescriptorTypeCreateInfoVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT
42596     {
42597       return this->reflect() != rhs.reflect();
42598     }
42599 #endif
42600 
42601   public:
42602     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMutableDescriptorTypeCreateInfoVALVE;
42603     const void *                        pNext = {};
42604     uint32_t                            mutableDescriptorTypeListCount                       = {};
42605     const VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListVALVE * pMutableDescriptorTypeLists = {};
42606   };
42607   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoVALVE ) ==
42608                               sizeof( VkMutableDescriptorTypeCreateInfoVALVE ),
42609                             "struct and wrapper have different size!" );
42610   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoVALVE>::value,
42611                             "struct wrapper is not a standard layout!" );
42612   VULKAN_HPP_STATIC_ASSERT(
42613     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoVALVE>::value,
42614     "MutableDescriptorTypeCreateInfoVALVE is not nothrow_move_constructible!" );
42615 
42616   template <>
42617   struct CppType<StructureType, StructureType::eMutableDescriptorTypeCreateInfoVALVE>
42618   {
42619     using Type = MutableDescriptorTypeCreateInfoVALVE;
42620   };
42621 
42622   struct PastPresentationTimingGOOGLE
42623   {
42624     using NativeType = VkPastPresentationTimingGOOGLE;
42625 
42626 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PastPresentationTimingGOOGLEVULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE42627     VULKAN_HPP_CONSTEXPR PastPresentationTimingGOOGLE( uint32_t presentID_           = {},
42628                                                        uint64_t desiredPresentTime_  = {},
42629                                                        uint64_t actualPresentTime_   = {},
42630                                                        uint64_t earliestPresentTime_ = {},
42631                                                        uint64_t presentMargin_       = {} ) VULKAN_HPP_NOEXCEPT
42632       : presentID( presentID_ )
42633       , desiredPresentTime( desiredPresentTime_ )
42634       , actualPresentTime( actualPresentTime_ )
42635       , earliestPresentTime( earliestPresentTime_ )
42636       , presentMargin( presentMargin_ )
42637     {}
42638 
42639     VULKAN_HPP_CONSTEXPR
42640       PastPresentationTimingGOOGLE( PastPresentationTimingGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42641 
PastPresentationTimingGOOGLEVULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE42642     PastPresentationTimingGOOGLE( VkPastPresentationTimingGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT
42643       : PastPresentationTimingGOOGLE( *reinterpret_cast<PastPresentationTimingGOOGLE const *>( &rhs ) )
42644     {}
42645 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42646 
42647     PastPresentationTimingGOOGLE & operator=( PastPresentationTimingGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42648 
operator =VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE42649     PastPresentationTimingGOOGLE & operator=( VkPastPresentationTimingGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT
42650     {
42651       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE const *>( &rhs );
42652       return *this;
42653     }
42654 
operator VkPastPresentationTimingGOOGLE const&VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE42655     explicit operator VkPastPresentationTimingGOOGLE const &() const VULKAN_HPP_NOEXCEPT
42656     {
42657       return *reinterpret_cast<const VkPastPresentationTimingGOOGLE *>( this );
42658     }
42659 
operator VkPastPresentationTimingGOOGLE&VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE42660     explicit operator VkPastPresentationTimingGOOGLE &() VULKAN_HPP_NOEXCEPT
42661     {
42662       return *reinterpret_cast<VkPastPresentationTimingGOOGLE *>( this );
42663     }
42664 
42665 #if 14 <= VULKAN_HPP_CPP_VERSION
42666     auto
42667 #else
42668     std::tuple<uint32_t const &, uint64_t const &, uint64_t const &, uint64_t const &, uint64_t const &>
42669 #endif
reflectVULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE42670       reflect() const VULKAN_HPP_NOEXCEPT
42671     {
42672       return std::tie( presentID, desiredPresentTime, actualPresentTime, earliestPresentTime, presentMargin );
42673     }
42674 
42675 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
42676     auto operator<=>( PastPresentationTimingGOOGLE const & ) const = default;
42677 #else
operator ==VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE42678     bool operator==( PastPresentationTimingGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT
42679     {
42680       return this->reflect() == rhs.reflect();
42681     }
42682 
operator !=VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE42683     bool operator!=( PastPresentationTimingGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT
42684     {
42685       return this->reflect() != rhs.reflect();
42686     }
42687 #endif
42688 
42689   public:
42690     uint32_t presentID           = {};
42691     uint64_t desiredPresentTime  = {};
42692     uint64_t actualPresentTime   = {};
42693     uint64_t earliestPresentTime = {};
42694     uint64_t presentMargin       = {};
42695   };
42696   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE ) ==
42697                               sizeof( VkPastPresentationTimingGOOGLE ),
42698                             "struct and wrapper have different size!" );
42699   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE>::value,
42700                             "struct wrapper is not a standard layout!" );
42701   VULKAN_HPP_STATIC_ASSERT(
42702     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE>::value,
42703     "PastPresentationTimingGOOGLE is not nothrow_move_constructible!" );
42704 
42705   struct PerformanceConfigurationAcquireInfoINTEL
42706   {
42707     using NativeType = VkPerformanceConfigurationAcquireInfoINTEL;
42708 
42709     static const bool                                  allowDuplicate = false;
42710     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
42711       StructureType::ePerformanceConfigurationAcquireInfoINTEL;
42712 
42713 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PerformanceConfigurationAcquireInfoINTELVULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL42714     VULKAN_HPP_CONSTEXPR PerformanceConfigurationAcquireInfoINTEL(
42715       VULKAN_HPP_NAMESPACE::PerformanceConfigurationTypeINTEL type_ =
42716         VULKAN_HPP_NAMESPACE::PerformanceConfigurationTypeINTEL::eCommandQueueMetricsDiscoveryActivated )
42717       VULKAN_HPP_NOEXCEPT : type( type_ )
42718     {}
42719 
42720     VULKAN_HPP_CONSTEXPR PerformanceConfigurationAcquireInfoINTEL(
42721       PerformanceConfigurationAcquireInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42722 
PerformanceConfigurationAcquireInfoINTELVULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL42723     PerformanceConfigurationAcquireInfoINTEL( VkPerformanceConfigurationAcquireInfoINTEL const & rhs )
42724       VULKAN_HPP_NOEXCEPT
42725       : PerformanceConfigurationAcquireInfoINTEL(
42726           *reinterpret_cast<PerformanceConfigurationAcquireInfoINTEL const *>( &rhs ) )
42727     {}
42728 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42729 
42730     PerformanceConfigurationAcquireInfoINTEL &
42731       operator=( PerformanceConfigurationAcquireInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42732 
42733     PerformanceConfigurationAcquireInfoINTEL &
operator =VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL42734       operator=( VkPerformanceConfigurationAcquireInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
42735     {
42736       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL const *>( &rhs );
42737       return *this;
42738     }
42739 
42740 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
42741     VULKAN_HPP_CONSTEXPR_14 PerformanceConfigurationAcquireInfoINTEL &
setPNextVULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL42742                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
42743     {
42744       pNext = pNext_;
42745       return *this;
42746     }
42747 
42748     VULKAN_HPP_CONSTEXPR_14 PerformanceConfigurationAcquireInfoINTEL &
setTypeVULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL42749                             setType( VULKAN_HPP_NAMESPACE::PerformanceConfigurationTypeINTEL type_ ) VULKAN_HPP_NOEXCEPT
42750     {
42751       type = type_;
42752       return *this;
42753     }
42754 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
42755 
operator VkPerformanceConfigurationAcquireInfoINTEL const&VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL42756     explicit operator VkPerformanceConfigurationAcquireInfoINTEL const &() const VULKAN_HPP_NOEXCEPT
42757     {
42758       return *reinterpret_cast<const VkPerformanceConfigurationAcquireInfoINTEL *>( this );
42759     }
42760 
operator VkPerformanceConfigurationAcquireInfoINTEL&VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL42761     explicit operator VkPerformanceConfigurationAcquireInfoINTEL &() VULKAN_HPP_NOEXCEPT
42762     {
42763       return *reinterpret_cast<VkPerformanceConfigurationAcquireInfoINTEL *>( this );
42764     }
42765 
42766 #if 14 <= VULKAN_HPP_CPP_VERSION
42767     auto
42768 #else
42769     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
42770                const void * const &,
42771                VULKAN_HPP_NAMESPACE::PerformanceConfigurationTypeINTEL const &>
42772 #endif
reflectVULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL42773       reflect() const VULKAN_HPP_NOEXCEPT
42774     {
42775       return std::tie( sType, pNext, type );
42776     }
42777 
42778 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
42779     auto operator<=>( PerformanceConfigurationAcquireInfoINTEL const & ) const = default;
42780 #else
operator ==VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL42781     bool operator==( PerformanceConfigurationAcquireInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
42782     {
42783       return this->reflect() == rhs.reflect();
42784     }
42785 
operator !=VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL42786     bool operator!=( PerformanceConfigurationAcquireInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
42787     {
42788       return this->reflect() != rhs.reflect();
42789     }
42790 #endif
42791 
42792   public:
42793     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePerformanceConfigurationAcquireInfoINTEL;
42794     const void *                        pNext = {};
42795     VULKAN_HPP_NAMESPACE::PerformanceConfigurationTypeINTEL type =
42796       VULKAN_HPP_NAMESPACE::PerformanceConfigurationTypeINTEL::eCommandQueueMetricsDiscoveryActivated;
42797   };
42798   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL ) ==
42799                               sizeof( VkPerformanceConfigurationAcquireInfoINTEL ),
42800                             "struct and wrapper have different size!" );
42801   VULKAN_HPP_STATIC_ASSERT(
42802     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL>::value,
42803     "struct wrapper is not a standard layout!" );
42804   VULKAN_HPP_STATIC_ASSERT(
42805     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL>::value,
42806     "PerformanceConfigurationAcquireInfoINTEL is not nothrow_move_constructible!" );
42807 
42808   template <>
42809   struct CppType<StructureType, StructureType::ePerformanceConfigurationAcquireInfoINTEL>
42810   {
42811     using Type = PerformanceConfigurationAcquireInfoINTEL;
42812   };
42813 
42814   struct PerformanceCounterDescriptionKHR
42815   {
42816     using NativeType = VkPerformanceCounterDescriptionKHR;
42817 
42818     static const bool                                  allowDuplicate = false;
42819     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePerformanceCounterDescriptionKHR;
42820 
42821 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PerformanceCounterDescriptionKHRVULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR42822     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterDescriptionKHR(
42823       VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionFlagsKHR flags_       = {},
42824       std::array<char, VK_MAX_DESCRIPTION_SIZE> const &           name_        = {},
42825       std::array<char, VK_MAX_DESCRIPTION_SIZE> const &           category_    = {},
42826       std::array<char, VK_MAX_DESCRIPTION_SIZE> const &           description_ = {} ) VULKAN_HPP_NOEXCEPT
42827       : flags( flags_ )
42828       , name( name_ )
42829       , category( category_ )
42830       , description( description_ )
42831     {}
42832 
42833     VULKAN_HPP_CONSTEXPR_14
42834       PerformanceCounterDescriptionKHR( PerformanceCounterDescriptionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42835 
PerformanceCounterDescriptionKHRVULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR42836     PerformanceCounterDescriptionKHR( VkPerformanceCounterDescriptionKHR const & rhs ) VULKAN_HPP_NOEXCEPT
42837       : PerformanceCounterDescriptionKHR( *reinterpret_cast<PerformanceCounterDescriptionKHR const *>( &rhs ) )
42838     {}
42839 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42840 
42841     PerformanceCounterDescriptionKHR &
42842       operator=( PerformanceCounterDescriptionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42843 
operator =VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR42844     PerformanceCounterDescriptionKHR & operator=( VkPerformanceCounterDescriptionKHR const & rhs ) VULKAN_HPP_NOEXCEPT
42845     {
42846       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR const *>( &rhs );
42847       return *this;
42848     }
42849 
operator VkPerformanceCounterDescriptionKHR const&VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR42850     explicit operator VkPerformanceCounterDescriptionKHR const &() const VULKAN_HPP_NOEXCEPT
42851     {
42852       return *reinterpret_cast<const VkPerformanceCounterDescriptionKHR *>( this );
42853     }
42854 
operator VkPerformanceCounterDescriptionKHR&VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR42855     explicit operator VkPerformanceCounterDescriptionKHR &() VULKAN_HPP_NOEXCEPT
42856     {
42857       return *reinterpret_cast<VkPerformanceCounterDescriptionKHR *>( this );
42858     }
42859 
42860 #if 14 <= VULKAN_HPP_CPP_VERSION
42861     auto
42862 #else
42863     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
42864                void * const &,
42865                VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionFlagsKHR const &,
42866                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &,
42867                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &,
42868                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &>
42869 #endif
reflectVULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR42870       reflect() const VULKAN_HPP_NOEXCEPT
42871     {
42872       return std::tie( sType, pNext, flags, name, category, description );
42873     }
42874 
42875 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
42876     auto operator<=>( PerformanceCounterDescriptionKHR const & ) const = default;
42877 #else
operator ==VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR42878     bool operator==( PerformanceCounterDescriptionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
42879     {
42880       return this->reflect() == rhs.reflect();
42881     }
42882 
operator !=VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR42883     bool operator!=( PerformanceCounterDescriptionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
42884     {
42885       return this->reflect() != rhs.reflect();
42886     }
42887 #endif
42888 
42889   public:
42890     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePerformanceCounterDescriptionKHR;
42891     void *                              pNext = {};
42892     VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionFlagsKHR         flags       = {};
42893     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> name        = {};
42894     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> category    = {};
42895     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> description = {};
42896   };
42897   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR ) ==
42898                               sizeof( VkPerformanceCounterDescriptionKHR ),
42899                             "struct and wrapper have different size!" );
42900   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR>::value,
42901                             "struct wrapper is not a standard layout!" );
42902   VULKAN_HPP_STATIC_ASSERT(
42903     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR>::value,
42904     "PerformanceCounterDescriptionKHR is not nothrow_move_constructible!" );
42905 
42906   template <>
42907   struct CppType<StructureType, StructureType::ePerformanceCounterDescriptionKHR>
42908   {
42909     using Type = PerformanceCounterDescriptionKHR;
42910   };
42911 
42912   struct PerformanceCounterKHR
42913   {
42914     using NativeType = VkPerformanceCounterKHR;
42915 
42916     static const bool                                  allowDuplicate = false;
42917     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePerformanceCounterKHR;
42918 
42919 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PerformanceCounterKHRVULKAN_HPP_NAMESPACE::PerformanceCounterKHR42920     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterKHR(
42921       VULKAN_HPP_NAMESPACE::PerformanceCounterUnitKHR unit_ = VULKAN_HPP_NAMESPACE::PerformanceCounterUnitKHR::eGeneric,
42922       VULKAN_HPP_NAMESPACE::PerformanceCounterScopeKHR scope_ =
42923         VULKAN_HPP_NAMESPACE::PerformanceCounterScopeKHR::eCommandBuffer,
42924       VULKAN_HPP_NAMESPACE::PerformanceCounterStorageKHR storage_ =
42925         VULKAN_HPP_NAMESPACE::PerformanceCounterStorageKHR::eInt32,
42926       std::array<uint8_t, VK_UUID_SIZE> const & uuid_ = {} ) VULKAN_HPP_NOEXCEPT
42927       : unit( unit_ )
42928       , scope( scope_ )
42929       , storage( storage_ )
42930       , uuid( uuid_ )
42931     {}
42932 
42933     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterKHR( PerformanceCounterKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42934 
PerformanceCounterKHRVULKAN_HPP_NAMESPACE::PerformanceCounterKHR42935     PerformanceCounterKHR( VkPerformanceCounterKHR const & rhs ) VULKAN_HPP_NOEXCEPT
42936       : PerformanceCounterKHR( *reinterpret_cast<PerformanceCounterKHR const *>( &rhs ) )
42937     {}
42938 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42939 
42940     PerformanceCounterKHR & operator=( PerformanceCounterKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42941 
operator =VULKAN_HPP_NAMESPACE::PerformanceCounterKHR42942     PerformanceCounterKHR & operator=( VkPerformanceCounterKHR const & rhs ) VULKAN_HPP_NOEXCEPT
42943     {
42944       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PerformanceCounterKHR const *>( &rhs );
42945       return *this;
42946     }
42947 
operator VkPerformanceCounterKHR const&VULKAN_HPP_NAMESPACE::PerformanceCounterKHR42948     explicit operator VkPerformanceCounterKHR const &() const VULKAN_HPP_NOEXCEPT
42949     {
42950       return *reinterpret_cast<const VkPerformanceCounterKHR *>( this );
42951     }
42952 
operator VkPerformanceCounterKHR&VULKAN_HPP_NAMESPACE::PerformanceCounterKHR42953     explicit operator VkPerformanceCounterKHR &() VULKAN_HPP_NOEXCEPT
42954     {
42955       return *reinterpret_cast<VkPerformanceCounterKHR *>( this );
42956     }
42957 
42958 #if 14 <= VULKAN_HPP_CPP_VERSION
42959     auto
42960 #else
42961     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
42962                void * const &,
42963                VULKAN_HPP_NAMESPACE::PerformanceCounterUnitKHR const &,
42964                VULKAN_HPP_NAMESPACE::PerformanceCounterScopeKHR const &,
42965                VULKAN_HPP_NAMESPACE::PerformanceCounterStorageKHR const &,
42966                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &>
42967 #endif
reflectVULKAN_HPP_NAMESPACE::PerformanceCounterKHR42968       reflect() const VULKAN_HPP_NOEXCEPT
42969     {
42970       return std::tie( sType, pNext, unit, scope, storage, uuid );
42971     }
42972 
42973 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
42974     auto operator<=>( PerformanceCounterKHR const & ) const = default;
42975 #else
operator ==VULKAN_HPP_NAMESPACE::PerformanceCounterKHR42976     bool operator==( PerformanceCounterKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
42977     {
42978       return this->reflect() == rhs.reflect();
42979     }
42980 
operator !=VULKAN_HPP_NAMESPACE::PerformanceCounterKHR42981     bool operator!=( PerformanceCounterKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
42982     {
42983       return this->reflect() != rhs.reflect();
42984     }
42985 #endif
42986 
42987   public:
42988     VULKAN_HPP_NAMESPACE::StructureType              sType = StructureType::ePerformanceCounterKHR;
42989     void *                                           pNext = {};
42990     VULKAN_HPP_NAMESPACE::PerformanceCounterUnitKHR  unit  = VULKAN_HPP_NAMESPACE::PerformanceCounterUnitKHR::eGeneric;
42991     VULKAN_HPP_NAMESPACE::PerformanceCounterScopeKHR scope =
42992       VULKAN_HPP_NAMESPACE::PerformanceCounterScopeKHR::eCommandBuffer;
42993     VULKAN_HPP_NAMESPACE::PerformanceCounterStorageKHR storage =
42994       VULKAN_HPP_NAMESPACE::PerformanceCounterStorageKHR::eInt32;
42995     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> uuid = {};
42996   };
42997   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PerformanceCounterKHR ) == sizeof( VkPerformanceCounterKHR ),
42998                             "struct and wrapper have different size!" );
42999   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PerformanceCounterKHR>::value,
43000                             "struct wrapper is not a standard layout!" );
43001   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PerformanceCounterKHR>::value,
43002                             "PerformanceCounterKHR is not nothrow_move_constructible!" );
43003 
43004   template <>
43005   struct CppType<StructureType, StructureType::ePerformanceCounterKHR>
43006   {
43007     using Type = PerformanceCounterKHR;
43008   };
43009 
43010   union PerformanceCounterResultKHR
43011   {
43012     using NativeType = VkPerformanceCounterResultKHR;
43013 #if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS )
43014 
PerformanceCounterResultKHR(int32_t int32_={} )43015     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR( int32_t int32_ = {} ) : int32( int32_ ) {}
43016 
PerformanceCounterResultKHR(int64_t int64_)43017     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR( int64_t int64_ ) : int64( int64_ ) {}
43018 
PerformanceCounterResultKHR(uint32_t uint32_)43019     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR( uint32_t uint32_ ) : uint32( uint32_ ) {}
43020 
PerformanceCounterResultKHR(uint64_t uint64_)43021     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR( uint64_t uint64_ ) : uint64( uint64_ ) {}
43022 
PerformanceCounterResultKHR(float float32_)43023     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR( float float32_ ) : float32( float32_ ) {}
43024 
PerformanceCounterResultKHR(double float64_)43025     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR( double float64_ ) : float64( float64_ ) {}
43026 #endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/
43027 
43028 #if !defined( VULKAN_HPP_NO_UNION_SETTERS )
setInt32(int32_t int32_)43029     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR & setInt32( int32_t int32_ ) VULKAN_HPP_NOEXCEPT
43030     {
43031       int32 = int32_;
43032       return *this;
43033     }
43034 
setInt64(int64_t int64_)43035     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR & setInt64( int64_t int64_ ) VULKAN_HPP_NOEXCEPT
43036     {
43037       int64 = int64_;
43038       return *this;
43039     }
43040 
setUint32(uint32_t uint32_)43041     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR & setUint32( uint32_t uint32_ ) VULKAN_HPP_NOEXCEPT
43042     {
43043       uint32 = uint32_;
43044       return *this;
43045     }
43046 
setUint64(uint64_t uint64_)43047     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR & setUint64( uint64_t uint64_ ) VULKAN_HPP_NOEXCEPT
43048     {
43049       uint64 = uint64_;
43050       return *this;
43051     }
43052 
setFloat32(float float32_)43053     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR & setFloat32( float float32_ ) VULKAN_HPP_NOEXCEPT
43054     {
43055       float32 = float32_;
43056       return *this;
43057     }
43058 
setFloat64(double float64_)43059     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR & setFloat64( double float64_ ) VULKAN_HPP_NOEXCEPT
43060     {
43061       float64 = float64_;
43062       return *this;
43063     }
43064 #endif /*VULKAN_HPP_NO_UNION_SETTERS*/
43065 
operator VkPerformanceCounterResultKHR const&() const43066     operator VkPerformanceCounterResultKHR const &() const
43067     {
43068       return *reinterpret_cast<const VkPerformanceCounterResultKHR *>( this );
43069     }
43070 
operator VkPerformanceCounterResultKHR&()43071     operator VkPerformanceCounterResultKHR &()
43072     {
43073       return *reinterpret_cast<VkPerformanceCounterResultKHR *>( this );
43074     }
43075 
43076     int32_t  int32;
43077     int64_t  int64;
43078     uint32_t uint32;
43079     uint64_t uint64;
43080     float    float32;
43081     double   float64;
43082   };
43083 
43084   struct PerformanceMarkerInfoINTEL
43085   {
43086     using NativeType = VkPerformanceMarkerInfoINTEL;
43087 
43088     static const bool                                  allowDuplicate = false;
43089     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePerformanceMarkerInfoINTEL;
43090 
43091 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PerformanceMarkerInfoINTELVULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL43092     VULKAN_HPP_CONSTEXPR PerformanceMarkerInfoINTEL( uint64_t marker_ = {} ) VULKAN_HPP_NOEXCEPT : marker( marker_ ) {}
43093 
43094     VULKAN_HPP_CONSTEXPR
43095       PerformanceMarkerInfoINTEL( PerformanceMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43096 
PerformanceMarkerInfoINTELVULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL43097     PerformanceMarkerInfoINTEL( VkPerformanceMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
43098       : PerformanceMarkerInfoINTEL( *reinterpret_cast<PerformanceMarkerInfoINTEL const *>( &rhs ) )
43099     {}
43100 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
43101 
43102     PerformanceMarkerInfoINTEL & operator=( PerformanceMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43103 
operator =VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL43104     PerformanceMarkerInfoINTEL & operator=( VkPerformanceMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
43105     {
43106       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL const *>( &rhs );
43107       return *this;
43108     }
43109 
43110 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL43111     VULKAN_HPP_CONSTEXPR_14 PerformanceMarkerInfoINTEL & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
43112     {
43113       pNext = pNext_;
43114       return *this;
43115     }
43116 
setMarkerVULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL43117     VULKAN_HPP_CONSTEXPR_14 PerformanceMarkerInfoINTEL & setMarker( uint64_t marker_ ) VULKAN_HPP_NOEXCEPT
43118     {
43119       marker = marker_;
43120       return *this;
43121     }
43122 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
43123 
operator VkPerformanceMarkerInfoINTEL const&VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL43124     explicit operator VkPerformanceMarkerInfoINTEL const &() const VULKAN_HPP_NOEXCEPT
43125     {
43126       return *reinterpret_cast<const VkPerformanceMarkerInfoINTEL *>( this );
43127     }
43128 
operator VkPerformanceMarkerInfoINTEL&VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL43129     explicit operator VkPerformanceMarkerInfoINTEL &() VULKAN_HPP_NOEXCEPT
43130     {
43131       return *reinterpret_cast<VkPerformanceMarkerInfoINTEL *>( this );
43132     }
43133 
43134 #if 14 <= VULKAN_HPP_CPP_VERSION
43135     auto
43136 #else
43137     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint64_t const &>
43138 #endif
reflectVULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL43139       reflect() const VULKAN_HPP_NOEXCEPT
43140     {
43141       return std::tie( sType, pNext, marker );
43142     }
43143 
43144 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
43145     auto operator<=>( PerformanceMarkerInfoINTEL const & ) const = default;
43146 #else
operator ==VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL43147     bool operator==( PerformanceMarkerInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
43148     {
43149       return this->reflect() == rhs.reflect();
43150     }
43151 
operator !=VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL43152     bool operator!=( PerformanceMarkerInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
43153     {
43154       return this->reflect() != rhs.reflect();
43155     }
43156 #endif
43157 
43158   public:
43159     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::ePerformanceMarkerInfoINTEL;
43160     const void *                        pNext  = {};
43161     uint64_t                            marker = {};
43162   };
43163   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL ) ==
43164                               sizeof( VkPerformanceMarkerInfoINTEL ),
43165                             "struct and wrapper have different size!" );
43166   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL>::value,
43167                             "struct wrapper is not a standard layout!" );
43168   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL>::value,
43169                             "PerformanceMarkerInfoINTEL is not nothrow_move_constructible!" );
43170 
43171   template <>
43172   struct CppType<StructureType, StructureType::ePerformanceMarkerInfoINTEL>
43173   {
43174     using Type = PerformanceMarkerInfoINTEL;
43175   };
43176 
43177   struct PerformanceOverrideInfoINTEL
43178   {
43179     using NativeType = VkPerformanceOverrideInfoINTEL;
43180 
43181     static const bool                                  allowDuplicate = false;
43182     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePerformanceOverrideInfoINTEL;
43183 
43184 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
43185     VULKAN_HPP_CONSTEXPR
PerformanceOverrideInfoINTELVULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL43186       PerformanceOverrideInfoINTEL( VULKAN_HPP_NAMESPACE::PerformanceOverrideTypeINTEL type_ =
43187                                       VULKAN_HPP_NAMESPACE::PerformanceOverrideTypeINTEL::eNullHardware,
43188                                     VULKAN_HPP_NAMESPACE::Bool32 enable_    = {},
43189                                     uint64_t                     parameter_ = {} ) VULKAN_HPP_NOEXCEPT
43190       : type( type_ )
43191       , enable( enable_ )
43192       , parameter( parameter_ )
43193     {}
43194 
43195     VULKAN_HPP_CONSTEXPR
43196       PerformanceOverrideInfoINTEL( PerformanceOverrideInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43197 
PerformanceOverrideInfoINTELVULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL43198     PerformanceOverrideInfoINTEL( VkPerformanceOverrideInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
43199       : PerformanceOverrideInfoINTEL( *reinterpret_cast<PerformanceOverrideInfoINTEL const *>( &rhs ) )
43200     {}
43201 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
43202 
43203     PerformanceOverrideInfoINTEL & operator=( PerformanceOverrideInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43204 
operator =VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL43205     PerformanceOverrideInfoINTEL & operator=( VkPerformanceOverrideInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
43206     {
43207       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL const *>( &rhs );
43208       return *this;
43209     }
43210 
43211 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL43212     VULKAN_HPP_CONSTEXPR_14 PerformanceOverrideInfoINTEL & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
43213     {
43214       pNext = pNext_;
43215       return *this;
43216     }
43217 
43218     VULKAN_HPP_CONSTEXPR_14 PerformanceOverrideInfoINTEL &
setTypeVULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL43219                             setType( VULKAN_HPP_NAMESPACE::PerformanceOverrideTypeINTEL type_ ) VULKAN_HPP_NOEXCEPT
43220     {
43221       type = type_;
43222       return *this;
43223     }
43224 
43225     VULKAN_HPP_CONSTEXPR_14 PerformanceOverrideInfoINTEL &
setEnableVULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL43226                             setEnable( VULKAN_HPP_NAMESPACE::Bool32 enable_ ) VULKAN_HPP_NOEXCEPT
43227     {
43228       enable = enable_;
43229       return *this;
43230     }
43231 
setParameterVULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL43232     VULKAN_HPP_CONSTEXPR_14 PerformanceOverrideInfoINTEL & setParameter( uint64_t parameter_ ) VULKAN_HPP_NOEXCEPT
43233     {
43234       parameter = parameter_;
43235       return *this;
43236     }
43237 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
43238 
operator VkPerformanceOverrideInfoINTEL const&VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL43239     explicit operator VkPerformanceOverrideInfoINTEL const &() const VULKAN_HPP_NOEXCEPT
43240     {
43241       return *reinterpret_cast<const VkPerformanceOverrideInfoINTEL *>( this );
43242     }
43243 
operator VkPerformanceOverrideInfoINTEL&VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL43244     explicit operator VkPerformanceOverrideInfoINTEL &() VULKAN_HPP_NOEXCEPT
43245     {
43246       return *reinterpret_cast<VkPerformanceOverrideInfoINTEL *>( this );
43247     }
43248 
43249 #if 14 <= VULKAN_HPP_CPP_VERSION
43250     auto
43251 #else
43252     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
43253                const void * const &,
43254                VULKAN_HPP_NAMESPACE::PerformanceOverrideTypeINTEL const &,
43255                VULKAN_HPP_NAMESPACE::Bool32 const &,
43256                uint64_t const &>
43257 #endif
reflectVULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL43258       reflect() const VULKAN_HPP_NOEXCEPT
43259     {
43260       return std::tie( sType, pNext, type, enable, parameter );
43261     }
43262 
43263 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
43264     auto operator<=>( PerformanceOverrideInfoINTEL const & ) const = default;
43265 #else
operator ==VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL43266     bool operator==( PerformanceOverrideInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
43267     {
43268       return this->reflect() == rhs.reflect();
43269     }
43270 
operator !=VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL43271     bool operator!=( PerformanceOverrideInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
43272     {
43273       return this->reflect() != rhs.reflect();
43274     }
43275 #endif
43276 
43277   public:
43278     VULKAN_HPP_NAMESPACE::StructureType                sType = StructureType::ePerformanceOverrideInfoINTEL;
43279     const void *                                       pNext = {};
43280     VULKAN_HPP_NAMESPACE::PerformanceOverrideTypeINTEL type =
43281       VULKAN_HPP_NAMESPACE::PerformanceOverrideTypeINTEL::eNullHardware;
43282     VULKAN_HPP_NAMESPACE::Bool32 enable    = {};
43283     uint64_t                     parameter = {};
43284   };
43285   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL ) ==
43286                               sizeof( VkPerformanceOverrideInfoINTEL ),
43287                             "struct and wrapper have different size!" );
43288   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL>::value,
43289                             "struct wrapper is not a standard layout!" );
43290   VULKAN_HPP_STATIC_ASSERT(
43291     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL>::value,
43292     "PerformanceOverrideInfoINTEL is not nothrow_move_constructible!" );
43293 
43294   template <>
43295   struct CppType<StructureType, StructureType::ePerformanceOverrideInfoINTEL>
43296   {
43297     using Type = PerformanceOverrideInfoINTEL;
43298   };
43299 
43300   struct PerformanceQuerySubmitInfoKHR
43301   {
43302     using NativeType = VkPerformanceQuerySubmitInfoKHR;
43303 
43304     static const bool                                  allowDuplicate = false;
43305     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePerformanceQuerySubmitInfoKHR;
43306 
43307 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PerformanceQuerySubmitInfoKHRVULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR43308     VULKAN_HPP_CONSTEXPR PerformanceQuerySubmitInfoKHR( uint32_t counterPassIndex_ = {} ) VULKAN_HPP_NOEXCEPT
43309       : counterPassIndex( counterPassIndex_ )
43310     {}
43311 
43312     VULKAN_HPP_CONSTEXPR
43313       PerformanceQuerySubmitInfoKHR( PerformanceQuerySubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43314 
PerformanceQuerySubmitInfoKHRVULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR43315     PerformanceQuerySubmitInfoKHR( VkPerformanceQuerySubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
43316       : PerformanceQuerySubmitInfoKHR( *reinterpret_cast<PerformanceQuerySubmitInfoKHR const *>( &rhs ) )
43317     {}
43318 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
43319 
43320     PerformanceQuerySubmitInfoKHR &
43321       operator=( PerformanceQuerySubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43322 
operator =VULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR43323     PerformanceQuerySubmitInfoKHR & operator=( VkPerformanceQuerySubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
43324     {
43325       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR const *>( &rhs );
43326       return *this;
43327     }
43328 
43329 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR43330     VULKAN_HPP_CONSTEXPR_14 PerformanceQuerySubmitInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
43331     {
43332       pNext = pNext_;
43333       return *this;
43334     }
43335 
43336     VULKAN_HPP_CONSTEXPR_14 PerformanceQuerySubmitInfoKHR &
setCounterPassIndexVULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR43337                             setCounterPassIndex( uint32_t counterPassIndex_ ) VULKAN_HPP_NOEXCEPT
43338     {
43339       counterPassIndex = counterPassIndex_;
43340       return *this;
43341     }
43342 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
43343 
operator VkPerformanceQuerySubmitInfoKHR const&VULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR43344     explicit operator VkPerformanceQuerySubmitInfoKHR const &() const VULKAN_HPP_NOEXCEPT
43345     {
43346       return *reinterpret_cast<const VkPerformanceQuerySubmitInfoKHR *>( this );
43347     }
43348 
operator VkPerformanceQuerySubmitInfoKHR&VULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR43349     explicit operator VkPerformanceQuerySubmitInfoKHR &() VULKAN_HPP_NOEXCEPT
43350     {
43351       return *reinterpret_cast<VkPerformanceQuerySubmitInfoKHR *>( this );
43352     }
43353 
43354 #if 14 <= VULKAN_HPP_CPP_VERSION
43355     auto
43356 #else
43357     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &>
43358 #endif
reflectVULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR43359       reflect() const VULKAN_HPP_NOEXCEPT
43360     {
43361       return std::tie( sType, pNext, counterPassIndex );
43362     }
43363 
43364 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
43365     auto operator<=>( PerformanceQuerySubmitInfoKHR const & ) const = default;
43366 #else
operator ==VULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR43367     bool operator==( PerformanceQuerySubmitInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
43368     {
43369       return this->reflect() == rhs.reflect();
43370     }
43371 
operator !=VULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR43372     bool operator!=( PerformanceQuerySubmitInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
43373     {
43374       return this->reflect() != rhs.reflect();
43375     }
43376 #endif
43377 
43378   public:
43379     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::ePerformanceQuerySubmitInfoKHR;
43380     const void *                        pNext            = {};
43381     uint32_t                            counterPassIndex = {};
43382   };
43383   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR ) ==
43384                               sizeof( VkPerformanceQuerySubmitInfoKHR ),
43385                             "struct and wrapper have different size!" );
43386   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR>::value,
43387                             "struct wrapper is not a standard layout!" );
43388   VULKAN_HPP_STATIC_ASSERT(
43389     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR>::value,
43390     "PerformanceQuerySubmitInfoKHR is not nothrow_move_constructible!" );
43391 
43392   template <>
43393   struct CppType<StructureType, StructureType::ePerformanceQuerySubmitInfoKHR>
43394   {
43395     using Type = PerformanceQuerySubmitInfoKHR;
43396   };
43397 
43398   struct PerformanceStreamMarkerInfoINTEL
43399   {
43400     using NativeType = VkPerformanceStreamMarkerInfoINTEL;
43401 
43402     static const bool                                  allowDuplicate = false;
43403     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePerformanceStreamMarkerInfoINTEL;
43404 
43405 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PerformanceStreamMarkerInfoINTELVULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL43406     VULKAN_HPP_CONSTEXPR PerformanceStreamMarkerInfoINTEL( uint32_t marker_ = {} ) VULKAN_HPP_NOEXCEPT
43407       : marker( marker_ )
43408     {}
43409 
43410     VULKAN_HPP_CONSTEXPR
43411       PerformanceStreamMarkerInfoINTEL( PerformanceStreamMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43412 
PerformanceStreamMarkerInfoINTELVULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL43413     PerformanceStreamMarkerInfoINTEL( VkPerformanceStreamMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
43414       : PerformanceStreamMarkerInfoINTEL( *reinterpret_cast<PerformanceStreamMarkerInfoINTEL const *>( &rhs ) )
43415     {}
43416 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
43417 
43418     PerformanceStreamMarkerInfoINTEL &
43419       operator=( PerformanceStreamMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43420 
operator =VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL43421     PerformanceStreamMarkerInfoINTEL & operator=( VkPerformanceStreamMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
43422     {
43423       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL const *>( &rhs );
43424       return *this;
43425     }
43426 
43427 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL43428     VULKAN_HPP_CONSTEXPR_14 PerformanceStreamMarkerInfoINTEL & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
43429     {
43430       pNext = pNext_;
43431       return *this;
43432     }
43433 
setMarkerVULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL43434     VULKAN_HPP_CONSTEXPR_14 PerformanceStreamMarkerInfoINTEL & setMarker( uint32_t marker_ ) VULKAN_HPP_NOEXCEPT
43435     {
43436       marker = marker_;
43437       return *this;
43438     }
43439 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
43440 
operator VkPerformanceStreamMarkerInfoINTEL const&VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL43441     explicit operator VkPerformanceStreamMarkerInfoINTEL const &() const VULKAN_HPP_NOEXCEPT
43442     {
43443       return *reinterpret_cast<const VkPerformanceStreamMarkerInfoINTEL *>( this );
43444     }
43445 
operator VkPerformanceStreamMarkerInfoINTEL&VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL43446     explicit operator VkPerformanceStreamMarkerInfoINTEL &() VULKAN_HPP_NOEXCEPT
43447     {
43448       return *reinterpret_cast<VkPerformanceStreamMarkerInfoINTEL *>( this );
43449     }
43450 
43451 #if 14 <= VULKAN_HPP_CPP_VERSION
43452     auto
43453 #else
43454     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &>
43455 #endif
reflectVULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL43456       reflect() const VULKAN_HPP_NOEXCEPT
43457     {
43458       return std::tie( sType, pNext, marker );
43459     }
43460 
43461 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
43462     auto operator<=>( PerformanceStreamMarkerInfoINTEL const & ) const = default;
43463 #else
operator ==VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL43464     bool operator==( PerformanceStreamMarkerInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
43465     {
43466       return this->reflect() == rhs.reflect();
43467     }
43468 
operator !=VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL43469     bool operator!=( PerformanceStreamMarkerInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
43470     {
43471       return this->reflect() != rhs.reflect();
43472     }
43473 #endif
43474 
43475   public:
43476     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::ePerformanceStreamMarkerInfoINTEL;
43477     const void *                        pNext  = {};
43478     uint32_t                            marker = {};
43479   };
43480   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL ) ==
43481                               sizeof( VkPerformanceStreamMarkerInfoINTEL ),
43482                             "struct and wrapper have different size!" );
43483   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL>::value,
43484                             "struct wrapper is not a standard layout!" );
43485   VULKAN_HPP_STATIC_ASSERT(
43486     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL>::value,
43487     "PerformanceStreamMarkerInfoINTEL is not nothrow_move_constructible!" );
43488 
43489   template <>
43490   struct CppType<StructureType, StructureType::ePerformanceStreamMarkerInfoINTEL>
43491   {
43492     using Type = PerformanceStreamMarkerInfoINTEL;
43493   };
43494 
43495   union PerformanceValueDataINTEL
43496   {
43497     using NativeType = VkPerformanceValueDataINTEL;
43498 #if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS )
43499 
PerformanceValueDataINTEL(uint32_t value32_={} )43500     VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL( uint32_t value32_ = {} ) : value32( value32_ ) {}
43501 
PerformanceValueDataINTEL(uint64_t value64_)43502     VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL( uint64_t value64_ ) : value64( value64_ ) {}
43503 
PerformanceValueDataINTEL(float valueFloat_)43504     VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL( float valueFloat_ ) : valueFloat( valueFloat_ ) {}
43505 
PerformanceValueDataINTEL(const char * valueString_)43506     VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL( const char * valueString_ ) : valueString( valueString_ ) {}
43507 #endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/
43508 
43509 #if !defined( VULKAN_HPP_NO_UNION_SETTERS )
setValue32(uint32_t value32_)43510     VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL & setValue32( uint32_t value32_ ) VULKAN_HPP_NOEXCEPT
43511     {
43512       value32 = value32_;
43513       return *this;
43514     }
43515 
setValue64(uint64_t value64_)43516     VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL & setValue64( uint64_t value64_ ) VULKAN_HPP_NOEXCEPT
43517     {
43518       value64 = value64_;
43519       return *this;
43520     }
43521 
setValueFloat(float valueFloat_)43522     VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL & setValueFloat( float valueFloat_ ) VULKAN_HPP_NOEXCEPT
43523     {
43524       valueFloat = valueFloat_;
43525       return *this;
43526     }
43527 
43528     VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL &
setValueBool(VULKAN_HPP_NAMESPACE::Bool32 valueBool_)43529                             setValueBool( VULKAN_HPP_NAMESPACE::Bool32 valueBool_ ) VULKAN_HPP_NOEXCEPT
43530     {
43531       valueBool = valueBool_;
43532       return *this;
43533     }
43534 
setValueString(const char * valueString_)43535     VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL & setValueString( const char * valueString_ ) VULKAN_HPP_NOEXCEPT
43536     {
43537       valueString = valueString_;
43538       return *this;
43539     }
43540 #endif /*VULKAN_HPP_NO_UNION_SETTERS*/
43541 
operator VkPerformanceValueDataINTEL const&() const43542     operator VkPerformanceValueDataINTEL const &() const
43543     {
43544       return *reinterpret_cast<const VkPerformanceValueDataINTEL *>( this );
43545     }
43546 
operator VkPerformanceValueDataINTEL&()43547     operator VkPerformanceValueDataINTEL &()
43548     {
43549       return *reinterpret_cast<VkPerformanceValueDataINTEL *>( this );
43550     }
43551 
43552 #ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
43553     uint32_t                     value32;
43554     uint64_t                     value64;
43555     float                        valueFloat;
43556     VULKAN_HPP_NAMESPACE::Bool32 valueBool;
43557     const char *                 valueString;
43558 #else
43559     uint32_t     value32;
43560     uint64_t     value64;
43561     float        valueFloat;
43562     VkBool32     valueBool;
43563     const char * valueString;
43564 #endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/
43565   };
43566 
43567   struct PerformanceValueINTEL
43568   {
43569     using NativeType = VkPerformanceValueINTEL;
43570 
43571 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PerformanceValueINTELVULKAN_HPP_NAMESPACE::PerformanceValueINTEL43572     VULKAN_HPP_CONSTEXPR_14 PerformanceValueINTEL(
43573       VULKAN_HPP_NAMESPACE::PerformanceValueTypeINTEL type_ = VULKAN_HPP_NAMESPACE::PerformanceValueTypeINTEL::eUint32,
43574       VULKAN_HPP_NAMESPACE::PerformanceValueDataINTEL data_ = {} ) VULKAN_HPP_NOEXCEPT
43575       : type( type_ )
43576       , data( data_ )
43577     {}
43578 
43579     VULKAN_HPP_CONSTEXPR_14 PerformanceValueINTEL( PerformanceValueINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43580 
PerformanceValueINTELVULKAN_HPP_NAMESPACE::PerformanceValueINTEL43581     PerformanceValueINTEL( VkPerformanceValueINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
43582       : PerformanceValueINTEL( *reinterpret_cast<PerformanceValueINTEL const *>( &rhs ) )
43583     {}
43584 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
43585 
43586     PerformanceValueINTEL & operator=( PerformanceValueINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43587 
operator =VULKAN_HPP_NAMESPACE::PerformanceValueINTEL43588     PerformanceValueINTEL & operator=( VkPerformanceValueINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
43589     {
43590       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PerformanceValueINTEL const *>( &rhs );
43591       return *this;
43592     }
43593 
43594 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
43595     VULKAN_HPP_CONSTEXPR_14 PerformanceValueINTEL &
setTypeVULKAN_HPP_NAMESPACE::PerformanceValueINTEL43596                             setType( VULKAN_HPP_NAMESPACE::PerformanceValueTypeINTEL type_ ) VULKAN_HPP_NOEXCEPT
43597     {
43598       type = type_;
43599       return *this;
43600     }
43601 
43602     VULKAN_HPP_CONSTEXPR_14 PerformanceValueINTEL &
setDataVULKAN_HPP_NAMESPACE::PerformanceValueINTEL43603                             setData( VULKAN_HPP_NAMESPACE::PerformanceValueDataINTEL const & data_ ) VULKAN_HPP_NOEXCEPT
43604     {
43605       data = data_;
43606       return *this;
43607     }
43608 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
43609 
operator VkPerformanceValueINTEL const&VULKAN_HPP_NAMESPACE::PerformanceValueINTEL43610     explicit operator VkPerformanceValueINTEL const &() const VULKAN_HPP_NOEXCEPT
43611     {
43612       return *reinterpret_cast<const VkPerformanceValueINTEL *>( this );
43613     }
43614 
operator VkPerformanceValueINTEL&VULKAN_HPP_NAMESPACE::PerformanceValueINTEL43615     explicit operator VkPerformanceValueINTEL &() VULKAN_HPP_NOEXCEPT
43616     {
43617       return *reinterpret_cast<VkPerformanceValueINTEL *>( this );
43618     }
43619 
43620 #if 14 <= VULKAN_HPP_CPP_VERSION
43621     auto
43622 #else
43623     std::tuple<VULKAN_HPP_NAMESPACE::PerformanceValueTypeINTEL const &,
43624                VULKAN_HPP_NAMESPACE::PerformanceValueDataINTEL const &>
43625 #endif
reflectVULKAN_HPP_NAMESPACE::PerformanceValueINTEL43626       reflect() const VULKAN_HPP_NOEXCEPT
43627     {
43628       return std::tie( type, data );
43629     }
43630 
43631   public:
43632     VULKAN_HPP_NAMESPACE::PerformanceValueTypeINTEL type = VULKAN_HPP_NAMESPACE::PerformanceValueTypeINTEL::eUint32;
43633     VULKAN_HPP_NAMESPACE::PerformanceValueDataINTEL data = {};
43634   };
43635   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PerformanceValueINTEL ) == sizeof( VkPerformanceValueINTEL ),
43636                             "struct and wrapper have different size!" );
43637   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PerformanceValueINTEL>::value,
43638                             "struct wrapper is not a standard layout!" );
43639   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PerformanceValueINTEL>::value,
43640                             "PerformanceValueINTEL is not nothrow_move_constructible!" );
43641 
43642   struct PhysicalDevice16BitStorageFeatures
43643   {
43644     using NativeType = VkPhysicalDevice16BitStorageFeatures;
43645 
43646     static const bool                                  allowDuplicate = false;
43647     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
43648       StructureType::ePhysicalDevice16BitStorageFeatures;
43649 
43650 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
43651     VULKAN_HPP_CONSTEXPR
PhysicalDevice16BitStorageFeaturesVULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures43652       PhysicalDevice16BitStorageFeatures( VULKAN_HPP_NAMESPACE::Bool32 storageBuffer16BitAccess_           = {},
43653                                           VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer16BitAccess_ = {},
43654                                           VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant16_              = {},
43655                                           VULKAN_HPP_NAMESPACE::Bool32 storageInputOutput16_ = {} ) VULKAN_HPP_NOEXCEPT
43656       : storageBuffer16BitAccess( storageBuffer16BitAccess_ )
43657       , uniformAndStorageBuffer16BitAccess( uniformAndStorageBuffer16BitAccess_ )
43658       , storagePushConstant16( storagePushConstant16_ )
43659       , storageInputOutput16( storageInputOutput16_ )
43660     {}
43661 
43662     VULKAN_HPP_CONSTEXPR PhysicalDevice16BitStorageFeatures( PhysicalDevice16BitStorageFeatures const & rhs )
43663       VULKAN_HPP_NOEXCEPT = default;
43664 
PhysicalDevice16BitStorageFeaturesVULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures43665     PhysicalDevice16BitStorageFeatures( VkPhysicalDevice16BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
43666       : PhysicalDevice16BitStorageFeatures( *reinterpret_cast<PhysicalDevice16BitStorageFeatures const *>( &rhs ) )
43667     {}
43668 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
43669 
43670     PhysicalDevice16BitStorageFeatures &
43671       operator=( PhysicalDevice16BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43672 
43673     PhysicalDevice16BitStorageFeatures &
operator =VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures43674       operator=( VkPhysicalDevice16BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
43675     {
43676       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures const *>( &rhs );
43677       return *this;
43678     }
43679 
43680 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures43681     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice16BitStorageFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
43682     {
43683       pNext = pNext_;
43684       return *this;
43685     }
43686 
43687     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice16BitStorageFeatures &
setStorageBuffer16BitAccessVULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures43688       setStorageBuffer16BitAccess( VULKAN_HPP_NAMESPACE::Bool32 storageBuffer16BitAccess_ ) VULKAN_HPP_NOEXCEPT
43689     {
43690       storageBuffer16BitAccess = storageBuffer16BitAccess_;
43691       return *this;
43692     }
43693 
setUniformAndStorageBuffer16BitAccessVULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures43694     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice16BitStorageFeatures & setUniformAndStorageBuffer16BitAccess(
43695       VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer16BitAccess_ ) VULKAN_HPP_NOEXCEPT
43696     {
43697       uniformAndStorageBuffer16BitAccess = uniformAndStorageBuffer16BitAccess_;
43698       return *this;
43699     }
43700 
43701     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice16BitStorageFeatures &
setStoragePushConstant16VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures43702       setStoragePushConstant16( VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant16_ ) VULKAN_HPP_NOEXCEPT
43703     {
43704       storagePushConstant16 = storagePushConstant16_;
43705       return *this;
43706     }
43707 
43708     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice16BitStorageFeatures &
setStorageInputOutput16VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures43709       setStorageInputOutput16( VULKAN_HPP_NAMESPACE::Bool32 storageInputOutput16_ ) VULKAN_HPP_NOEXCEPT
43710     {
43711       storageInputOutput16 = storageInputOutput16_;
43712       return *this;
43713     }
43714 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
43715 
operator VkPhysicalDevice16BitStorageFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures43716     explicit operator VkPhysicalDevice16BitStorageFeatures const &() const VULKAN_HPP_NOEXCEPT
43717     {
43718       return *reinterpret_cast<const VkPhysicalDevice16BitStorageFeatures *>( this );
43719     }
43720 
operator VkPhysicalDevice16BitStorageFeatures&VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures43721     explicit operator VkPhysicalDevice16BitStorageFeatures &() VULKAN_HPP_NOEXCEPT
43722     {
43723       return *reinterpret_cast<VkPhysicalDevice16BitStorageFeatures *>( this );
43724     }
43725 
43726 #if 14 <= VULKAN_HPP_CPP_VERSION
43727     auto
43728 #else
43729     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
43730                void * const &,
43731                VULKAN_HPP_NAMESPACE::Bool32 const &,
43732                VULKAN_HPP_NAMESPACE::Bool32 const &,
43733                VULKAN_HPP_NAMESPACE::Bool32 const &,
43734                VULKAN_HPP_NAMESPACE::Bool32 const &>
43735 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures43736       reflect() const VULKAN_HPP_NOEXCEPT
43737     {
43738       return std::tie( sType,
43739                        pNext,
43740                        storageBuffer16BitAccess,
43741                        uniformAndStorageBuffer16BitAccess,
43742                        storagePushConstant16,
43743                        storageInputOutput16 );
43744     }
43745 
43746 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
43747     auto operator<=>( PhysicalDevice16BitStorageFeatures const & ) const = default;
43748 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures43749     bool operator==( PhysicalDevice16BitStorageFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
43750     {
43751       return this->reflect() == rhs.reflect();
43752     }
43753 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures43754     bool operator!=( PhysicalDevice16BitStorageFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
43755     {
43756       return this->reflect() != rhs.reflect();
43757     }
43758 #endif
43759 
43760   public:
43761     VULKAN_HPP_NAMESPACE::StructureType sType                    = StructureType::ePhysicalDevice16BitStorageFeatures;
43762     void *                              pNext                    = {};
43763     VULKAN_HPP_NAMESPACE::Bool32        storageBuffer16BitAccess = {};
43764     VULKAN_HPP_NAMESPACE::Bool32        uniformAndStorageBuffer16BitAccess = {};
43765     VULKAN_HPP_NAMESPACE::Bool32        storagePushConstant16              = {};
43766     VULKAN_HPP_NAMESPACE::Bool32        storageInputOutput16               = {};
43767   };
43768   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures ) ==
43769                               sizeof( VkPhysicalDevice16BitStorageFeatures ),
43770                             "struct and wrapper have different size!" );
43771   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures>::value,
43772                             "struct wrapper is not a standard layout!" );
43773   VULKAN_HPP_STATIC_ASSERT(
43774     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures>::value,
43775     "PhysicalDevice16BitStorageFeatures is not nothrow_move_constructible!" );
43776 
43777   template <>
43778   struct CppType<StructureType, StructureType::ePhysicalDevice16BitStorageFeatures>
43779   {
43780     using Type = PhysicalDevice16BitStorageFeatures;
43781   };
43782   using PhysicalDevice16BitStorageFeaturesKHR = PhysicalDevice16BitStorageFeatures;
43783 
43784   struct PhysicalDevice4444FormatsFeaturesEXT
43785   {
43786     using NativeType = VkPhysicalDevice4444FormatsFeaturesEXT;
43787 
43788     static const bool                                  allowDuplicate = false;
43789     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
43790       StructureType::ePhysicalDevice4444FormatsFeaturesEXT;
43791 
43792 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
43793     VULKAN_HPP_CONSTEXPR
PhysicalDevice4444FormatsFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT43794       PhysicalDevice4444FormatsFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 formatA4R4G4B4_ = {},
43795                                             VULKAN_HPP_NAMESPACE::Bool32 formatA4B4G4R4_ = {} ) VULKAN_HPP_NOEXCEPT
43796       : formatA4R4G4B4( formatA4R4G4B4_ )
43797       , formatA4B4G4R4( formatA4B4G4R4_ )
43798     {}
43799 
43800     VULKAN_HPP_CONSTEXPR PhysicalDevice4444FormatsFeaturesEXT( PhysicalDevice4444FormatsFeaturesEXT const & rhs )
43801       VULKAN_HPP_NOEXCEPT = default;
43802 
PhysicalDevice4444FormatsFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT43803     PhysicalDevice4444FormatsFeaturesEXT( VkPhysicalDevice4444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
43804       : PhysicalDevice4444FormatsFeaturesEXT( *reinterpret_cast<PhysicalDevice4444FormatsFeaturesEXT const *>( &rhs ) )
43805     {}
43806 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
43807 
43808     PhysicalDevice4444FormatsFeaturesEXT &
43809       operator=( PhysicalDevice4444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43810 
43811     PhysicalDevice4444FormatsFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT43812       operator=( VkPhysicalDevice4444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
43813     {
43814       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT const *>( &rhs );
43815       return *this;
43816     }
43817 
43818 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT43819     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice4444FormatsFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
43820     {
43821       pNext = pNext_;
43822       return *this;
43823     }
43824 
43825     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice4444FormatsFeaturesEXT &
setFormatA4R4G4B4VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT43826                             setFormatA4R4G4B4( VULKAN_HPP_NAMESPACE::Bool32 formatA4R4G4B4_ ) VULKAN_HPP_NOEXCEPT
43827     {
43828       formatA4R4G4B4 = formatA4R4G4B4_;
43829       return *this;
43830     }
43831 
43832     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice4444FormatsFeaturesEXT &
setFormatA4B4G4R4VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT43833                             setFormatA4B4G4R4( VULKAN_HPP_NAMESPACE::Bool32 formatA4B4G4R4_ ) VULKAN_HPP_NOEXCEPT
43834     {
43835       formatA4B4G4R4 = formatA4B4G4R4_;
43836       return *this;
43837     }
43838 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
43839 
operator VkPhysicalDevice4444FormatsFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT43840     explicit operator VkPhysicalDevice4444FormatsFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
43841     {
43842       return *reinterpret_cast<const VkPhysicalDevice4444FormatsFeaturesEXT *>( this );
43843     }
43844 
operator VkPhysicalDevice4444FormatsFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT43845     explicit operator VkPhysicalDevice4444FormatsFeaturesEXT &() VULKAN_HPP_NOEXCEPT
43846     {
43847       return *reinterpret_cast<VkPhysicalDevice4444FormatsFeaturesEXT *>( this );
43848     }
43849 
43850 #if 14 <= VULKAN_HPP_CPP_VERSION
43851     auto
43852 #else
43853     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
43854                void * const &,
43855                VULKAN_HPP_NAMESPACE::Bool32 const &,
43856                VULKAN_HPP_NAMESPACE::Bool32 const &>
43857 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT43858       reflect() const VULKAN_HPP_NOEXCEPT
43859     {
43860       return std::tie( sType, pNext, formatA4R4G4B4, formatA4B4G4R4 );
43861     }
43862 
43863 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
43864     auto operator<=>( PhysicalDevice4444FormatsFeaturesEXT const & ) const = default;
43865 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT43866     bool operator==( PhysicalDevice4444FormatsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
43867     {
43868       return this->reflect() == rhs.reflect();
43869     }
43870 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT43871     bool operator!=( PhysicalDevice4444FormatsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
43872     {
43873       return this->reflect() != rhs.reflect();
43874     }
43875 #endif
43876 
43877   public:
43878     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::ePhysicalDevice4444FormatsFeaturesEXT;
43879     void *                              pNext          = {};
43880     VULKAN_HPP_NAMESPACE::Bool32        formatA4R4G4B4 = {};
43881     VULKAN_HPP_NAMESPACE::Bool32        formatA4B4G4R4 = {};
43882   };
43883   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT ) ==
43884                               sizeof( VkPhysicalDevice4444FormatsFeaturesEXT ),
43885                             "struct and wrapper have different size!" );
43886   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT>::value,
43887                             "struct wrapper is not a standard layout!" );
43888   VULKAN_HPP_STATIC_ASSERT(
43889     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT>::value,
43890     "PhysicalDevice4444FormatsFeaturesEXT is not nothrow_move_constructible!" );
43891 
43892   template <>
43893   struct CppType<StructureType, StructureType::ePhysicalDevice4444FormatsFeaturesEXT>
43894   {
43895     using Type = PhysicalDevice4444FormatsFeaturesEXT;
43896   };
43897 
43898   struct PhysicalDevice8BitStorageFeatures
43899   {
43900     using NativeType = VkPhysicalDevice8BitStorageFeatures;
43901 
43902     static const bool                                  allowDuplicate = false;
43903     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
43904       StructureType::ePhysicalDevice8BitStorageFeatures;
43905 
43906 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
43907     VULKAN_HPP_CONSTEXPR
PhysicalDevice8BitStorageFeaturesVULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures43908       PhysicalDevice8BitStorageFeatures( VULKAN_HPP_NAMESPACE::Bool32 storageBuffer8BitAccess_           = {},
43909                                          VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer8BitAccess_ = {},
43910                                          VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant8_ = {} ) VULKAN_HPP_NOEXCEPT
43911       : storageBuffer8BitAccess( storageBuffer8BitAccess_ )
43912       , uniformAndStorageBuffer8BitAccess( uniformAndStorageBuffer8BitAccess_ )
43913       , storagePushConstant8( storagePushConstant8_ )
43914     {}
43915 
43916     VULKAN_HPP_CONSTEXPR
43917       PhysicalDevice8BitStorageFeatures( PhysicalDevice8BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43918 
PhysicalDevice8BitStorageFeaturesVULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures43919     PhysicalDevice8BitStorageFeatures( VkPhysicalDevice8BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
43920       : PhysicalDevice8BitStorageFeatures( *reinterpret_cast<PhysicalDevice8BitStorageFeatures const *>( &rhs ) )
43921     {}
43922 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
43923 
43924     PhysicalDevice8BitStorageFeatures &
43925       operator=( PhysicalDevice8BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43926 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures43927     PhysicalDevice8BitStorageFeatures & operator=( VkPhysicalDevice8BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
43928     {
43929       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures const *>( &rhs );
43930       return *this;
43931     }
43932 
43933 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures43934     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice8BitStorageFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
43935     {
43936       pNext = pNext_;
43937       return *this;
43938     }
43939 
43940     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice8BitStorageFeatures &
setStorageBuffer8BitAccessVULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures43941       setStorageBuffer8BitAccess( VULKAN_HPP_NAMESPACE::Bool32 storageBuffer8BitAccess_ ) VULKAN_HPP_NOEXCEPT
43942     {
43943       storageBuffer8BitAccess = storageBuffer8BitAccess_;
43944       return *this;
43945     }
43946 
setUniformAndStorageBuffer8BitAccessVULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures43947     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice8BitStorageFeatures & setUniformAndStorageBuffer8BitAccess(
43948       VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer8BitAccess_ ) VULKAN_HPP_NOEXCEPT
43949     {
43950       uniformAndStorageBuffer8BitAccess = uniformAndStorageBuffer8BitAccess_;
43951       return *this;
43952     }
43953 
43954     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice8BitStorageFeatures &
setStoragePushConstant8VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures43955       setStoragePushConstant8( VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant8_ ) VULKAN_HPP_NOEXCEPT
43956     {
43957       storagePushConstant8 = storagePushConstant8_;
43958       return *this;
43959     }
43960 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
43961 
operator VkPhysicalDevice8BitStorageFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures43962     explicit operator VkPhysicalDevice8BitStorageFeatures const &() const VULKAN_HPP_NOEXCEPT
43963     {
43964       return *reinterpret_cast<const VkPhysicalDevice8BitStorageFeatures *>( this );
43965     }
43966 
operator VkPhysicalDevice8BitStorageFeatures&VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures43967     explicit operator VkPhysicalDevice8BitStorageFeatures &() VULKAN_HPP_NOEXCEPT
43968     {
43969       return *reinterpret_cast<VkPhysicalDevice8BitStorageFeatures *>( this );
43970     }
43971 
43972 #if 14 <= VULKAN_HPP_CPP_VERSION
43973     auto
43974 #else
43975     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
43976                void * const &,
43977                VULKAN_HPP_NAMESPACE::Bool32 const &,
43978                VULKAN_HPP_NAMESPACE::Bool32 const &,
43979                VULKAN_HPP_NAMESPACE::Bool32 const &>
43980 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures43981       reflect() const VULKAN_HPP_NOEXCEPT
43982     {
43983       return std::tie( sType, pNext, storageBuffer8BitAccess, uniformAndStorageBuffer8BitAccess, storagePushConstant8 );
43984     }
43985 
43986 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
43987     auto operator<=>( PhysicalDevice8BitStorageFeatures const & ) const = default;
43988 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures43989     bool operator==( PhysicalDevice8BitStorageFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
43990     {
43991       return this->reflect() == rhs.reflect();
43992     }
43993 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures43994     bool operator!=( PhysicalDevice8BitStorageFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
43995     {
43996       return this->reflect() != rhs.reflect();
43997     }
43998 #endif
43999 
44000   public:
44001     VULKAN_HPP_NAMESPACE::StructureType sType                   = StructureType::ePhysicalDevice8BitStorageFeatures;
44002     void *                              pNext                   = {};
44003     VULKAN_HPP_NAMESPACE::Bool32        storageBuffer8BitAccess = {};
44004     VULKAN_HPP_NAMESPACE::Bool32        uniformAndStorageBuffer8BitAccess = {};
44005     VULKAN_HPP_NAMESPACE::Bool32        storagePushConstant8              = {};
44006   };
44007   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures ) ==
44008                               sizeof( VkPhysicalDevice8BitStorageFeatures ),
44009                             "struct and wrapper have different size!" );
44010   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures>::value,
44011                             "struct wrapper is not a standard layout!" );
44012   VULKAN_HPP_STATIC_ASSERT(
44013     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures>::value,
44014     "PhysicalDevice8BitStorageFeatures is not nothrow_move_constructible!" );
44015 
44016   template <>
44017   struct CppType<StructureType, StructureType::ePhysicalDevice8BitStorageFeatures>
44018   {
44019     using Type = PhysicalDevice8BitStorageFeatures;
44020   };
44021   using PhysicalDevice8BitStorageFeaturesKHR = PhysicalDevice8BitStorageFeatures;
44022 
44023   struct PhysicalDeviceASTCDecodeFeaturesEXT
44024   {
44025     using NativeType = VkPhysicalDeviceASTCDecodeFeaturesEXT;
44026 
44027     static const bool                                  allowDuplicate = false;
44028     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
44029       StructureType::ePhysicalDeviceAstcDecodeFeaturesEXT;
44030 
44031 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceASTCDecodeFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT44032     VULKAN_HPP_CONSTEXPR PhysicalDeviceASTCDecodeFeaturesEXT(
44033       VULKAN_HPP_NAMESPACE::Bool32 decodeModeSharedExponent_ = {} ) VULKAN_HPP_NOEXCEPT
44034       : decodeModeSharedExponent( decodeModeSharedExponent_ )
44035     {}
44036 
44037     VULKAN_HPP_CONSTEXPR PhysicalDeviceASTCDecodeFeaturesEXT( PhysicalDeviceASTCDecodeFeaturesEXT const & rhs )
44038       VULKAN_HPP_NOEXCEPT = default;
44039 
PhysicalDeviceASTCDecodeFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT44040     PhysicalDeviceASTCDecodeFeaturesEXT( VkPhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
44041       : PhysicalDeviceASTCDecodeFeaturesEXT( *reinterpret_cast<PhysicalDeviceASTCDecodeFeaturesEXT const *>( &rhs ) )
44042     {}
44043 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
44044 
44045     PhysicalDeviceASTCDecodeFeaturesEXT &
44046       operator=( PhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44047 
44048     PhysicalDeviceASTCDecodeFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT44049       operator=( VkPhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
44050     {
44051       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT const *>( &rhs );
44052       return *this;
44053     }
44054 
44055 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT44056     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceASTCDecodeFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
44057     {
44058       pNext = pNext_;
44059       return *this;
44060     }
44061 
44062     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceASTCDecodeFeaturesEXT &
setDecodeModeSharedExponentVULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT44063       setDecodeModeSharedExponent( VULKAN_HPP_NAMESPACE::Bool32 decodeModeSharedExponent_ ) VULKAN_HPP_NOEXCEPT
44064     {
44065       decodeModeSharedExponent = decodeModeSharedExponent_;
44066       return *this;
44067     }
44068 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
44069 
operator VkPhysicalDeviceASTCDecodeFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT44070     explicit operator VkPhysicalDeviceASTCDecodeFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
44071     {
44072       return *reinterpret_cast<const VkPhysicalDeviceASTCDecodeFeaturesEXT *>( this );
44073     }
44074 
operator VkPhysicalDeviceASTCDecodeFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT44075     explicit operator VkPhysicalDeviceASTCDecodeFeaturesEXT &() VULKAN_HPP_NOEXCEPT
44076     {
44077       return *reinterpret_cast<VkPhysicalDeviceASTCDecodeFeaturesEXT *>( this );
44078     }
44079 
44080 #if 14 <= VULKAN_HPP_CPP_VERSION
44081     auto
44082 #else
44083     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
44084 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT44085       reflect() const VULKAN_HPP_NOEXCEPT
44086     {
44087       return std::tie( sType, pNext, decodeModeSharedExponent );
44088     }
44089 
44090 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
44091     auto operator<=>( PhysicalDeviceASTCDecodeFeaturesEXT const & ) const = default;
44092 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT44093     bool operator==( PhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
44094     {
44095       return this->reflect() == rhs.reflect();
44096     }
44097 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT44098     bool operator!=( PhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
44099     {
44100       return this->reflect() != rhs.reflect();
44101     }
44102 #endif
44103 
44104   public:
44105     VULKAN_HPP_NAMESPACE::StructureType sType                    = StructureType::ePhysicalDeviceAstcDecodeFeaturesEXT;
44106     void *                              pNext                    = {};
44107     VULKAN_HPP_NAMESPACE::Bool32        decodeModeSharedExponent = {};
44108   };
44109   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT ) ==
44110                               sizeof( VkPhysicalDeviceASTCDecodeFeaturesEXT ),
44111                             "struct and wrapper have different size!" );
44112   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT>::value,
44113                             "struct wrapper is not a standard layout!" );
44114   VULKAN_HPP_STATIC_ASSERT(
44115     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT>::value,
44116     "PhysicalDeviceASTCDecodeFeaturesEXT is not nothrow_move_constructible!" );
44117 
44118   template <>
44119   struct CppType<StructureType, StructureType::ePhysicalDeviceAstcDecodeFeaturesEXT>
44120   {
44121     using Type = PhysicalDeviceASTCDecodeFeaturesEXT;
44122   };
44123 
44124   struct PhysicalDeviceAccelerationStructureFeaturesKHR
44125   {
44126     using NativeType = VkPhysicalDeviceAccelerationStructureFeaturesKHR;
44127 
44128     static const bool                                  allowDuplicate = false;
44129     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
44130       StructureType::ePhysicalDeviceAccelerationStructureFeaturesKHR;
44131 
44132 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceAccelerationStructureFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR44133     VULKAN_HPP_CONSTEXPR PhysicalDeviceAccelerationStructureFeaturesKHR(
44134       VULKAN_HPP_NAMESPACE::Bool32 accelerationStructure_                                 = {},
44135       VULKAN_HPP_NAMESPACE::Bool32 accelerationStructureCaptureReplay_                    = {},
44136       VULKAN_HPP_NAMESPACE::Bool32 accelerationStructureIndirectBuild_                    = {},
44137       VULKAN_HPP_NAMESPACE::Bool32 accelerationStructureHostCommands_                     = {},
44138       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingAccelerationStructureUpdateAfterBind_ = {} ) VULKAN_HPP_NOEXCEPT
44139       : accelerationStructure( accelerationStructure_ )
44140       , accelerationStructureCaptureReplay( accelerationStructureCaptureReplay_ )
44141       , accelerationStructureIndirectBuild( accelerationStructureIndirectBuild_ )
44142       , accelerationStructureHostCommands( accelerationStructureHostCommands_ )
44143       , descriptorBindingAccelerationStructureUpdateAfterBind( descriptorBindingAccelerationStructureUpdateAfterBind_ )
44144     {}
44145 
44146     VULKAN_HPP_CONSTEXPR PhysicalDeviceAccelerationStructureFeaturesKHR(
44147       PhysicalDeviceAccelerationStructureFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44148 
PhysicalDeviceAccelerationStructureFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR44149     PhysicalDeviceAccelerationStructureFeaturesKHR( VkPhysicalDeviceAccelerationStructureFeaturesKHR const & rhs )
44150       VULKAN_HPP_NOEXCEPT
44151       : PhysicalDeviceAccelerationStructureFeaturesKHR(
44152           *reinterpret_cast<PhysicalDeviceAccelerationStructureFeaturesKHR const *>( &rhs ) )
44153     {}
44154 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
44155 
44156     PhysicalDeviceAccelerationStructureFeaturesKHR &
44157       operator=( PhysicalDeviceAccelerationStructureFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44158 
44159     PhysicalDeviceAccelerationStructureFeaturesKHR &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR44160       operator=( VkPhysicalDeviceAccelerationStructureFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
44161     {
44162       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR const *>( &rhs );
44163       return *this;
44164     }
44165 
44166 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
44167     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR44168                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
44169     {
44170       pNext = pNext_;
44171       return *this;
44172     }
44173 
44174     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR &
setAccelerationStructureVULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR44175       setAccelerationStructure( VULKAN_HPP_NAMESPACE::Bool32 accelerationStructure_ ) VULKAN_HPP_NOEXCEPT
44176     {
44177       accelerationStructure = accelerationStructure_;
44178       return *this;
44179     }
44180 
setAccelerationStructureCaptureReplayVULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR44181     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR & setAccelerationStructureCaptureReplay(
44182       VULKAN_HPP_NAMESPACE::Bool32 accelerationStructureCaptureReplay_ ) VULKAN_HPP_NOEXCEPT
44183     {
44184       accelerationStructureCaptureReplay = accelerationStructureCaptureReplay_;
44185       return *this;
44186     }
44187 
setAccelerationStructureIndirectBuildVULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR44188     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR & setAccelerationStructureIndirectBuild(
44189       VULKAN_HPP_NAMESPACE::Bool32 accelerationStructureIndirectBuild_ ) VULKAN_HPP_NOEXCEPT
44190     {
44191       accelerationStructureIndirectBuild = accelerationStructureIndirectBuild_;
44192       return *this;
44193     }
44194 
setAccelerationStructureHostCommandsVULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR44195     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR & setAccelerationStructureHostCommands(
44196       VULKAN_HPP_NAMESPACE::Bool32 accelerationStructureHostCommands_ ) VULKAN_HPP_NOEXCEPT
44197     {
44198       accelerationStructureHostCommands = accelerationStructureHostCommands_;
44199       return *this;
44200     }
44201 
44202     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR &
setDescriptorBindingAccelerationStructureUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR44203                             setDescriptorBindingAccelerationStructureUpdateAfterBind(
44204                               VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingAccelerationStructureUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
44205     {
44206       descriptorBindingAccelerationStructureUpdateAfterBind = descriptorBindingAccelerationStructureUpdateAfterBind_;
44207       return *this;
44208     }
44209 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
44210 
operator VkPhysicalDeviceAccelerationStructureFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR44211     explicit operator VkPhysicalDeviceAccelerationStructureFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
44212     {
44213       return *reinterpret_cast<const VkPhysicalDeviceAccelerationStructureFeaturesKHR *>( this );
44214     }
44215 
operator VkPhysicalDeviceAccelerationStructureFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR44216     explicit operator VkPhysicalDeviceAccelerationStructureFeaturesKHR &() VULKAN_HPP_NOEXCEPT
44217     {
44218       return *reinterpret_cast<VkPhysicalDeviceAccelerationStructureFeaturesKHR *>( this );
44219     }
44220 
44221 #if 14 <= VULKAN_HPP_CPP_VERSION
44222     auto
44223 #else
44224     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
44225                void * const &,
44226                VULKAN_HPP_NAMESPACE::Bool32 const &,
44227                VULKAN_HPP_NAMESPACE::Bool32 const &,
44228                VULKAN_HPP_NAMESPACE::Bool32 const &,
44229                VULKAN_HPP_NAMESPACE::Bool32 const &,
44230                VULKAN_HPP_NAMESPACE::Bool32 const &>
44231 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR44232       reflect() const VULKAN_HPP_NOEXCEPT
44233     {
44234       return std::tie( sType,
44235                        pNext,
44236                        accelerationStructure,
44237                        accelerationStructureCaptureReplay,
44238                        accelerationStructureIndirectBuild,
44239                        accelerationStructureHostCommands,
44240                        descriptorBindingAccelerationStructureUpdateAfterBind );
44241     }
44242 
44243 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
44244     auto operator<=>( PhysicalDeviceAccelerationStructureFeaturesKHR const & ) const = default;
44245 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR44246     bool operator==( PhysicalDeviceAccelerationStructureFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
44247     {
44248       return this->reflect() == rhs.reflect();
44249     }
44250 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR44251     bool operator!=( PhysicalDeviceAccelerationStructureFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
44252     {
44253       return this->reflect() != rhs.reflect();
44254     }
44255 #endif
44256 
44257   public:
44258     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceAccelerationStructureFeaturesKHR;
44259     void *                              pNext = {};
44260     VULKAN_HPP_NAMESPACE::Bool32        accelerationStructure                                 = {};
44261     VULKAN_HPP_NAMESPACE::Bool32        accelerationStructureCaptureReplay                    = {};
44262     VULKAN_HPP_NAMESPACE::Bool32        accelerationStructureIndirectBuild                    = {};
44263     VULKAN_HPP_NAMESPACE::Bool32        accelerationStructureHostCommands                     = {};
44264     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingAccelerationStructureUpdateAfterBind = {};
44265   };
44266   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR ) ==
44267                               sizeof( VkPhysicalDeviceAccelerationStructureFeaturesKHR ),
44268                             "struct and wrapper have different size!" );
44269   VULKAN_HPP_STATIC_ASSERT(
44270     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR>::value,
44271     "struct wrapper is not a standard layout!" );
44272   VULKAN_HPP_STATIC_ASSERT(
44273     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR>::value,
44274     "PhysicalDeviceAccelerationStructureFeaturesKHR is not nothrow_move_constructible!" );
44275 
44276   template <>
44277   struct CppType<StructureType, StructureType::ePhysicalDeviceAccelerationStructureFeaturesKHR>
44278   {
44279     using Type = PhysicalDeviceAccelerationStructureFeaturesKHR;
44280   };
44281 
44282   struct PhysicalDeviceAccelerationStructurePropertiesKHR
44283   {
44284     using NativeType = VkPhysicalDeviceAccelerationStructurePropertiesKHR;
44285 
44286     static const bool                                  allowDuplicate = false;
44287     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
44288       StructureType::ePhysicalDeviceAccelerationStructurePropertiesKHR;
44289 
44290 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceAccelerationStructurePropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructurePropertiesKHR44291     VULKAN_HPP_CONSTEXPR PhysicalDeviceAccelerationStructurePropertiesKHR(
44292       uint64_t maxGeometryCount_                                           = {},
44293       uint64_t maxInstanceCount_                                           = {},
44294       uint64_t maxPrimitiveCount_                                          = {},
44295       uint32_t maxPerStageDescriptorAccelerationStructures_                = {},
44296       uint32_t maxPerStageDescriptorUpdateAfterBindAccelerationStructures_ = {},
44297       uint32_t maxDescriptorSetAccelerationStructures_                     = {},
44298       uint32_t maxDescriptorSetUpdateAfterBindAccelerationStructures_      = {},
44299       uint32_t minAccelerationStructureScratchOffsetAlignment_             = {} ) VULKAN_HPP_NOEXCEPT
44300       : maxGeometryCount( maxGeometryCount_ )
44301       , maxInstanceCount( maxInstanceCount_ )
44302       , maxPrimitiveCount( maxPrimitiveCount_ )
44303       , maxPerStageDescriptorAccelerationStructures( maxPerStageDescriptorAccelerationStructures_ )
44304       , maxPerStageDescriptorUpdateAfterBindAccelerationStructures(
44305           maxPerStageDescriptorUpdateAfterBindAccelerationStructures_ )
44306       , maxDescriptorSetAccelerationStructures( maxDescriptorSetAccelerationStructures_ )
44307       , maxDescriptorSetUpdateAfterBindAccelerationStructures( maxDescriptorSetUpdateAfterBindAccelerationStructures_ )
44308       , minAccelerationStructureScratchOffsetAlignment( minAccelerationStructureScratchOffsetAlignment_ )
44309     {}
44310 
44311     VULKAN_HPP_CONSTEXPR PhysicalDeviceAccelerationStructurePropertiesKHR(
44312       PhysicalDeviceAccelerationStructurePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44313 
PhysicalDeviceAccelerationStructurePropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructurePropertiesKHR44314     PhysicalDeviceAccelerationStructurePropertiesKHR( VkPhysicalDeviceAccelerationStructurePropertiesKHR const & rhs )
44315       VULKAN_HPP_NOEXCEPT
44316       : PhysicalDeviceAccelerationStructurePropertiesKHR(
44317           *reinterpret_cast<PhysicalDeviceAccelerationStructurePropertiesKHR const *>( &rhs ) )
44318     {}
44319 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
44320 
44321     PhysicalDeviceAccelerationStructurePropertiesKHR &
44322       operator=( PhysicalDeviceAccelerationStructurePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44323 
44324     PhysicalDeviceAccelerationStructurePropertiesKHR &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructurePropertiesKHR44325       operator=( VkPhysicalDeviceAccelerationStructurePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
44326     {
44327       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructurePropertiesKHR const *>( &rhs );
44328       return *this;
44329     }
44330 
operator VkPhysicalDeviceAccelerationStructurePropertiesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructurePropertiesKHR44331     explicit operator VkPhysicalDeviceAccelerationStructurePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
44332     {
44333       return *reinterpret_cast<const VkPhysicalDeviceAccelerationStructurePropertiesKHR *>( this );
44334     }
44335 
operator VkPhysicalDeviceAccelerationStructurePropertiesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructurePropertiesKHR44336     explicit operator VkPhysicalDeviceAccelerationStructurePropertiesKHR &() VULKAN_HPP_NOEXCEPT
44337     {
44338       return *reinterpret_cast<VkPhysicalDeviceAccelerationStructurePropertiesKHR *>( this );
44339     }
44340 
44341 #if 14 <= VULKAN_HPP_CPP_VERSION
44342     auto
44343 #else
44344     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
44345                void * const &,
44346                uint64_t const &,
44347                uint64_t const &,
44348                uint64_t const &,
44349                uint32_t const &,
44350                uint32_t const &,
44351                uint32_t const &,
44352                uint32_t const &,
44353                uint32_t const &>
44354 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructurePropertiesKHR44355       reflect() const VULKAN_HPP_NOEXCEPT
44356     {
44357       return std::tie( sType,
44358                        pNext,
44359                        maxGeometryCount,
44360                        maxInstanceCount,
44361                        maxPrimitiveCount,
44362                        maxPerStageDescriptorAccelerationStructures,
44363                        maxPerStageDescriptorUpdateAfterBindAccelerationStructures,
44364                        maxDescriptorSetAccelerationStructures,
44365                        maxDescriptorSetUpdateAfterBindAccelerationStructures,
44366                        minAccelerationStructureScratchOffsetAlignment );
44367     }
44368 
44369 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
44370     auto operator<=>( PhysicalDeviceAccelerationStructurePropertiesKHR const & ) const = default;
44371 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructurePropertiesKHR44372     bool operator==( PhysicalDeviceAccelerationStructurePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
44373     {
44374       return this->reflect() == rhs.reflect();
44375     }
44376 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructurePropertiesKHR44377     bool operator!=( PhysicalDeviceAccelerationStructurePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
44378     {
44379       return this->reflect() != rhs.reflect();
44380     }
44381 #endif
44382 
44383   public:
44384     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceAccelerationStructurePropertiesKHR;
44385     void *                              pNext = {};
44386     uint64_t                            maxGeometryCount                                           = {};
44387     uint64_t                            maxInstanceCount                                           = {};
44388     uint64_t                            maxPrimitiveCount                                          = {};
44389     uint32_t                            maxPerStageDescriptorAccelerationStructures                = {};
44390     uint32_t                            maxPerStageDescriptorUpdateAfterBindAccelerationStructures = {};
44391     uint32_t                            maxDescriptorSetAccelerationStructures                     = {};
44392     uint32_t                            maxDescriptorSetUpdateAfterBindAccelerationStructures      = {};
44393     uint32_t                            minAccelerationStructureScratchOffsetAlignment             = {};
44394   };
44395   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructurePropertiesKHR ) ==
44396                               sizeof( VkPhysicalDeviceAccelerationStructurePropertiesKHR ),
44397                             "struct and wrapper have different size!" );
44398   VULKAN_HPP_STATIC_ASSERT(
44399     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructurePropertiesKHR>::value,
44400     "struct wrapper is not a standard layout!" );
44401   VULKAN_HPP_STATIC_ASSERT(
44402     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructurePropertiesKHR>::value,
44403     "PhysicalDeviceAccelerationStructurePropertiesKHR is not nothrow_move_constructible!" );
44404 
44405   template <>
44406   struct CppType<StructureType, StructureType::ePhysicalDeviceAccelerationStructurePropertiesKHR>
44407   {
44408     using Type = PhysicalDeviceAccelerationStructurePropertiesKHR;
44409   };
44410 
44411   struct PhysicalDeviceBlendOperationAdvancedFeaturesEXT
44412   {
44413     using NativeType = VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT;
44414 
44415     static const bool                                  allowDuplicate = false;
44416     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
44417       StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT;
44418 
44419 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceBlendOperationAdvancedFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT44420     VULKAN_HPP_CONSTEXPR PhysicalDeviceBlendOperationAdvancedFeaturesEXT(
44421       VULKAN_HPP_NAMESPACE::Bool32 advancedBlendCoherentOperations_ = {} ) VULKAN_HPP_NOEXCEPT
44422       : advancedBlendCoherentOperations( advancedBlendCoherentOperations_ )
44423     {}
44424 
44425     VULKAN_HPP_CONSTEXPR PhysicalDeviceBlendOperationAdvancedFeaturesEXT(
44426       PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44427 
PhysicalDeviceBlendOperationAdvancedFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT44428     PhysicalDeviceBlendOperationAdvancedFeaturesEXT( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs )
44429       VULKAN_HPP_NOEXCEPT
44430       : PhysicalDeviceBlendOperationAdvancedFeaturesEXT(
44431           *reinterpret_cast<PhysicalDeviceBlendOperationAdvancedFeaturesEXT const *>( &rhs ) )
44432     {}
44433 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
44434 
44435     PhysicalDeviceBlendOperationAdvancedFeaturesEXT &
44436       operator=( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44437 
44438     PhysicalDeviceBlendOperationAdvancedFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT44439       operator=( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
44440     {
44441       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT const *>( &rhs );
44442       return *this;
44443     }
44444 
44445 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
44446     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBlendOperationAdvancedFeaturesEXT &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT44447                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
44448     {
44449       pNext = pNext_;
44450       return *this;
44451     }
44452 
setAdvancedBlendCoherentOperationsVULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT44453     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBlendOperationAdvancedFeaturesEXT & setAdvancedBlendCoherentOperations(
44454       VULKAN_HPP_NAMESPACE::Bool32 advancedBlendCoherentOperations_ ) VULKAN_HPP_NOEXCEPT
44455     {
44456       advancedBlendCoherentOperations = advancedBlendCoherentOperations_;
44457       return *this;
44458     }
44459 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
44460 
operator VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT44461     explicit operator VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
44462     {
44463       return *reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT *>( this );
44464     }
44465 
operator VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT44466     explicit operator VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT &() VULKAN_HPP_NOEXCEPT
44467     {
44468       return *reinterpret_cast<VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT *>( this );
44469     }
44470 
44471 #if 14 <= VULKAN_HPP_CPP_VERSION
44472     auto
44473 #else
44474     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
44475 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT44476       reflect() const VULKAN_HPP_NOEXCEPT
44477     {
44478       return std::tie( sType, pNext, advancedBlendCoherentOperations );
44479     }
44480 
44481 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
44482     auto operator<=>( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & ) const = default;
44483 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT44484     bool operator==( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
44485     {
44486       return this->reflect() == rhs.reflect();
44487     }
44488 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT44489     bool operator!=( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
44490     {
44491       return this->reflect() != rhs.reflect();
44492     }
44493 #endif
44494 
44495   public:
44496     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT;
44497     void *                              pNext = {};
44498     VULKAN_HPP_NAMESPACE::Bool32        advancedBlendCoherentOperations = {};
44499   };
44500   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) ==
44501                               sizeof( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT ),
44502                             "struct and wrapper have different size!" );
44503   VULKAN_HPP_STATIC_ASSERT(
44504     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT>::value,
44505     "struct wrapper is not a standard layout!" );
44506   VULKAN_HPP_STATIC_ASSERT(
44507     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT>::value,
44508     "PhysicalDeviceBlendOperationAdvancedFeaturesEXT is not nothrow_move_constructible!" );
44509 
44510   template <>
44511   struct CppType<StructureType, StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT>
44512   {
44513     using Type = PhysicalDeviceBlendOperationAdvancedFeaturesEXT;
44514   };
44515 
44516   struct PhysicalDeviceBlendOperationAdvancedPropertiesEXT
44517   {
44518     using NativeType = VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT;
44519 
44520     static const bool                                  allowDuplicate = false;
44521     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
44522       StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT;
44523 
44524 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceBlendOperationAdvancedPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT44525     VULKAN_HPP_CONSTEXPR PhysicalDeviceBlendOperationAdvancedPropertiesEXT(
44526       uint32_t                     advancedBlendMaxColorAttachments_      = {},
44527       VULKAN_HPP_NAMESPACE::Bool32 advancedBlendIndependentBlend_         = {},
44528       VULKAN_HPP_NAMESPACE::Bool32 advancedBlendNonPremultipliedSrcColor_ = {},
44529       VULKAN_HPP_NAMESPACE::Bool32 advancedBlendNonPremultipliedDstColor_ = {},
44530       VULKAN_HPP_NAMESPACE::Bool32 advancedBlendCorrelatedOverlap_        = {},
44531       VULKAN_HPP_NAMESPACE::Bool32 advancedBlendAllOperations_            = {} ) VULKAN_HPP_NOEXCEPT
44532       : advancedBlendMaxColorAttachments( advancedBlendMaxColorAttachments_ )
44533       , advancedBlendIndependentBlend( advancedBlendIndependentBlend_ )
44534       , advancedBlendNonPremultipliedSrcColor( advancedBlendNonPremultipliedSrcColor_ )
44535       , advancedBlendNonPremultipliedDstColor( advancedBlendNonPremultipliedDstColor_ )
44536       , advancedBlendCorrelatedOverlap( advancedBlendCorrelatedOverlap_ )
44537       , advancedBlendAllOperations( advancedBlendAllOperations_ )
44538     {}
44539 
44540     VULKAN_HPP_CONSTEXPR PhysicalDeviceBlendOperationAdvancedPropertiesEXT(
44541       PhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44542 
PhysicalDeviceBlendOperationAdvancedPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT44543     PhysicalDeviceBlendOperationAdvancedPropertiesEXT( VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs )
44544       VULKAN_HPP_NOEXCEPT
44545       : PhysicalDeviceBlendOperationAdvancedPropertiesEXT(
44546           *reinterpret_cast<PhysicalDeviceBlendOperationAdvancedPropertiesEXT const *>( &rhs ) )
44547     {}
44548 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
44549 
44550     PhysicalDeviceBlendOperationAdvancedPropertiesEXT &
44551       operator=( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44552 
44553     PhysicalDeviceBlendOperationAdvancedPropertiesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT44554       operator=( VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
44555     {
44556       *this =
44557         *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT const *>( &rhs );
44558       return *this;
44559     }
44560 
operator VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT44561     explicit operator VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
44562     {
44563       return *reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT *>( this );
44564     }
44565 
operator VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT44566     explicit operator VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT &() VULKAN_HPP_NOEXCEPT
44567     {
44568       return *reinterpret_cast<VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT *>( this );
44569     }
44570 
44571 #if 14 <= VULKAN_HPP_CPP_VERSION
44572     auto
44573 #else
44574     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
44575                void * const &,
44576                uint32_t const &,
44577                VULKAN_HPP_NAMESPACE::Bool32 const &,
44578                VULKAN_HPP_NAMESPACE::Bool32 const &,
44579                VULKAN_HPP_NAMESPACE::Bool32 const &,
44580                VULKAN_HPP_NAMESPACE::Bool32 const &,
44581                VULKAN_HPP_NAMESPACE::Bool32 const &>
44582 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT44583       reflect() const VULKAN_HPP_NOEXCEPT
44584     {
44585       return std::tie( sType,
44586                        pNext,
44587                        advancedBlendMaxColorAttachments,
44588                        advancedBlendIndependentBlend,
44589                        advancedBlendNonPremultipliedSrcColor,
44590                        advancedBlendNonPremultipliedDstColor,
44591                        advancedBlendCorrelatedOverlap,
44592                        advancedBlendAllOperations );
44593     }
44594 
44595 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
44596     auto operator<=>( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const & ) const = default;
44597 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT44598     bool operator==( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
44599     {
44600       return this->reflect() == rhs.reflect();
44601     }
44602 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT44603     bool operator!=( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
44604     {
44605       return this->reflect() != rhs.reflect();
44606     }
44607 #endif
44608 
44609   public:
44610     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT;
44611     void *                              pNext = {};
44612     uint32_t                            advancedBlendMaxColorAttachments      = {};
44613     VULKAN_HPP_NAMESPACE::Bool32        advancedBlendIndependentBlend         = {};
44614     VULKAN_HPP_NAMESPACE::Bool32        advancedBlendNonPremultipliedSrcColor = {};
44615     VULKAN_HPP_NAMESPACE::Bool32        advancedBlendNonPremultipliedDstColor = {};
44616     VULKAN_HPP_NAMESPACE::Bool32        advancedBlendCorrelatedOverlap        = {};
44617     VULKAN_HPP_NAMESPACE::Bool32        advancedBlendAllOperations            = {};
44618   };
44619   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT ) ==
44620                               sizeof( VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT ),
44621                             "struct and wrapper have different size!" );
44622   VULKAN_HPP_STATIC_ASSERT(
44623     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT>::value,
44624     "struct wrapper is not a standard layout!" );
44625   VULKAN_HPP_STATIC_ASSERT(
44626     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT>::value,
44627     "PhysicalDeviceBlendOperationAdvancedPropertiesEXT is not nothrow_move_constructible!" );
44628 
44629   template <>
44630   struct CppType<StructureType, StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT>
44631   {
44632     using Type = PhysicalDeviceBlendOperationAdvancedPropertiesEXT;
44633   };
44634 
44635   struct PhysicalDeviceBorderColorSwizzleFeaturesEXT
44636   {
44637     using NativeType = VkPhysicalDeviceBorderColorSwizzleFeaturesEXT;
44638 
44639     static const bool                                  allowDuplicate = false;
44640     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
44641       StructureType::ePhysicalDeviceBorderColorSwizzleFeaturesEXT;
44642 
44643 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceBorderColorSwizzleFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT44644     VULKAN_HPP_CONSTEXPR PhysicalDeviceBorderColorSwizzleFeaturesEXT(
44645       VULKAN_HPP_NAMESPACE::Bool32 borderColorSwizzle_          = {},
44646       VULKAN_HPP_NAMESPACE::Bool32 borderColorSwizzleFromImage_ = {} ) VULKAN_HPP_NOEXCEPT
44647       : borderColorSwizzle( borderColorSwizzle_ )
44648       , borderColorSwizzleFromImage( borderColorSwizzleFromImage_ )
44649     {}
44650 
44651     VULKAN_HPP_CONSTEXPR PhysicalDeviceBorderColorSwizzleFeaturesEXT(
44652       PhysicalDeviceBorderColorSwizzleFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44653 
PhysicalDeviceBorderColorSwizzleFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT44654     PhysicalDeviceBorderColorSwizzleFeaturesEXT( VkPhysicalDeviceBorderColorSwizzleFeaturesEXT const & rhs )
44655       VULKAN_HPP_NOEXCEPT
44656       : PhysicalDeviceBorderColorSwizzleFeaturesEXT(
44657           *reinterpret_cast<PhysicalDeviceBorderColorSwizzleFeaturesEXT const *>( &rhs ) )
44658     {}
44659 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
44660 
44661     PhysicalDeviceBorderColorSwizzleFeaturesEXT &
44662       operator=( PhysicalDeviceBorderColorSwizzleFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44663 
44664     PhysicalDeviceBorderColorSwizzleFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT44665       operator=( VkPhysicalDeviceBorderColorSwizzleFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
44666     {
44667       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT const *>( &rhs );
44668       return *this;
44669     }
44670 
44671 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT44672     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBorderColorSwizzleFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
44673     {
44674       pNext = pNext_;
44675       return *this;
44676     }
44677 
44678     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBorderColorSwizzleFeaturesEXT &
setBorderColorSwizzleVULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT44679       setBorderColorSwizzle( VULKAN_HPP_NAMESPACE::Bool32 borderColorSwizzle_ ) VULKAN_HPP_NOEXCEPT
44680     {
44681       borderColorSwizzle = borderColorSwizzle_;
44682       return *this;
44683     }
44684 
44685     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBorderColorSwizzleFeaturesEXT &
setBorderColorSwizzleFromImageVULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT44686       setBorderColorSwizzleFromImage( VULKAN_HPP_NAMESPACE::Bool32 borderColorSwizzleFromImage_ ) VULKAN_HPP_NOEXCEPT
44687     {
44688       borderColorSwizzleFromImage = borderColorSwizzleFromImage_;
44689       return *this;
44690     }
44691 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
44692 
operator VkPhysicalDeviceBorderColorSwizzleFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT44693     explicit operator VkPhysicalDeviceBorderColorSwizzleFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
44694     {
44695       return *reinterpret_cast<const VkPhysicalDeviceBorderColorSwizzleFeaturesEXT *>( this );
44696     }
44697 
operator VkPhysicalDeviceBorderColorSwizzleFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT44698     explicit operator VkPhysicalDeviceBorderColorSwizzleFeaturesEXT &() VULKAN_HPP_NOEXCEPT
44699     {
44700       return *reinterpret_cast<VkPhysicalDeviceBorderColorSwizzleFeaturesEXT *>( this );
44701     }
44702 
44703 #if 14 <= VULKAN_HPP_CPP_VERSION
44704     auto
44705 #else
44706     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
44707                void * const &,
44708                VULKAN_HPP_NAMESPACE::Bool32 const &,
44709                VULKAN_HPP_NAMESPACE::Bool32 const &>
44710 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT44711       reflect() const VULKAN_HPP_NOEXCEPT
44712     {
44713       return std::tie( sType, pNext, borderColorSwizzle, borderColorSwizzleFromImage );
44714     }
44715 
44716 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
44717     auto operator<=>( PhysicalDeviceBorderColorSwizzleFeaturesEXT const & ) const = default;
44718 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT44719     bool operator==( PhysicalDeviceBorderColorSwizzleFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
44720     {
44721       return this->reflect() == rhs.reflect();
44722     }
44723 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT44724     bool operator!=( PhysicalDeviceBorderColorSwizzleFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
44725     {
44726       return this->reflect() != rhs.reflect();
44727     }
44728 #endif
44729 
44730   public:
44731     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceBorderColorSwizzleFeaturesEXT;
44732     void *                              pNext = {};
44733     VULKAN_HPP_NAMESPACE::Bool32        borderColorSwizzle          = {};
44734     VULKAN_HPP_NAMESPACE::Bool32        borderColorSwizzleFromImage = {};
44735   };
44736   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT ) ==
44737                               sizeof( VkPhysicalDeviceBorderColorSwizzleFeaturesEXT ),
44738                             "struct and wrapper have different size!" );
44739   VULKAN_HPP_STATIC_ASSERT(
44740     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT>::value,
44741     "struct wrapper is not a standard layout!" );
44742   VULKAN_HPP_STATIC_ASSERT(
44743     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT>::value,
44744     "PhysicalDeviceBorderColorSwizzleFeaturesEXT is not nothrow_move_constructible!" );
44745 
44746   template <>
44747   struct CppType<StructureType, StructureType::ePhysicalDeviceBorderColorSwizzleFeaturesEXT>
44748   {
44749     using Type = PhysicalDeviceBorderColorSwizzleFeaturesEXT;
44750   };
44751 
44752   struct PhysicalDeviceBufferDeviceAddressFeatures
44753   {
44754     using NativeType = VkPhysicalDeviceBufferDeviceAddressFeatures;
44755 
44756     static const bool                                  allowDuplicate = false;
44757     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
44758       StructureType::ePhysicalDeviceBufferDeviceAddressFeatures;
44759 
44760 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceBufferDeviceAddressFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures44761     VULKAN_HPP_CONSTEXPR PhysicalDeviceBufferDeviceAddressFeatures(
44762       VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress_              = {},
44763       VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay_ = {},
44764       VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice_   = {} ) VULKAN_HPP_NOEXCEPT
44765       : bufferDeviceAddress( bufferDeviceAddress_ )
44766       , bufferDeviceAddressCaptureReplay( bufferDeviceAddressCaptureReplay_ )
44767       , bufferDeviceAddressMultiDevice( bufferDeviceAddressMultiDevice_ )
44768     {}
44769 
44770     VULKAN_HPP_CONSTEXPR PhysicalDeviceBufferDeviceAddressFeatures(
44771       PhysicalDeviceBufferDeviceAddressFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44772 
PhysicalDeviceBufferDeviceAddressFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures44773     PhysicalDeviceBufferDeviceAddressFeatures( VkPhysicalDeviceBufferDeviceAddressFeatures const & rhs )
44774       VULKAN_HPP_NOEXCEPT
44775       : PhysicalDeviceBufferDeviceAddressFeatures(
44776           *reinterpret_cast<PhysicalDeviceBufferDeviceAddressFeatures const *>( &rhs ) )
44777     {}
44778 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
44779 
44780     PhysicalDeviceBufferDeviceAddressFeatures &
44781       operator=( PhysicalDeviceBufferDeviceAddressFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44782 
44783     PhysicalDeviceBufferDeviceAddressFeatures &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures44784       operator=( VkPhysicalDeviceBufferDeviceAddressFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
44785     {
44786       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures const *>( &rhs );
44787       return *this;
44788     }
44789 
44790 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures44791     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
44792     {
44793       pNext = pNext_;
44794       return *this;
44795     }
44796 
44797     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeatures &
setBufferDeviceAddressVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures44798       setBufferDeviceAddress( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress_ ) VULKAN_HPP_NOEXCEPT
44799     {
44800       bufferDeviceAddress = bufferDeviceAddress_;
44801       return *this;
44802     }
44803 
setBufferDeviceAddressCaptureReplayVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures44804     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeatures & setBufferDeviceAddressCaptureReplay(
44805       VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay_ ) VULKAN_HPP_NOEXCEPT
44806     {
44807       bufferDeviceAddressCaptureReplay = bufferDeviceAddressCaptureReplay_;
44808       return *this;
44809     }
44810 
setBufferDeviceAddressMultiDeviceVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures44811     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeatures & setBufferDeviceAddressMultiDevice(
44812       VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice_ ) VULKAN_HPP_NOEXCEPT
44813     {
44814       bufferDeviceAddressMultiDevice = bufferDeviceAddressMultiDevice_;
44815       return *this;
44816     }
44817 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
44818 
operator VkPhysicalDeviceBufferDeviceAddressFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures44819     explicit operator VkPhysicalDeviceBufferDeviceAddressFeatures const &() const VULKAN_HPP_NOEXCEPT
44820     {
44821       return *reinterpret_cast<const VkPhysicalDeviceBufferDeviceAddressFeatures *>( this );
44822     }
44823 
operator VkPhysicalDeviceBufferDeviceAddressFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures44824     explicit operator VkPhysicalDeviceBufferDeviceAddressFeatures &() VULKAN_HPP_NOEXCEPT
44825     {
44826       return *reinterpret_cast<VkPhysicalDeviceBufferDeviceAddressFeatures *>( this );
44827     }
44828 
44829 #if 14 <= VULKAN_HPP_CPP_VERSION
44830     auto
44831 #else
44832     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
44833                void * const &,
44834                VULKAN_HPP_NAMESPACE::Bool32 const &,
44835                VULKAN_HPP_NAMESPACE::Bool32 const &,
44836                VULKAN_HPP_NAMESPACE::Bool32 const &>
44837 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures44838       reflect() const VULKAN_HPP_NOEXCEPT
44839     {
44840       return std::tie(
44841         sType, pNext, bufferDeviceAddress, bufferDeviceAddressCaptureReplay, bufferDeviceAddressMultiDevice );
44842     }
44843 
44844 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
44845     auto operator<=>( PhysicalDeviceBufferDeviceAddressFeatures const & ) const = default;
44846 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures44847     bool operator==( PhysicalDeviceBufferDeviceAddressFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
44848     {
44849       return this->reflect() == rhs.reflect();
44850     }
44851 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures44852     bool operator!=( PhysicalDeviceBufferDeviceAddressFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
44853     {
44854       return this->reflect() != rhs.reflect();
44855     }
44856 #endif
44857 
44858   public:
44859     VULKAN_HPP_NAMESPACE::StructureType sType               = StructureType::ePhysicalDeviceBufferDeviceAddressFeatures;
44860     void *                              pNext               = {};
44861     VULKAN_HPP_NAMESPACE::Bool32        bufferDeviceAddress = {};
44862     VULKAN_HPP_NAMESPACE::Bool32        bufferDeviceAddressCaptureReplay = {};
44863     VULKAN_HPP_NAMESPACE::Bool32        bufferDeviceAddressMultiDevice   = {};
44864   };
44865   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures ) ==
44866                               sizeof( VkPhysicalDeviceBufferDeviceAddressFeatures ),
44867                             "struct and wrapper have different size!" );
44868   VULKAN_HPP_STATIC_ASSERT(
44869     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures>::value,
44870     "struct wrapper is not a standard layout!" );
44871   VULKAN_HPP_STATIC_ASSERT(
44872     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures>::value,
44873     "PhysicalDeviceBufferDeviceAddressFeatures is not nothrow_move_constructible!" );
44874 
44875   template <>
44876   struct CppType<StructureType, StructureType::ePhysicalDeviceBufferDeviceAddressFeatures>
44877   {
44878     using Type = PhysicalDeviceBufferDeviceAddressFeatures;
44879   };
44880   using PhysicalDeviceBufferDeviceAddressFeaturesKHR = PhysicalDeviceBufferDeviceAddressFeatures;
44881 
44882   struct PhysicalDeviceBufferDeviceAddressFeaturesEXT
44883   {
44884     using NativeType = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT;
44885 
44886     static const bool                                  allowDuplicate = false;
44887     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
44888       StructureType::ePhysicalDeviceBufferDeviceAddressFeaturesEXT;
44889 
44890 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceBufferDeviceAddressFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT44891     VULKAN_HPP_CONSTEXPR PhysicalDeviceBufferDeviceAddressFeaturesEXT(
44892       VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress_              = {},
44893       VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay_ = {},
44894       VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice_   = {} ) VULKAN_HPP_NOEXCEPT
44895       : bufferDeviceAddress( bufferDeviceAddress_ )
44896       , bufferDeviceAddressCaptureReplay( bufferDeviceAddressCaptureReplay_ )
44897       , bufferDeviceAddressMultiDevice( bufferDeviceAddressMultiDevice_ )
44898     {}
44899 
44900     VULKAN_HPP_CONSTEXPR PhysicalDeviceBufferDeviceAddressFeaturesEXT(
44901       PhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44902 
PhysicalDeviceBufferDeviceAddressFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT44903     PhysicalDeviceBufferDeviceAddressFeaturesEXT( VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs )
44904       VULKAN_HPP_NOEXCEPT
44905       : PhysicalDeviceBufferDeviceAddressFeaturesEXT(
44906           *reinterpret_cast<PhysicalDeviceBufferDeviceAddressFeaturesEXT const *>( &rhs ) )
44907     {}
44908 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
44909 
44910     PhysicalDeviceBufferDeviceAddressFeaturesEXT &
44911       operator=( PhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44912 
44913     PhysicalDeviceBufferDeviceAddressFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT44914       operator=( VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
44915     {
44916       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT const *>( &rhs );
44917       return *this;
44918     }
44919 
44920 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT44921     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
44922     {
44923       pNext = pNext_;
44924       return *this;
44925     }
44926 
44927     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeaturesEXT &
setBufferDeviceAddressVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT44928       setBufferDeviceAddress( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress_ ) VULKAN_HPP_NOEXCEPT
44929     {
44930       bufferDeviceAddress = bufferDeviceAddress_;
44931       return *this;
44932     }
44933 
setBufferDeviceAddressCaptureReplayVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT44934     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeaturesEXT & setBufferDeviceAddressCaptureReplay(
44935       VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay_ ) VULKAN_HPP_NOEXCEPT
44936     {
44937       bufferDeviceAddressCaptureReplay = bufferDeviceAddressCaptureReplay_;
44938       return *this;
44939     }
44940 
setBufferDeviceAddressMultiDeviceVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT44941     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeaturesEXT & setBufferDeviceAddressMultiDevice(
44942       VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice_ ) VULKAN_HPP_NOEXCEPT
44943     {
44944       bufferDeviceAddressMultiDevice = bufferDeviceAddressMultiDevice_;
44945       return *this;
44946     }
44947 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
44948 
operator VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT44949     explicit operator VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
44950     {
44951       return *reinterpret_cast<const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT *>( this );
44952     }
44953 
operator VkPhysicalDeviceBufferDeviceAddressFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT44954     explicit operator VkPhysicalDeviceBufferDeviceAddressFeaturesEXT &() VULKAN_HPP_NOEXCEPT
44955     {
44956       return *reinterpret_cast<VkPhysicalDeviceBufferDeviceAddressFeaturesEXT *>( this );
44957     }
44958 
44959 #if 14 <= VULKAN_HPP_CPP_VERSION
44960     auto
44961 #else
44962     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
44963                void * const &,
44964                VULKAN_HPP_NAMESPACE::Bool32 const &,
44965                VULKAN_HPP_NAMESPACE::Bool32 const &,
44966                VULKAN_HPP_NAMESPACE::Bool32 const &>
44967 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT44968       reflect() const VULKAN_HPP_NOEXCEPT
44969     {
44970       return std::tie(
44971         sType, pNext, bufferDeviceAddress, bufferDeviceAddressCaptureReplay, bufferDeviceAddressMultiDevice );
44972     }
44973 
44974 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
44975     auto operator<=>( PhysicalDeviceBufferDeviceAddressFeaturesEXT const & ) const = default;
44976 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT44977     bool operator==( PhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
44978     {
44979       return this->reflect() == rhs.reflect();
44980     }
44981 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT44982     bool operator!=( PhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
44983     {
44984       return this->reflect() != rhs.reflect();
44985     }
44986 #endif
44987 
44988   public:
44989     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceBufferDeviceAddressFeaturesEXT;
44990     void *                              pNext = {};
44991     VULKAN_HPP_NAMESPACE::Bool32        bufferDeviceAddress              = {};
44992     VULKAN_HPP_NAMESPACE::Bool32        bufferDeviceAddressCaptureReplay = {};
44993     VULKAN_HPP_NAMESPACE::Bool32        bufferDeviceAddressMultiDevice   = {};
44994   };
44995   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT ) ==
44996                               sizeof( VkPhysicalDeviceBufferDeviceAddressFeaturesEXT ),
44997                             "struct and wrapper have different size!" );
44998   VULKAN_HPP_STATIC_ASSERT(
44999     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT>::value,
45000     "struct wrapper is not a standard layout!" );
45001   VULKAN_HPP_STATIC_ASSERT(
45002     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT>::value,
45003     "PhysicalDeviceBufferDeviceAddressFeaturesEXT is not nothrow_move_constructible!" );
45004 
45005   template <>
45006   struct CppType<StructureType, StructureType::ePhysicalDeviceBufferDeviceAddressFeaturesEXT>
45007   {
45008     using Type = PhysicalDeviceBufferDeviceAddressFeaturesEXT;
45009   };
45010   using PhysicalDeviceBufferAddressFeaturesEXT = PhysicalDeviceBufferDeviceAddressFeaturesEXT;
45011 
45012   struct PhysicalDeviceCoherentMemoryFeaturesAMD
45013   {
45014     using NativeType = VkPhysicalDeviceCoherentMemoryFeaturesAMD;
45015 
45016     static const bool                                  allowDuplicate = false;
45017     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
45018       StructureType::ePhysicalDeviceCoherentMemoryFeaturesAMD;
45019 
45020 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCoherentMemoryFeaturesAMDVULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD45021     VULKAN_HPP_CONSTEXPR PhysicalDeviceCoherentMemoryFeaturesAMD(
45022       VULKAN_HPP_NAMESPACE::Bool32 deviceCoherentMemory_ = {} ) VULKAN_HPP_NOEXCEPT
45023       : deviceCoherentMemory( deviceCoherentMemory_ )
45024     {}
45025 
45026     VULKAN_HPP_CONSTEXPR PhysicalDeviceCoherentMemoryFeaturesAMD( PhysicalDeviceCoherentMemoryFeaturesAMD const & rhs )
45027       VULKAN_HPP_NOEXCEPT = default;
45028 
PhysicalDeviceCoherentMemoryFeaturesAMDVULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD45029     PhysicalDeviceCoherentMemoryFeaturesAMD( VkPhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
45030       : PhysicalDeviceCoherentMemoryFeaturesAMD(
45031           *reinterpret_cast<PhysicalDeviceCoherentMemoryFeaturesAMD const *>( &rhs ) )
45032     {}
45033 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
45034 
45035     PhysicalDeviceCoherentMemoryFeaturesAMD &
45036       operator=( PhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45037 
45038     PhysicalDeviceCoherentMemoryFeaturesAMD &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD45039       operator=( VkPhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
45040     {
45041       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD const *>( &rhs );
45042       return *this;
45043     }
45044 
45045 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD45046     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCoherentMemoryFeaturesAMD & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
45047     {
45048       pNext = pNext_;
45049       return *this;
45050     }
45051 
45052     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCoherentMemoryFeaturesAMD &
setDeviceCoherentMemoryVULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD45053       setDeviceCoherentMemory( VULKAN_HPP_NAMESPACE::Bool32 deviceCoherentMemory_ ) VULKAN_HPP_NOEXCEPT
45054     {
45055       deviceCoherentMemory = deviceCoherentMemory_;
45056       return *this;
45057     }
45058 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
45059 
operator VkPhysicalDeviceCoherentMemoryFeaturesAMD const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD45060     explicit operator VkPhysicalDeviceCoherentMemoryFeaturesAMD const &() const VULKAN_HPP_NOEXCEPT
45061     {
45062       return *reinterpret_cast<const VkPhysicalDeviceCoherentMemoryFeaturesAMD *>( this );
45063     }
45064 
operator VkPhysicalDeviceCoherentMemoryFeaturesAMD&VULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD45065     explicit operator VkPhysicalDeviceCoherentMemoryFeaturesAMD &() VULKAN_HPP_NOEXCEPT
45066     {
45067       return *reinterpret_cast<VkPhysicalDeviceCoherentMemoryFeaturesAMD *>( this );
45068     }
45069 
45070 #if 14 <= VULKAN_HPP_CPP_VERSION
45071     auto
45072 #else
45073     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
45074 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD45075       reflect() const VULKAN_HPP_NOEXCEPT
45076     {
45077       return std::tie( sType, pNext, deviceCoherentMemory );
45078     }
45079 
45080 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
45081     auto operator<=>( PhysicalDeviceCoherentMemoryFeaturesAMD const & ) const = default;
45082 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD45083     bool operator==( PhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
45084     {
45085       return this->reflect() == rhs.reflect();
45086     }
45087 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD45088     bool operator!=( PhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
45089     {
45090       return this->reflect() != rhs.reflect();
45091     }
45092 #endif
45093 
45094   public:
45095     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::ePhysicalDeviceCoherentMemoryFeaturesAMD;
45096     void *                              pNext                = {};
45097     VULKAN_HPP_NAMESPACE::Bool32        deviceCoherentMemory = {};
45098   };
45099   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD ) ==
45100                               sizeof( VkPhysicalDeviceCoherentMemoryFeaturesAMD ),
45101                             "struct and wrapper have different size!" );
45102   VULKAN_HPP_STATIC_ASSERT(
45103     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD>::value,
45104     "struct wrapper is not a standard layout!" );
45105   VULKAN_HPP_STATIC_ASSERT(
45106     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD>::value,
45107     "PhysicalDeviceCoherentMemoryFeaturesAMD is not nothrow_move_constructible!" );
45108 
45109   template <>
45110   struct CppType<StructureType, StructureType::ePhysicalDeviceCoherentMemoryFeaturesAMD>
45111   {
45112     using Type = PhysicalDeviceCoherentMemoryFeaturesAMD;
45113   };
45114 
45115   struct PhysicalDeviceColorWriteEnableFeaturesEXT
45116   {
45117     using NativeType = VkPhysicalDeviceColorWriteEnableFeaturesEXT;
45118 
45119     static const bool                                  allowDuplicate = false;
45120     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
45121       StructureType::ePhysicalDeviceColorWriteEnableFeaturesEXT;
45122 
45123 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceColorWriteEnableFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT45124     VULKAN_HPP_CONSTEXPR PhysicalDeviceColorWriteEnableFeaturesEXT(
45125       VULKAN_HPP_NAMESPACE::Bool32 colorWriteEnable_ = {} ) VULKAN_HPP_NOEXCEPT : colorWriteEnable( colorWriteEnable_ )
45126     {}
45127 
45128     VULKAN_HPP_CONSTEXPR PhysicalDeviceColorWriteEnableFeaturesEXT(
45129       PhysicalDeviceColorWriteEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45130 
PhysicalDeviceColorWriteEnableFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT45131     PhysicalDeviceColorWriteEnableFeaturesEXT( VkPhysicalDeviceColorWriteEnableFeaturesEXT const & rhs )
45132       VULKAN_HPP_NOEXCEPT
45133       : PhysicalDeviceColorWriteEnableFeaturesEXT(
45134           *reinterpret_cast<PhysicalDeviceColorWriteEnableFeaturesEXT const *>( &rhs ) )
45135     {}
45136 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
45137 
45138     PhysicalDeviceColorWriteEnableFeaturesEXT &
45139       operator=( PhysicalDeviceColorWriteEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45140 
45141     PhysicalDeviceColorWriteEnableFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT45142       operator=( VkPhysicalDeviceColorWriteEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
45143     {
45144       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT const *>( &rhs );
45145       return *this;
45146     }
45147 
45148 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT45149     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceColorWriteEnableFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
45150     {
45151       pNext = pNext_;
45152       return *this;
45153     }
45154 
45155     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceColorWriteEnableFeaturesEXT &
setColorWriteEnableVULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT45156                             setColorWriteEnable( VULKAN_HPP_NAMESPACE::Bool32 colorWriteEnable_ ) VULKAN_HPP_NOEXCEPT
45157     {
45158       colorWriteEnable = colorWriteEnable_;
45159       return *this;
45160     }
45161 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
45162 
operator VkPhysicalDeviceColorWriteEnableFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT45163     explicit operator VkPhysicalDeviceColorWriteEnableFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
45164     {
45165       return *reinterpret_cast<const VkPhysicalDeviceColorWriteEnableFeaturesEXT *>( this );
45166     }
45167 
operator VkPhysicalDeviceColorWriteEnableFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT45168     explicit operator VkPhysicalDeviceColorWriteEnableFeaturesEXT &() VULKAN_HPP_NOEXCEPT
45169     {
45170       return *reinterpret_cast<VkPhysicalDeviceColorWriteEnableFeaturesEXT *>( this );
45171     }
45172 
45173 #if 14 <= VULKAN_HPP_CPP_VERSION
45174     auto
45175 #else
45176     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
45177 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT45178       reflect() const VULKAN_HPP_NOEXCEPT
45179     {
45180       return std::tie( sType, pNext, colorWriteEnable );
45181     }
45182 
45183 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
45184     auto operator<=>( PhysicalDeviceColorWriteEnableFeaturesEXT const & ) const = default;
45185 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT45186     bool operator==( PhysicalDeviceColorWriteEnableFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
45187     {
45188       return this->reflect() == rhs.reflect();
45189     }
45190 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT45191     bool operator!=( PhysicalDeviceColorWriteEnableFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
45192     {
45193       return this->reflect() != rhs.reflect();
45194     }
45195 #endif
45196 
45197   public:
45198     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::ePhysicalDeviceColorWriteEnableFeaturesEXT;
45199     void *                              pNext            = {};
45200     VULKAN_HPP_NAMESPACE::Bool32        colorWriteEnable = {};
45201   };
45202   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT ) ==
45203                               sizeof( VkPhysicalDeviceColorWriteEnableFeaturesEXT ),
45204                             "struct and wrapper have different size!" );
45205   VULKAN_HPP_STATIC_ASSERT(
45206     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT>::value,
45207     "struct wrapper is not a standard layout!" );
45208   VULKAN_HPP_STATIC_ASSERT(
45209     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT>::value,
45210     "PhysicalDeviceColorWriteEnableFeaturesEXT is not nothrow_move_constructible!" );
45211 
45212   template <>
45213   struct CppType<StructureType, StructureType::ePhysicalDeviceColorWriteEnableFeaturesEXT>
45214   {
45215     using Type = PhysicalDeviceColorWriteEnableFeaturesEXT;
45216   };
45217 
45218   struct PhysicalDeviceComputeShaderDerivativesFeaturesNV
45219   {
45220     using NativeType = VkPhysicalDeviceComputeShaderDerivativesFeaturesNV;
45221 
45222     static const bool                                  allowDuplicate = false;
45223     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
45224       StructureType::ePhysicalDeviceComputeShaderDerivativesFeaturesNV;
45225 
45226 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceComputeShaderDerivativesFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV45227     VULKAN_HPP_CONSTEXPR PhysicalDeviceComputeShaderDerivativesFeaturesNV(
45228       VULKAN_HPP_NAMESPACE::Bool32 computeDerivativeGroupQuads_  = {},
45229       VULKAN_HPP_NAMESPACE::Bool32 computeDerivativeGroupLinear_ = {} ) VULKAN_HPP_NOEXCEPT
45230       : computeDerivativeGroupQuads( computeDerivativeGroupQuads_ )
45231       , computeDerivativeGroupLinear( computeDerivativeGroupLinear_ )
45232     {}
45233 
45234     VULKAN_HPP_CONSTEXPR PhysicalDeviceComputeShaderDerivativesFeaturesNV(
45235       PhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45236 
PhysicalDeviceComputeShaderDerivativesFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV45237     PhysicalDeviceComputeShaderDerivativesFeaturesNV( VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs )
45238       VULKAN_HPP_NOEXCEPT
45239       : PhysicalDeviceComputeShaderDerivativesFeaturesNV(
45240           *reinterpret_cast<PhysicalDeviceComputeShaderDerivativesFeaturesNV const *>( &rhs ) )
45241     {}
45242 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
45243 
45244     PhysicalDeviceComputeShaderDerivativesFeaturesNV &
45245       operator=( PhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45246 
45247     PhysicalDeviceComputeShaderDerivativesFeaturesNV &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV45248       operator=( VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
45249     {
45250       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV const *>( &rhs );
45251       return *this;
45252     }
45253 
45254 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
45255     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceComputeShaderDerivativesFeaturesNV &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV45256                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
45257     {
45258       pNext = pNext_;
45259       return *this;
45260     }
45261 
45262     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceComputeShaderDerivativesFeaturesNV &
setComputeDerivativeGroupQuadsVULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV45263       setComputeDerivativeGroupQuads( VULKAN_HPP_NAMESPACE::Bool32 computeDerivativeGroupQuads_ ) VULKAN_HPP_NOEXCEPT
45264     {
45265       computeDerivativeGroupQuads = computeDerivativeGroupQuads_;
45266       return *this;
45267     }
45268 
45269     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceComputeShaderDerivativesFeaturesNV &
setComputeDerivativeGroupLinearVULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV45270       setComputeDerivativeGroupLinear( VULKAN_HPP_NAMESPACE::Bool32 computeDerivativeGroupLinear_ ) VULKAN_HPP_NOEXCEPT
45271     {
45272       computeDerivativeGroupLinear = computeDerivativeGroupLinear_;
45273       return *this;
45274     }
45275 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
45276 
operator VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV45277     explicit operator VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
45278     {
45279       return *reinterpret_cast<const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV *>( this );
45280     }
45281 
operator VkPhysicalDeviceComputeShaderDerivativesFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV45282     explicit operator VkPhysicalDeviceComputeShaderDerivativesFeaturesNV &() VULKAN_HPP_NOEXCEPT
45283     {
45284       return *reinterpret_cast<VkPhysicalDeviceComputeShaderDerivativesFeaturesNV *>( this );
45285     }
45286 
45287 #if 14 <= VULKAN_HPP_CPP_VERSION
45288     auto
45289 #else
45290     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
45291                void * const &,
45292                VULKAN_HPP_NAMESPACE::Bool32 const &,
45293                VULKAN_HPP_NAMESPACE::Bool32 const &>
45294 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV45295       reflect() const VULKAN_HPP_NOEXCEPT
45296     {
45297       return std::tie( sType, pNext, computeDerivativeGroupQuads, computeDerivativeGroupLinear );
45298     }
45299 
45300 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
45301     auto operator<=>( PhysicalDeviceComputeShaderDerivativesFeaturesNV const & ) const = default;
45302 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV45303     bool operator==( PhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
45304     {
45305       return this->reflect() == rhs.reflect();
45306     }
45307 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV45308     bool operator!=( PhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
45309     {
45310       return this->reflect() != rhs.reflect();
45311     }
45312 #endif
45313 
45314   public:
45315     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceComputeShaderDerivativesFeaturesNV;
45316     void *                              pNext = {};
45317     VULKAN_HPP_NAMESPACE::Bool32        computeDerivativeGroupQuads  = {};
45318     VULKAN_HPP_NAMESPACE::Bool32        computeDerivativeGroupLinear = {};
45319   };
45320   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV ) ==
45321                               sizeof( VkPhysicalDeviceComputeShaderDerivativesFeaturesNV ),
45322                             "struct and wrapper have different size!" );
45323   VULKAN_HPP_STATIC_ASSERT(
45324     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV>::value,
45325     "struct wrapper is not a standard layout!" );
45326   VULKAN_HPP_STATIC_ASSERT(
45327     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV>::value,
45328     "PhysicalDeviceComputeShaderDerivativesFeaturesNV is not nothrow_move_constructible!" );
45329 
45330   template <>
45331   struct CppType<StructureType, StructureType::ePhysicalDeviceComputeShaderDerivativesFeaturesNV>
45332   {
45333     using Type = PhysicalDeviceComputeShaderDerivativesFeaturesNV;
45334   };
45335 
45336   struct PhysicalDeviceConditionalRenderingFeaturesEXT
45337   {
45338     using NativeType = VkPhysicalDeviceConditionalRenderingFeaturesEXT;
45339 
45340     static const bool                                  allowDuplicate = false;
45341     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
45342       StructureType::ePhysicalDeviceConditionalRenderingFeaturesEXT;
45343 
45344 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceConditionalRenderingFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT45345     VULKAN_HPP_CONSTEXPR PhysicalDeviceConditionalRenderingFeaturesEXT(
45346       VULKAN_HPP_NAMESPACE::Bool32 conditionalRendering_          = {},
45347       VULKAN_HPP_NAMESPACE::Bool32 inheritedConditionalRendering_ = {} ) VULKAN_HPP_NOEXCEPT
45348       : conditionalRendering( conditionalRendering_ )
45349       , inheritedConditionalRendering( inheritedConditionalRendering_ )
45350     {}
45351 
45352     VULKAN_HPP_CONSTEXPR PhysicalDeviceConditionalRenderingFeaturesEXT(
45353       PhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45354 
PhysicalDeviceConditionalRenderingFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT45355     PhysicalDeviceConditionalRenderingFeaturesEXT( VkPhysicalDeviceConditionalRenderingFeaturesEXT const & rhs )
45356       VULKAN_HPP_NOEXCEPT
45357       : PhysicalDeviceConditionalRenderingFeaturesEXT(
45358           *reinterpret_cast<PhysicalDeviceConditionalRenderingFeaturesEXT const *>( &rhs ) )
45359     {}
45360 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
45361 
45362     PhysicalDeviceConditionalRenderingFeaturesEXT &
45363       operator=( PhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45364 
45365     PhysicalDeviceConditionalRenderingFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT45366       operator=( VkPhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
45367     {
45368       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT const *>( &rhs );
45369       return *this;
45370     }
45371 
45372 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
45373     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceConditionalRenderingFeaturesEXT &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT45374                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
45375     {
45376       pNext = pNext_;
45377       return *this;
45378     }
45379 
45380     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceConditionalRenderingFeaturesEXT &
setConditionalRenderingVULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT45381       setConditionalRendering( VULKAN_HPP_NAMESPACE::Bool32 conditionalRendering_ ) VULKAN_HPP_NOEXCEPT
45382     {
45383       conditionalRendering = conditionalRendering_;
45384       return *this;
45385     }
45386 
setInheritedConditionalRenderingVULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT45387     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceConditionalRenderingFeaturesEXT & setInheritedConditionalRendering(
45388       VULKAN_HPP_NAMESPACE::Bool32 inheritedConditionalRendering_ ) VULKAN_HPP_NOEXCEPT
45389     {
45390       inheritedConditionalRendering = inheritedConditionalRendering_;
45391       return *this;
45392     }
45393 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
45394 
operator VkPhysicalDeviceConditionalRenderingFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT45395     explicit operator VkPhysicalDeviceConditionalRenderingFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
45396     {
45397       return *reinterpret_cast<const VkPhysicalDeviceConditionalRenderingFeaturesEXT *>( this );
45398     }
45399 
operator VkPhysicalDeviceConditionalRenderingFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT45400     explicit operator VkPhysicalDeviceConditionalRenderingFeaturesEXT &() VULKAN_HPP_NOEXCEPT
45401     {
45402       return *reinterpret_cast<VkPhysicalDeviceConditionalRenderingFeaturesEXT *>( this );
45403     }
45404 
45405 #if 14 <= VULKAN_HPP_CPP_VERSION
45406     auto
45407 #else
45408     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
45409                void * const &,
45410                VULKAN_HPP_NAMESPACE::Bool32 const &,
45411                VULKAN_HPP_NAMESPACE::Bool32 const &>
45412 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT45413       reflect() const VULKAN_HPP_NOEXCEPT
45414     {
45415       return std::tie( sType, pNext, conditionalRendering, inheritedConditionalRendering );
45416     }
45417 
45418 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
45419     auto operator<=>( PhysicalDeviceConditionalRenderingFeaturesEXT const & ) const = default;
45420 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT45421     bool operator==( PhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
45422     {
45423       return this->reflect() == rhs.reflect();
45424     }
45425 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT45426     bool operator!=( PhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
45427     {
45428       return this->reflect() != rhs.reflect();
45429     }
45430 #endif
45431 
45432   public:
45433     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceConditionalRenderingFeaturesEXT;
45434     void *                              pNext = {};
45435     VULKAN_HPP_NAMESPACE::Bool32        conditionalRendering          = {};
45436     VULKAN_HPP_NAMESPACE::Bool32        inheritedConditionalRendering = {};
45437   };
45438   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT ) ==
45439                               sizeof( VkPhysicalDeviceConditionalRenderingFeaturesEXT ),
45440                             "struct and wrapper have different size!" );
45441   VULKAN_HPP_STATIC_ASSERT(
45442     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT>::value,
45443     "struct wrapper is not a standard layout!" );
45444   VULKAN_HPP_STATIC_ASSERT(
45445     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT>::value,
45446     "PhysicalDeviceConditionalRenderingFeaturesEXT is not nothrow_move_constructible!" );
45447 
45448   template <>
45449   struct CppType<StructureType, StructureType::ePhysicalDeviceConditionalRenderingFeaturesEXT>
45450   {
45451     using Type = PhysicalDeviceConditionalRenderingFeaturesEXT;
45452   };
45453 
45454   struct PhysicalDeviceConservativeRasterizationPropertiesEXT
45455   {
45456     using NativeType = VkPhysicalDeviceConservativeRasterizationPropertiesEXT;
45457 
45458     static const bool                                  allowDuplicate = false;
45459     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
45460       StructureType::ePhysicalDeviceConservativeRasterizationPropertiesEXT;
45461 
45462 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceConservativeRasterizationPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT45463     VULKAN_HPP_CONSTEXPR PhysicalDeviceConservativeRasterizationPropertiesEXT(
45464       float                        primitiveOverestimationSize_                 = {},
45465       float                        maxExtraPrimitiveOverestimationSize_         = {},
45466       float                        extraPrimitiveOverestimationSizeGranularity_ = {},
45467       VULKAN_HPP_NAMESPACE::Bool32 primitiveUnderestimation_                    = {},
45468       VULKAN_HPP_NAMESPACE::Bool32 conservativePointAndLineRasterization_       = {},
45469       VULKAN_HPP_NAMESPACE::Bool32 degenerateTrianglesRasterized_               = {},
45470       VULKAN_HPP_NAMESPACE::Bool32 degenerateLinesRasterized_                   = {},
45471       VULKAN_HPP_NAMESPACE::Bool32 fullyCoveredFragmentShaderInputVariable_     = {},
45472       VULKAN_HPP_NAMESPACE::Bool32 conservativeRasterizationPostDepthCoverage_  = {} ) VULKAN_HPP_NOEXCEPT
45473       : primitiveOverestimationSize( primitiveOverestimationSize_ )
45474       , maxExtraPrimitiveOverestimationSize( maxExtraPrimitiveOverestimationSize_ )
45475       , extraPrimitiveOverestimationSizeGranularity( extraPrimitiveOverestimationSizeGranularity_ )
45476       , primitiveUnderestimation( primitiveUnderestimation_ )
45477       , conservativePointAndLineRasterization( conservativePointAndLineRasterization_ )
45478       , degenerateTrianglesRasterized( degenerateTrianglesRasterized_ )
45479       , degenerateLinesRasterized( degenerateLinesRasterized_ )
45480       , fullyCoveredFragmentShaderInputVariable( fullyCoveredFragmentShaderInputVariable_ )
45481       , conservativeRasterizationPostDepthCoverage( conservativeRasterizationPostDepthCoverage_ )
45482     {}
45483 
45484     VULKAN_HPP_CONSTEXPR PhysicalDeviceConservativeRasterizationPropertiesEXT(
45485       PhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45486 
PhysicalDeviceConservativeRasterizationPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT45487     PhysicalDeviceConservativeRasterizationPropertiesEXT(
45488       VkPhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
45489       : PhysicalDeviceConservativeRasterizationPropertiesEXT(
45490           *reinterpret_cast<PhysicalDeviceConservativeRasterizationPropertiesEXT const *>( &rhs ) )
45491     {}
45492 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
45493 
45494     PhysicalDeviceConservativeRasterizationPropertiesEXT &
45495       operator=( PhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45496 
45497     PhysicalDeviceConservativeRasterizationPropertiesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT45498       operator=( VkPhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
45499     {
45500       *this =
45501         *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT const *>( &rhs );
45502       return *this;
45503     }
45504 
operator VkPhysicalDeviceConservativeRasterizationPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT45505     explicit operator VkPhysicalDeviceConservativeRasterizationPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
45506     {
45507       return *reinterpret_cast<const VkPhysicalDeviceConservativeRasterizationPropertiesEXT *>( this );
45508     }
45509 
operator VkPhysicalDeviceConservativeRasterizationPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT45510     explicit operator VkPhysicalDeviceConservativeRasterizationPropertiesEXT &() VULKAN_HPP_NOEXCEPT
45511     {
45512       return *reinterpret_cast<VkPhysicalDeviceConservativeRasterizationPropertiesEXT *>( this );
45513     }
45514 
45515 #if 14 <= VULKAN_HPP_CPP_VERSION
45516     auto
45517 #else
45518     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
45519                void * const &,
45520                float const &,
45521                float const &,
45522                float const &,
45523                VULKAN_HPP_NAMESPACE::Bool32 const &,
45524                VULKAN_HPP_NAMESPACE::Bool32 const &,
45525                VULKAN_HPP_NAMESPACE::Bool32 const &,
45526                VULKAN_HPP_NAMESPACE::Bool32 const &,
45527                VULKAN_HPP_NAMESPACE::Bool32 const &,
45528                VULKAN_HPP_NAMESPACE::Bool32 const &>
45529 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT45530       reflect() const VULKAN_HPP_NOEXCEPT
45531     {
45532       return std::tie( sType,
45533                        pNext,
45534                        primitiveOverestimationSize,
45535                        maxExtraPrimitiveOverestimationSize,
45536                        extraPrimitiveOverestimationSizeGranularity,
45537                        primitiveUnderestimation,
45538                        conservativePointAndLineRasterization,
45539                        degenerateTrianglesRasterized,
45540                        degenerateLinesRasterized,
45541                        fullyCoveredFragmentShaderInputVariable,
45542                        conservativeRasterizationPostDepthCoverage );
45543     }
45544 
45545 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
45546     auto operator<=>( PhysicalDeviceConservativeRasterizationPropertiesEXT const & ) const = default;
45547 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT45548     bool operator==( PhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
45549     {
45550       return this->reflect() == rhs.reflect();
45551     }
45552 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT45553     bool operator!=( PhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
45554     {
45555       return this->reflect() != rhs.reflect();
45556     }
45557 #endif
45558 
45559   public:
45560     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceConservativeRasterizationPropertiesEXT;
45561     void *                              pNext = {};
45562     float                               primitiveOverestimationSize                 = {};
45563     float                               maxExtraPrimitiveOverestimationSize         = {};
45564     float                               extraPrimitiveOverestimationSizeGranularity = {};
45565     VULKAN_HPP_NAMESPACE::Bool32        primitiveUnderestimation                    = {};
45566     VULKAN_HPP_NAMESPACE::Bool32        conservativePointAndLineRasterization       = {};
45567     VULKAN_HPP_NAMESPACE::Bool32        degenerateTrianglesRasterized               = {};
45568     VULKAN_HPP_NAMESPACE::Bool32        degenerateLinesRasterized                   = {};
45569     VULKAN_HPP_NAMESPACE::Bool32        fullyCoveredFragmentShaderInputVariable     = {};
45570     VULKAN_HPP_NAMESPACE::Bool32        conservativeRasterizationPostDepthCoverage  = {};
45571   };
45572   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT ) ==
45573                               sizeof( VkPhysicalDeviceConservativeRasterizationPropertiesEXT ),
45574                             "struct and wrapper have different size!" );
45575   VULKAN_HPP_STATIC_ASSERT(
45576     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT>::value,
45577     "struct wrapper is not a standard layout!" );
45578   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<
45579                               VULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT>::value,
45580                             "PhysicalDeviceConservativeRasterizationPropertiesEXT is not nothrow_move_constructible!" );
45581 
45582   template <>
45583   struct CppType<StructureType, StructureType::ePhysicalDeviceConservativeRasterizationPropertiesEXT>
45584   {
45585     using Type = PhysicalDeviceConservativeRasterizationPropertiesEXT;
45586   };
45587 
45588   struct PhysicalDeviceCooperativeMatrixFeaturesNV
45589   {
45590     using NativeType = VkPhysicalDeviceCooperativeMatrixFeaturesNV;
45591 
45592     static const bool                                  allowDuplicate = false;
45593     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
45594       StructureType::ePhysicalDeviceCooperativeMatrixFeaturesNV;
45595 
45596 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCooperativeMatrixFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV45597     VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixFeaturesNV(
45598       VULKAN_HPP_NAMESPACE::Bool32 cooperativeMatrix_                   = {},
45599       VULKAN_HPP_NAMESPACE::Bool32 cooperativeMatrixRobustBufferAccess_ = {} ) VULKAN_HPP_NOEXCEPT
45600       : cooperativeMatrix( cooperativeMatrix_ )
45601       , cooperativeMatrixRobustBufferAccess( cooperativeMatrixRobustBufferAccess_ )
45602     {}
45603 
45604     VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixFeaturesNV(
45605       PhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45606 
PhysicalDeviceCooperativeMatrixFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV45607     PhysicalDeviceCooperativeMatrixFeaturesNV( VkPhysicalDeviceCooperativeMatrixFeaturesNV const & rhs )
45608       VULKAN_HPP_NOEXCEPT
45609       : PhysicalDeviceCooperativeMatrixFeaturesNV(
45610           *reinterpret_cast<PhysicalDeviceCooperativeMatrixFeaturesNV const *>( &rhs ) )
45611     {}
45612 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
45613 
45614     PhysicalDeviceCooperativeMatrixFeaturesNV &
45615       operator=( PhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45616 
45617     PhysicalDeviceCooperativeMatrixFeaturesNV &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV45618       operator=( VkPhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
45619     {
45620       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV const *>( &rhs );
45621       return *this;
45622     }
45623 
45624 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV45625     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
45626     {
45627       pNext = pNext_;
45628       return *this;
45629     }
45630 
45631     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixFeaturesNV &
setCooperativeMatrixVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV45632                             setCooperativeMatrix( VULKAN_HPP_NAMESPACE::Bool32 cooperativeMatrix_ ) VULKAN_HPP_NOEXCEPT
45633     {
45634       cooperativeMatrix = cooperativeMatrix_;
45635       return *this;
45636     }
45637 
setCooperativeMatrixRobustBufferAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV45638     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixFeaturesNV & setCooperativeMatrixRobustBufferAccess(
45639       VULKAN_HPP_NAMESPACE::Bool32 cooperativeMatrixRobustBufferAccess_ ) VULKAN_HPP_NOEXCEPT
45640     {
45641       cooperativeMatrixRobustBufferAccess = cooperativeMatrixRobustBufferAccess_;
45642       return *this;
45643     }
45644 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
45645 
operator VkPhysicalDeviceCooperativeMatrixFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV45646     explicit operator VkPhysicalDeviceCooperativeMatrixFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
45647     {
45648       return *reinterpret_cast<const VkPhysicalDeviceCooperativeMatrixFeaturesNV *>( this );
45649     }
45650 
operator VkPhysicalDeviceCooperativeMatrixFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV45651     explicit operator VkPhysicalDeviceCooperativeMatrixFeaturesNV &() VULKAN_HPP_NOEXCEPT
45652     {
45653       return *reinterpret_cast<VkPhysicalDeviceCooperativeMatrixFeaturesNV *>( this );
45654     }
45655 
45656 #if 14 <= VULKAN_HPP_CPP_VERSION
45657     auto
45658 #else
45659     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
45660                void * const &,
45661                VULKAN_HPP_NAMESPACE::Bool32 const &,
45662                VULKAN_HPP_NAMESPACE::Bool32 const &>
45663 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV45664       reflect() const VULKAN_HPP_NOEXCEPT
45665     {
45666       return std::tie( sType, pNext, cooperativeMatrix, cooperativeMatrixRobustBufferAccess );
45667     }
45668 
45669 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
45670     auto operator<=>( PhysicalDeviceCooperativeMatrixFeaturesNV const & ) const = default;
45671 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV45672     bool operator==( PhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
45673     {
45674       return this->reflect() == rhs.reflect();
45675     }
45676 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV45677     bool operator!=( PhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
45678     {
45679       return this->reflect() != rhs.reflect();
45680     }
45681 #endif
45682 
45683   public:
45684     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::ePhysicalDeviceCooperativeMatrixFeaturesNV;
45685     void *                              pNext             = {};
45686     VULKAN_HPP_NAMESPACE::Bool32        cooperativeMatrix = {};
45687     VULKAN_HPP_NAMESPACE::Bool32        cooperativeMatrixRobustBufferAccess = {};
45688   };
45689   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV ) ==
45690                               sizeof( VkPhysicalDeviceCooperativeMatrixFeaturesNV ),
45691                             "struct and wrapper have different size!" );
45692   VULKAN_HPP_STATIC_ASSERT(
45693     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV>::value,
45694     "struct wrapper is not a standard layout!" );
45695   VULKAN_HPP_STATIC_ASSERT(
45696     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV>::value,
45697     "PhysicalDeviceCooperativeMatrixFeaturesNV is not nothrow_move_constructible!" );
45698 
45699   template <>
45700   struct CppType<StructureType, StructureType::ePhysicalDeviceCooperativeMatrixFeaturesNV>
45701   {
45702     using Type = PhysicalDeviceCooperativeMatrixFeaturesNV;
45703   };
45704 
45705   struct PhysicalDeviceCooperativeMatrixPropertiesNV
45706   {
45707     using NativeType = VkPhysicalDeviceCooperativeMatrixPropertiesNV;
45708 
45709     static const bool                                  allowDuplicate = false;
45710     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
45711       StructureType::ePhysicalDeviceCooperativeMatrixPropertiesNV;
45712 
45713 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCooperativeMatrixPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesNV45714     VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixPropertiesNV(
45715       VULKAN_HPP_NAMESPACE::ShaderStageFlags cooperativeMatrixSupportedStages_ = {} ) VULKAN_HPP_NOEXCEPT
45716       : cooperativeMatrixSupportedStages( cooperativeMatrixSupportedStages_ )
45717     {}
45718 
45719     VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixPropertiesNV(
45720       PhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45721 
PhysicalDeviceCooperativeMatrixPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesNV45722     PhysicalDeviceCooperativeMatrixPropertiesNV( VkPhysicalDeviceCooperativeMatrixPropertiesNV const & rhs )
45723       VULKAN_HPP_NOEXCEPT
45724       : PhysicalDeviceCooperativeMatrixPropertiesNV(
45725           *reinterpret_cast<PhysicalDeviceCooperativeMatrixPropertiesNV const *>( &rhs ) )
45726     {}
45727 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
45728 
45729     PhysicalDeviceCooperativeMatrixPropertiesNV &
45730       operator=( PhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45731 
45732     PhysicalDeviceCooperativeMatrixPropertiesNV &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesNV45733       operator=( VkPhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
45734     {
45735       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesNV const *>( &rhs );
45736       return *this;
45737     }
45738 
operator VkPhysicalDeviceCooperativeMatrixPropertiesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesNV45739     explicit operator VkPhysicalDeviceCooperativeMatrixPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
45740     {
45741       return *reinterpret_cast<const VkPhysicalDeviceCooperativeMatrixPropertiesNV *>( this );
45742     }
45743 
operator VkPhysicalDeviceCooperativeMatrixPropertiesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesNV45744     explicit operator VkPhysicalDeviceCooperativeMatrixPropertiesNV &() VULKAN_HPP_NOEXCEPT
45745     {
45746       return *reinterpret_cast<VkPhysicalDeviceCooperativeMatrixPropertiesNV *>( this );
45747     }
45748 
45749 #if 14 <= VULKAN_HPP_CPP_VERSION
45750     auto
45751 #else
45752     std::
45753       tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ShaderStageFlags const &>
45754 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesNV45755       reflect() const VULKAN_HPP_NOEXCEPT
45756     {
45757       return std::tie( sType, pNext, cooperativeMatrixSupportedStages );
45758     }
45759 
45760 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
45761     auto operator<=>( PhysicalDeviceCooperativeMatrixPropertiesNV const & ) const = default;
45762 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesNV45763     bool operator==( PhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
45764     {
45765       return this->reflect() == rhs.reflect();
45766     }
45767 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesNV45768     bool operator!=( PhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
45769     {
45770       return this->reflect() != rhs.reflect();
45771     }
45772 #endif
45773 
45774   public:
45775     VULKAN_HPP_NAMESPACE::StructureType    sType = StructureType::ePhysicalDeviceCooperativeMatrixPropertiesNV;
45776     void *                                 pNext = {};
45777     VULKAN_HPP_NAMESPACE::ShaderStageFlags cooperativeMatrixSupportedStages = {};
45778   };
45779   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesNV ) ==
45780                               sizeof( VkPhysicalDeviceCooperativeMatrixPropertiesNV ),
45781                             "struct and wrapper have different size!" );
45782   VULKAN_HPP_STATIC_ASSERT(
45783     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesNV>::value,
45784     "struct wrapper is not a standard layout!" );
45785   VULKAN_HPP_STATIC_ASSERT(
45786     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesNV>::value,
45787     "PhysicalDeviceCooperativeMatrixPropertiesNV is not nothrow_move_constructible!" );
45788 
45789   template <>
45790   struct CppType<StructureType, StructureType::ePhysicalDeviceCooperativeMatrixPropertiesNV>
45791   {
45792     using Type = PhysicalDeviceCooperativeMatrixPropertiesNV;
45793   };
45794 
45795   struct PhysicalDeviceCornerSampledImageFeaturesNV
45796   {
45797     using NativeType = VkPhysicalDeviceCornerSampledImageFeaturesNV;
45798 
45799     static const bool                                  allowDuplicate = false;
45800     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
45801       StructureType::ePhysicalDeviceCornerSampledImageFeaturesNV;
45802 
45803 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCornerSampledImageFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV45804     VULKAN_HPP_CONSTEXPR PhysicalDeviceCornerSampledImageFeaturesNV(
45805       VULKAN_HPP_NAMESPACE::Bool32 cornerSampledImage_ = {} ) VULKAN_HPP_NOEXCEPT
45806       : cornerSampledImage( cornerSampledImage_ )
45807     {}
45808 
45809     VULKAN_HPP_CONSTEXPR PhysicalDeviceCornerSampledImageFeaturesNV(
45810       PhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45811 
PhysicalDeviceCornerSampledImageFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV45812     PhysicalDeviceCornerSampledImageFeaturesNV( VkPhysicalDeviceCornerSampledImageFeaturesNV const & rhs )
45813       VULKAN_HPP_NOEXCEPT
45814       : PhysicalDeviceCornerSampledImageFeaturesNV(
45815           *reinterpret_cast<PhysicalDeviceCornerSampledImageFeaturesNV const *>( &rhs ) )
45816     {}
45817 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
45818 
45819     PhysicalDeviceCornerSampledImageFeaturesNV &
45820       operator=( PhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45821 
45822     PhysicalDeviceCornerSampledImageFeaturesNV &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV45823       operator=( VkPhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
45824     {
45825       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV const *>( &rhs );
45826       return *this;
45827     }
45828 
45829 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV45830     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCornerSampledImageFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
45831     {
45832       pNext = pNext_;
45833       return *this;
45834     }
45835 
45836     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCornerSampledImageFeaturesNV &
setCornerSampledImageVULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV45837       setCornerSampledImage( VULKAN_HPP_NAMESPACE::Bool32 cornerSampledImage_ ) VULKAN_HPP_NOEXCEPT
45838     {
45839       cornerSampledImage = cornerSampledImage_;
45840       return *this;
45841     }
45842 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
45843 
operator VkPhysicalDeviceCornerSampledImageFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV45844     explicit operator VkPhysicalDeviceCornerSampledImageFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
45845     {
45846       return *reinterpret_cast<const VkPhysicalDeviceCornerSampledImageFeaturesNV *>( this );
45847     }
45848 
operator VkPhysicalDeviceCornerSampledImageFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV45849     explicit operator VkPhysicalDeviceCornerSampledImageFeaturesNV &() VULKAN_HPP_NOEXCEPT
45850     {
45851       return *reinterpret_cast<VkPhysicalDeviceCornerSampledImageFeaturesNV *>( this );
45852     }
45853 
45854 #if 14 <= VULKAN_HPP_CPP_VERSION
45855     auto
45856 #else
45857     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
45858 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV45859       reflect() const VULKAN_HPP_NOEXCEPT
45860     {
45861       return std::tie( sType, pNext, cornerSampledImage );
45862     }
45863 
45864 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
45865     auto operator<=>( PhysicalDeviceCornerSampledImageFeaturesNV const & ) const = default;
45866 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV45867     bool operator==( PhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
45868     {
45869       return this->reflect() == rhs.reflect();
45870     }
45871 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV45872     bool operator!=( PhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
45873     {
45874       return this->reflect() != rhs.reflect();
45875     }
45876 #endif
45877 
45878   public:
45879     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::ePhysicalDeviceCornerSampledImageFeaturesNV;
45880     void *                              pNext              = {};
45881     VULKAN_HPP_NAMESPACE::Bool32        cornerSampledImage = {};
45882   };
45883   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV ) ==
45884                               sizeof( VkPhysicalDeviceCornerSampledImageFeaturesNV ),
45885                             "struct and wrapper have different size!" );
45886   VULKAN_HPP_STATIC_ASSERT(
45887     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV>::value,
45888     "struct wrapper is not a standard layout!" );
45889   VULKAN_HPP_STATIC_ASSERT(
45890     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV>::value,
45891     "PhysicalDeviceCornerSampledImageFeaturesNV is not nothrow_move_constructible!" );
45892 
45893   template <>
45894   struct CppType<StructureType, StructureType::ePhysicalDeviceCornerSampledImageFeaturesNV>
45895   {
45896     using Type = PhysicalDeviceCornerSampledImageFeaturesNV;
45897   };
45898 
45899   struct PhysicalDeviceCoverageReductionModeFeaturesNV
45900   {
45901     using NativeType = VkPhysicalDeviceCoverageReductionModeFeaturesNV;
45902 
45903     static const bool                                  allowDuplicate = false;
45904     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
45905       StructureType::ePhysicalDeviceCoverageReductionModeFeaturesNV;
45906 
45907 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCoverageReductionModeFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV45908     VULKAN_HPP_CONSTEXPR PhysicalDeviceCoverageReductionModeFeaturesNV(
45909       VULKAN_HPP_NAMESPACE::Bool32 coverageReductionMode_ = {} ) VULKAN_HPP_NOEXCEPT
45910       : coverageReductionMode( coverageReductionMode_ )
45911     {}
45912 
45913     VULKAN_HPP_CONSTEXPR PhysicalDeviceCoverageReductionModeFeaturesNV(
45914       PhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45915 
PhysicalDeviceCoverageReductionModeFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV45916     PhysicalDeviceCoverageReductionModeFeaturesNV( VkPhysicalDeviceCoverageReductionModeFeaturesNV const & rhs )
45917       VULKAN_HPP_NOEXCEPT
45918       : PhysicalDeviceCoverageReductionModeFeaturesNV(
45919           *reinterpret_cast<PhysicalDeviceCoverageReductionModeFeaturesNV const *>( &rhs ) )
45920     {}
45921 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
45922 
45923     PhysicalDeviceCoverageReductionModeFeaturesNV &
45924       operator=( PhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45925 
45926     PhysicalDeviceCoverageReductionModeFeaturesNV &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV45927       operator=( VkPhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
45928     {
45929       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV const *>( &rhs );
45930       return *this;
45931     }
45932 
45933 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
45934     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCoverageReductionModeFeaturesNV &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV45935                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
45936     {
45937       pNext = pNext_;
45938       return *this;
45939     }
45940 
45941     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCoverageReductionModeFeaturesNV &
setCoverageReductionModeVULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV45942       setCoverageReductionMode( VULKAN_HPP_NAMESPACE::Bool32 coverageReductionMode_ ) VULKAN_HPP_NOEXCEPT
45943     {
45944       coverageReductionMode = coverageReductionMode_;
45945       return *this;
45946     }
45947 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
45948 
operator VkPhysicalDeviceCoverageReductionModeFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV45949     explicit operator VkPhysicalDeviceCoverageReductionModeFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
45950     {
45951       return *reinterpret_cast<const VkPhysicalDeviceCoverageReductionModeFeaturesNV *>( this );
45952     }
45953 
operator VkPhysicalDeviceCoverageReductionModeFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV45954     explicit operator VkPhysicalDeviceCoverageReductionModeFeaturesNV &() VULKAN_HPP_NOEXCEPT
45955     {
45956       return *reinterpret_cast<VkPhysicalDeviceCoverageReductionModeFeaturesNV *>( this );
45957     }
45958 
45959 #if 14 <= VULKAN_HPP_CPP_VERSION
45960     auto
45961 #else
45962     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
45963 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV45964       reflect() const VULKAN_HPP_NOEXCEPT
45965     {
45966       return std::tie( sType, pNext, coverageReductionMode );
45967     }
45968 
45969 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
45970     auto operator<=>( PhysicalDeviceCoverageReductionModeFeaturesNV const & ) const = default;
45971 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV45972     bool operator==( PhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
45973     {
45974       return this->reflect() == rhs.reflect();
45975     }
45976 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV45977     bool operator!=( PhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
45978     {
45979       return this->reflect() != rhs.reflect();
45980     }
45981 #endif
45982 
45983   public:
45984     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceCoverageReductionModeFeaturesNV;
45985     void *                              pNext = {};
45986     VULKAN_HPP_NAMESPACE::Bool32        coverageReductionMode = {};
45987   };
45988   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV ) ==
45989                               sizeof( VkPhysicalDeviceCoverageReductionModeFeaturesNV ),
45990                             "struct and wrapper have different size!" );
45991   VULKAN_HPP_STATIC_ASSERT(
45992     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV>::value,
45993     "struct wrapper is not a standard layout!" );
45994   VULKAN_HPP_STATIC_ASSERT(
45995     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV>::value,
45996     "PhysicalDeviceCoverageReductionModeFeaturesNV is not nothrow_move_constructible!" );
45997 
45998   template <>
45999   struct CppType<StructureType, StructureType::ePhysicalDeviceCoverageReductionModeFeaturesNV>
46000   {
46001     using Type = PhysicalDeviceCoverageReductionModeFeaturesNV;
46002   };
46003 
46004   struct PhysicalDeviceCustomBorderColorFeaturesEXT
46005   {
46006     using NativeType = VkPhysicalDeviceCustomBorderColorFeaturesEXT;
46007 
46008     static const bool                                  allowDuplicate = false;
46009     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
46010       StructureType::ePhysicalDeviceCustomBorderColorFeaturesEXT;
46011 
46012 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCustomBorderColorFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT46013     VULKAN_HPP_CONSTEXPR PhysicalDeviceCustomBorderColorFeaturesEXT(
46014       VULKAN_HPP_NAMESPACE::Bool32 customBorderColors_             = {},
46015       VULKAN_HPP_NAMESPACE::Bool32 customBorderColorWithoutFormat_ = {} ) VULKAN_HPP_NOEXCEPT
46016       : customBorderColors( customBorderColors_ )
46017       , customBorderColorWithoutFormat( customBorderColorWithoutFormat_ )
46018     {}
46019 
46020     VULKAN_HPP_CONSTEXPR PhysicalDeviceCustomBorderColorFeaturesEXT(
46021       PhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46022 
PhysicalDeviceCustomBorderColorFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT46023     PhysicalDeviceCustomBorderColorFeaturesEXT( VkPhysicalDeviceCustomBorderColorFeaturesEXT const & rhs )
46024       VULKAN_HPP_NOEXCEPT
46025       : PhysicalDeviceCustomBorderColorFeaturesEXT(
46026           *reinterpret_cast<PhysicalDeviceCustomBorderColorFeaturesEXT const *>( &rhs ) )
46027     {}
46028 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
46029 
46030     PhysicalDeviceCustomBorderColorFeaturesEXT &
46031       operator=( PhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46032 
46033     PhysicalDeviceCustomBorderColorFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT46034       operator=( VkPhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
46035     {
46036       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT const *>( &rhs );
46037       return *this;
46038     }
46039 
46040 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT46041     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCustomBorderColorFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
46042     {
46043       pNext = pNext_;
46044       return *this;
46045     }
46046 
46047     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCustomBorderColorFeaturesEXT &
setCustomBorderColorsVULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT46048       setCustomBorderColors( VULKAN_HPP_NAMESPACE::Bool32 customBorderColors_ ) VULKAN_HPP_NOEXCEPT
46049     {
46050       customBorderColors = customBorderColors_;
46051       return *this;
46052     }
46053 
setCustomBorderColorWithoutFormatVULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT46054     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCustomBorderColorFeaturesEXT & setCustomBorderColorWithoutFormat(
46055       VULKAN_HPP_NAMESPACE::Bool32 customBorderColorWithoutFormat_ ) VULKAN_HPP_NOEXCEPT
46056     {
46057       customBorderColorWithoutFormat = customBorderColorWithoutFormat_;
46058       return *this;
46059     }
46060 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
46061 
operator VkPhysicalDeviceCustomBorderColorFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT46062     explicit operator VkPhysicalDeviceCustomBorderColorFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
46063     {
46064       return *reinterpret_cast<const VkPhysicalDeviceCustomBorderColorFeaturesEXT *>( this );
46065     }
46066 
operator VkPhysicalDeviceCustomBorderColorFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT46067     explicit operator VkPhysicalDeviceCustomBorderColorFeaturesEXT &() VULKAN_HPP_NOEXCEPT
46068     {
46069       return *reinterpret_cast<VkPhysicalDeviceCustomBorderColorFeaturesEXT *>( this );
46070     }
46071 
46072 #if 14 <= VULKAN_HPP_CPP_VERSION
46073     auto
46074 #else
46075     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
46076                void * const &,
46077                VULKAN_HPP_NAMESPACE::Bool32 const &,
46078                VULKAN_HPP_NAMESPACE::Bool32 const &>
46079 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT46080       reflect() const VULKAN_HPP_NOEXCEPT
46081     {
46082       return std::tie( sType, pNext, customBorderColors, customBorderColorWithoutFormat );
46083     }
46084 
46085 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
46086     auto operator<=>( PhysicalDeviceCustomBorderColorFeaturesEXT const & ) const = default;
46087 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT46088     bool operator==( PhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
46089     {
46090       return this->reflect() == rhs.reflect();
46091     }
46092 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT46093     bool operator!=( PhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
46094     {
46095       return this->reflect() != rhs.reflect();
46096     }
46097 #endif
46098 
46099   public:
46100     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::ePhysicalDeviceCustomBorderColorFeaturesEXT;
46101     void *                              pNext              = {};
46102     VULKAN_HPP_NAMESPACE::Bool32        customBorderColors = {};
46103     VULKAN_HPP_NAMESPACE::Bool32        customBorderColorWithoutFormat = {};
46104   };
46105   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT ) ==
46106                               sizeof( VkPhysicalDeviceCustomBorderColorFeaturesEXT ),
46107                             "struct and wrapper have different size!" );
46108   VULKAN_HPP_STATIC_ASSERT(
46109     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT>::value,
46110     "struct wrapper is not a standard layout!" );
46111   VULKAN_HPP_STATIC_ASSERT(
46112     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT>::value,
46113     "PhysicalDeviceCustomBorderColorFeaturesEXT is not nothrow_move_constructible!" );
46114 
46115   template <>
46116   struct CppType<StructureType, StructureType::ePhysicalDeviceCustomBorderColorFeaturesEXT>
46117   {
46118     using Type = PhysicalDeviceCustomBorderColorFeaturesEXT;
46119   };
46120 
46121   struct PhysicalDeviceCustomBorderColorPropertiesEXT
46122   {
46123     using NativeType = VkPhysicalDeviceCustomBorderColorPropertiesEXT;
46124 
46125     static const bool                                  allowDuplicate = false;
46126     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
46127       StructureType::ePhysicalDeviceCustomBorderColorPropertiesEXT;
46128 
46129 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
46130     VULKAN_HPP_CONSTEXPR
PhysicalDeviceCustomBorderColorPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT46131       PhysicalDeviceCustomBorderColorPropertiesEXT( uint32_t maxCustomBorderColorSamplers_ = {} ) VULKAN_HPP_NOEXCEPT
46132       : maxCustomBorderColorSamplers( maxCustomBorderColorSamplers_ )
46133     {}
46134 
46135     VULKAN_HPP_CONSTEXPR PhysicalDeviceCustomBorderColorPropertiesEXT(
46136       PhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46137 
PhysicalDeviceCustomBorderColorPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT46138     PhysicalDeviceCustomBorderColorPropertiesEXT( VkPhysicalDeviceCustomBorderColorPropertiesEXT const & rhs )
46139       VULKAN_HPP_NOEXCEPT
46140       : PhysicalDeviceCustomBorderColorPropertiesEXT(
46141           *reinterpret_cast<PhysicalDeviceCustomBorderColorPropertiesEXT const *>( &rhs ) )
46142     {}
46143 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
46144 
46145     PhysicalDeviceCustomBorderColorPropertiesEXT &
46146       operator=( PhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46147 
46148     PhysicalDeviceCustomBorderColorPropertiesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT46149       operator=( VkPhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
46150     {
46151       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT const *>( &rhs );
46152       return *this;
46153     }
46154 
operator VkPhysicalDeviceCustomBorderColorPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT46155     explicit operator VkPhysicalDeviceCustomBorderColorPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
46156     {
46157       return *reinterpret_cast<const VkPhysicalDeviceCustomBorderColorPropertiesEXT *>( this );
46158     }
46159 
operator VkPhysicalDeviceCustomBorderColorPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT46160     explicit operator VkPhysicalDeviceCustomBorderColorPropertiesEXT &() VULKAN_HPP_NOEXCEPT
46161     {
46162       return *reinterpret_cast<VkPhysicalDeviceCustomBorderColorPropertiesEXT *>( this );
46163     }
46164 
46165 #if 14 <= VULKAN_HPP_CPP_VERSION
46166     auto
46167 #else
46168     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
46169 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT46170       reflect() const VULKAN_HPP_NOEXCEPT
46171     {
46172       return std::tie( sType, pNext, maxCustomBorderColorSamplers );
46173     }
46174 
46175 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
46176     auto operator<=>( PhysicalDeviceCustomBorderColorPropertiesEXT const & ) const = default;
46177 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT46178     bool operator==( PhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
46179     {
46180       return this->reflect() == rhs.reflect();
46181     }
46182 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT46183     bool operator!=( PhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
46184     {
46185       return this->reflect() != rhs.reflect();
46186     }
46187 #endif
46188 
46189   public:
46190     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceCustomBorderColorPropertiesEXT;
46191     void *                              pNext = {};
46192     uint32_t                            maxCustomBorderColorSamplers = {};
46193   };
46194   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT ) ==
46195                               sizeof( VkPhysicalDeviceCustomBorderColorPropertiesEXT ),
46196                             "struct and wrapper have different size!" );
46197   VULKAN_HPP_STATIC_ASSERT(
46198     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT>::value,
46199     "struct wrapper is not a standard layout!" );
46200   VULKAN_HPP_STATIC_ASSERT(
46201     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT>::value,
46202     "PhysicalDeviceCustomBorderColorPropertiesEXT is not nothrow_move_constructible!" );
46203 
46204   template <>
46205   struct CppType<StructureType, StructureType::ePhysicalDeviceCustomBorderColorPropertiesEXT>
46206   {
46207     using Type = PhysicalDeviceCustomBorderColorPropertiesEXT;
46208   };
46209 
46210   struct PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV
46211   {
46212     using NativeType = VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV;
46213 
46214     static const bool                                  allowDuplicate = false;
46215     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
46216       StructureType::ePhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV;
46217 
46218 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV46219     VULKAN_HPP_CONSTEXPR PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV(
46220       VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocationImageAliasing_ = {} ) VULKAN_HPP_NOEXCEPT
46221       : dedicatedAllocationImageAliasing( dedicatedAllocationImageAliasing_ )
46222     {}
46223 
46224     VULKAN_HPP_CONSTEXPR PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV(
46225       PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46226 
PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV46227     PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV(
46228       VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
46229       : PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV(
46230           *reinterpret_cast<PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const *>( &rhs ) )
46231     {}
46232 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
46233 
46234     PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV &
46235       operator=( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46236 
46237     PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV46238       operator=( VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
46239     {
46240       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const *>(
46241         &rhs );
46242       return *this;
46243     }
46244 
46245 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
46246     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV46247                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
46248     {
46249       pNext = pNext_;
46250       return *this;
46251     }
46252 
46253     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV &
setDedicatedAllocationImageAliasingVULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV46254       setDedicatedAllocationImageAliasing( VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocationImageAliasing_ )
46255         VULKAN_HPP_NOEXCEPT
46256     {
46257       dedicatedAllocationImageAliasing = dedicatedAllocationImageAliasing_;
46258       return *this;
46259     }
46260 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
46261 
operator VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV46262     explicit operator VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
46263     {
46264       return *reinterpret_cast<const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV *>( this );
46265     }
46266 
operator VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV46267     explicit operator VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV &() VULKAN_HPP_NOEXCEPT
46268     {
46269       return *reinterpret_cast<VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV *>( this );
46270     }
46271 
46272 #if 14 <= VULKAN_HPP_CPP_VERSION
46273     auto
46274 #else
46275     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
46276 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV46277       reflect() const VULKAN_HPP_NOEXCEPT
46278     {
46279       return std::tie( sType, pNext, dedicatedAllocationImageAliasing );
46280     }
46281 
46282 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
46283     auto operator<=>( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & ) const = default;
46284 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV46285     bool operator==( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
46286     {
46287       return this->reflect() == rhs.reflect();
46288     }
46289 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV46290     bool operator!=( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
46291     {
46292       return this->reflect() != rhs.reflect();
46293     }
46294 #endif
46295 
46296   public:
46297     VULKAN_HPP_NAMESPACE::StructureType sType =
46298       StructureType::ePhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV;
46299     void *                       pNext                            = {};
46300     VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocationImageAliasing = {};
46301   };
46302   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV ) ==
46303                               sizeof( VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV ),
46304                             "struct and wrapper have different size!" );
46305   VULKAN_HPP_STATIC_ASSERT(
46306     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>::value,
46307     "struct wrapper is not a standard layout!" );
46308   VULKAN_HPP_STATIC_ASSERT(
46309     std::is_nothrow_move_constructible<
46310       VULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>::value,
46311     "PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV is not nothrow_move_constructible!" );
46312 
46313   template <>
46314   struct CppType<StructureType, StructureType::ePhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>
46315   {
46316     using Type = PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV;
46317   };
46318 
46319   struct PhysicalDeviceDepthClipControlFeaturesEXT
46320   {
46321     using NativeType = VkPhysicalDeviceDepthClipControlFeaturesEXT;
46322 
46323     static const bool                                  allowDuplicate = false;
46324     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
46325       StructureType::ePhysicalDeviceDepthClipControlFeaturesEXT;
46326 
46327 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDepthClipControlFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT46328     VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthClipControlFeaturesEXT(
46329       VULKAN_HPP_NAMESPACE::Bool32 depthClipControl_ = {} ) VULKAN_HPP_NOEXCEPT : depthClipControl( depthClipControl_ )
46330     {}
46331 
46332     VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthClipControlFeaturesEXT(
46333       PhysicalDeviceDepthClipControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46334 
PhysicalDeviceDepthClipControlFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT46335     PhysicalDeviceDepthClipControlFeaturesEXT( VkPhysicalDeviceDepthClipControlFeaturesEXT const & rhs )
46336       VULKAN_HPP_NOEXCEPT
46337       : PhysicalDeviceDepthClipControlFeaturesEXT(
46338           *reinterpret_cast<PhysicalDeviceDepthClipControlFeaturesEXT const *>( &rhs ) )
46339     {}
46340 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
46341 
46342     PhysicalDeviceDepthClipControlFeaturesEXT &
46343       operator=( PhysicalDeviceDepthClipControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46344 
46345     PhysicalDeviceDepthClipControlFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT46346       operator=( VkPhysicalDeviceDepthClipControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
46347     {
46348       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT const *>( &rhs );
46349       return *this;
46350     }
46351 
46352 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT46353     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClipControlFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
46354     {
46355       pNext = pNext_;
46356       return *this;
46357     }
46358 
46359     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClipControlFeaturesEXT &
setDepthClipControlVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT46360                             setDepthClipControl( VULKAN_HPP_NAMESPACE::Bool32 depthClipControl_ ) VULKAN_HPP_NOEXCEPT
46361     {
46362       depthClipControl = depthClipControl_;
46363       return *this;
46364     }
46365 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
46366 
operator VkPhysicalDeviceDepthClipControlFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT46367     explicit operator VkPhysicalDeviceDepthClipControlFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
46368     {
46369       return *reinterpret_cast<const VkPhysicalDeviceDepthClipControlFeaturesEXT *>( this );
46370     }
46371 
operator VkPhysicalDeviceDepthClipControlFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT46372     explicit operator VkPhysicalDeviceDepthClipControlFeaturesEXT &() VULKAN_HPP_NOEXCEPT
46373     {
46374       return *reinterpret_cast<VkPhysicalDeviceDepthClipControlFeaturesEXT *>( this );
46375     }
46376 
46377 #if 14 <= VULKAN_HPP_CPP_VERSION
46378     auto
46379 #else
46380     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
46381 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT46382       reflect() const VULKAN_HPP_NOEXCEPT
46383     {
46384       return std::tie( sType, pNext, depthClipControl );
46385     }
46386 
46387 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
46388     auto operator<=>( PhysicalDeviceDepthClipControlFeaturesEXT const & ) const = default;
46389 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT46390     bool operator==( PhysicalDeviceDepthClipControlFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
46391     {
46392       return this->reflect() == rhs.reflect();
46393     }
46394 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT46395     bool operator!=( PhysicalDeviceDepthClipControlFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
46396     {
46397       return this->reflect() != rhs.reflect();
46398     }
46399 #endif
46400 
46401   public:
46402     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::ePhysicalDeviceDepthClipControlFeaturesEXT;
46403     void *                              pNext            = {};
46404     VULKAN_HPP_NAMESPACE::Bool32        depthClipControl = {};
46405   };
46406   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT ) ==
46407                               sizeof( VkPhysicalDeviceDepthClipControlFeaturesEXT ),
46408                             "struct and wrapper have different size!" );
46409   VULKAN_HPP_STATIC_ASSERT(
46410     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT>::value,
46411     "struct wrapper is not a standard layout!" );
46412   VULKAN_HPP_STATIC_ASSERT(
46413     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT>::value,
46414     "PhysicalDeviceDepthClipControlFeaturesEXT is not nothrow_move_constructible!" );
46415 
46416   template <>
46417   struct CppType<StructureType, StructureType::ePhysicalDeviceDepthClipControlFeaturesEXT>
46418   {
46419     using Type = PhysicalDeviceDepthClipControlFeaturesEXT;
46420   };
46421 
46422   struct PhysicalDeviceDepthClipEnableFeaturesEXT
46423   {
46424     using NativeType = VkPhysicalDeviceDepthClipEnableFeaturesEXT;
46425 
46426     static const bool                                  allowDuplicate = false;
46427     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
46428       StructureType::ePhysicalDeviceDepthClipEnableFeaturesEXT;
46429 
46430 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
46431     VULKAN_HPP_CONSTEXPR
PhysicalDeviceDepthClipEnableFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT46432       PhysicalDeviceDepthClipEnableFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 depthClipEnable_ = {} ) VULKAN_HPP_NOEXCEPT
46433       : depthClipEnable( depthClipEnable_ )
46434     {}
46435 
46436     VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthClipEnableFeaturesEXT(
46437       PhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46438 
PhysicalDeviceDepthClipEnableFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT46439     PhysicalDeviceDepthClipEnableFeaturesEXT( VkPhysicalDeviceDepthClipEnableFeaturesEXT const & rhs )
46440       VULKAN_HPP_NOEXCEPT
46441       : PhysicalDeviceDepthClipEnableFeaturesEXT(
46442           *reinterpret_cast<PhysicalDeviceDepthClipEnableFeaturesEXT const *>( &rhs ) )
46443     {}
46444 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
46445 
46446     PhysicalDeviceDepthClipEnableFeaturesEXT &
46447       operator=( PhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46448 
46449     PhysicalDeviceDepthClipEnableFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT46450       operator=( VkPhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
46451     {
46452       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT const *>( &rhs );
46453       return *this;
46454     }
46455 
46456 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT46457     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClipEnableFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
46458     {
46459       pNext = pNext_;
46460       return *this;
46461     }
46462 
46463     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClipEnableFeaturesEXT &
setDepthClipEnableVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT46464                             setDepthClipEnable( VULKAN_HPP_NAMESPACE::Bool32 depthClipEnable_ ) VULKAN_HPP_NOEXCEPT
46465     {
46466       depthClipEnable = depthClipEnable_;
46467       return *this;
46468     }
46469 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
46470 
operator VkPhysicalDeviceDepthClipEnableFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT46471     explicit operator VkPhysicalDeviceDepthClipEnableFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
46472     {
46473       return *reinterpret_cast<const VkPhysicalDeviceDepthClipEnableFeaturesEXT *>( this );
46474     }
46475 
operator VkPhysicalDeviceDepthClipEnableFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT46476     explicit operator VkPhysicalDeviceDepthClipEnableFeaturesEXT &() VULKAN_HPP_NOEXCEPT
46477     {
46478       return *reinterpret_cast<VkPhysicalDeviceDepthClipEnableFeaturesEXT *>( this );
46479     }
46480 
46481 #if 14 <= VULKAN_HPP_CPP_VERSION
46482     auto
46483 #else
46484     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
46485 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT46486       reflect() const VULKAN_HPP_NOEXCEPT
46487     {
46488       return std::tie( sType, pNext, depthClipEnable );
46489     }
46490 
46491 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
46492     auto operator<=>( PhysicalDeviceDepthClipEnableFeaturesEXT const & ) const = default;
46493 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT46494     bool operator==( PhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
46495     {
46496       return this->reflect() == rhs.reflect();
46497     }
46498 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT46499     bool operator!=( PhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
46500     {
46501       return this->reflect() != rhs.reflect();
46502     }
46503 #endif
46504 
46505   public:
46506     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::ePhysicalDeviceDepthClipEnableFeaturesEXT;
46507     void *                              pNext           = {};
46508     VULKAN_HPP_NAMESPACE::Bool32        depthClipEnable = {};
46509   };
46510   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT ) ==
46511                               sizeof( VkPhysicalDeviceDepthClipEnableFeaturesEXT ),
46512                             "struct and wrapper have different size!" );
46513   VULKAN_HPP_STATIC_ASSERT(
46514     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT>::value,
46515     "struct wrapper is not a standard layout!" );
46516   VULKAN_HPP_STATIC_ASSERT(
46517     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT>::value,
46518     "PhysicalDeviceDepthClipEnableFeaturesEXT is not nothrow_move_constructible!" );
46519 
46520   template <>
46521   struct CppType<StructureType, StructureType::ePhysicalDeviceDepthClipEnableFeaturesEXT>
46522   {
46523     using Type = PhysicalDeviceDepthClipEnableFeaturesEXT;
46524   };
46525 
46526   struct PhysicalDeviceDepthStencilResolveProperties
46527   {
46528     using NativeType = VkPhysicalDeviceDepthStencilResolveProperties;
46529 
46530     static const bool                                  allowDuplicate = false;
46531     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
46532       StructureType::ePhysicalDeviceDepthStencilResolveProperties;
46533 
46534 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDepthStencilResolvePropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties46535     VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthStencilResolveProperties(
46536       VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedDepthResolveModes_   = {},
46537       VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedStencilResolveModes_ = {},
46538       VULKAN_HPP_NAMESPACE::Bool32           independentResolveNone_       = {},
46539       VULKAN_HPP_NAMESPACE::Bool32           independentResolve_           = {} ) VULKAN_HPP_NOEXCEPT
46540       : supportedDepthResolveModes( supportedDepthResolveModes_ )
46541       , supportedStencilResolveModes( supportedStencilResolveModes_ )
46542       , independentResolveNone( independentResolveNone_ )
46543       , independentResolve( independentResolve_ )
46544     {}
46545 
46546     VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthStencilResolveProperties(
46547       PhysicalDeviceDepthStencilResolveProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46548 
PhysicalDeviceDepthStencilResolvePropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties46549     PhysicalDeviceDepthStencilResolveProperties( VkPhysicalDeviceDepthStencilResolveProperties const & rhs )
46550       VULKAN_HPP_NOEXCEPT
46551       : PhysicalDeviceDepthStencilResolveProperties(
46552           *reinterpret_cast<PhysicalDeviceDepthStencilResolveProperties const *>( &rhs ) )
46553     {}
46554 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
46555 
46556     PhysicalDeviceDepthStencilResolveProperties &
46557       operator=( PhysicalDeviceDepthStencilResolveProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46558 
46559     PhysicalDeviceDepthStencilResolveProperties &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties46560       operator=( VkPhysicalDeviceDepthStencilResolveProperties const & rhs ) VULKAN_HPP_NOEXCEPT
46561     {
46562       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties const *>( &rhs );
46563       return *this;
46564     }
46565 
operator VkPhysicalDeviceDepthStencilResolveProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties46566     explicit operator VkPhysicalDeviceDepthStencilResolveProperties const &() const VULKAN_HPP_NOEXCEPT
46567     {
46568       return *reinterpret_cast<const VkPhysicalDeviceDepthStencilResolveProperties *>( this );
46569     }
46570 
operator VkPhysicalDeviceDepthStencilResolveProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties46571     explicit operator VkPhysicalDeviceDepthStencilResolveProperties &() VULKAN_HPP_NOEXCEPT
46572     {
46573       return *reinterpret_cast<VkPhysicalDeviceDepthStencilResolveProperties *>( this );
46574     }
46575 
46576 #if 14 <= VULKAN_HPP_CPP_VERSION
46577     auto
46578 #else
46579     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
46580                void * const &,
46581                VULKAN_HPP_NAMESPACE::ResolveModeFlags const &,
46582                VULKAN_HPP_NAMESPACE::ResolveModeFlags const &,
46583                VULKAN_HPP_NAMESPACE::Bool32 const &,
46584                VULKAN_HPP_NAMESPACE::Bool32 const &>
46585 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties46586       reflect() const VULKAN_HPP_NOEXCEPT
46587     {
46588       return std::tie( sType,
46589                        pNext,
46590                        supportedDepthResolveModes,
46591                        supportedStencilResolveModes,
46592                        independentResolveNone,
46593                        independentResolve );
46594     }
46595 
46596 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
46597     auto operator<=>( PhysicalDeviceDepthStencilResolveProperties const & ) const = default;
46598 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties46599     bool operator==( PhysicalDeviceDepthStencilResolveProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
46600     {
46601       return this->reflect() == rhs.reflect();
46602     }
46603 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties46604     bool operator!=( PhysicalDeviceDepthStencilResolveProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
46605     {
46606       return this->reflect() != rhs.reflect();
46607     }
46608 #endif
46609 
46610   public:
46611     VULKAN_HPP_NAMESPACE::StructureType    sType = StructureType::ePhysicalDeviceDepthStencilResolveProperties;
46612     void *                                 pNext = {};
46613     VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedDepthResolveModes   = {};
46614     VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedStencilResolveModes = {};
46615     VULKAN_HPP_NAMESPACE::Bool32           independentResolveNone       = {};
46616     VULKAN_HPP_NAMESPACE::Bool32           independentResolve           = {};
46617   };
46618   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties ) ==
46619                               sizeof( VkPhysicalDeviceDepthStencilResolveProperties ),
46620                             "struct and wrapper have different size!" );
46621   VULKAN_HPP_STATIC_ASSERT(
46622     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties>::value,
46623     "struct wrapper is not a standard layout!" );
46624   VULKAN_HPP_STATIC_ASSERT(
46625     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties>::value,
46626     "PhysicalDeviceDepthStencilResolveProperties is not nothrow_move_constructible!" );
46627 
46628   template <>
46629   struct CppType<StructureType, StructureType::ePhysicalDeviceDepthStencilResolveProperties>
46630   {
46631     using Type = PhysicalDeviceDepthStencilResolveProperties;
46632   };
46633   using PhysicalDeviceDepthStencilResolvePropertiesKHR = PhysicalDeviceDepthStencilResolveProperties;
46634 
46635   struct PhysicalDeviceDescriptorIndexingFeatures
46636   {
46637     using NativeType = VkPhysicalDeviceDescriptorIndexingFeatures;
46638 
46639     static const bool                                  allowDuplicate = false;
46640     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
46641       StructureType::ePhysicalDeviceDescriptorIndexingFeatures;
46642 
46643 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDescriptorIndexingFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures46644     VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorIndexingFeatures(
46645       VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayDynamicIndexing_          = {},
46646       VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayDynamicIndexing_       = {},
46647       VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayDynamicIndexing_       = {},
46648       VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexing_         = {},
46649       VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexing_          = {},
46650       VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexing_         = {},
46651       VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexing_          = {},
46652       VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexing_       = {},
46653       VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayNonUniformIndexing_    = {},
46654       VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayNonUniformIndexing_    = {},
46655       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformBufferUpdateAfterBind_      = {},
46656       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingSampledImageUpdateAfterBind_       = {},
46657       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageImageUpdateAfterBind_       = {},
46658       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageBufferUpdateAfterBind_      = {},
46659       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind_ = {},
46660       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind_ = {},
46661       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUpdateUnusedWhilePending_          = {},
46662       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingPartiallyBound_                    = {},
46663       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingVariableDescriptorCount_           = {},
46664       VULKAN_HPP_NAMESPACE::Bool32 runtimeDescriptorArray_                             = {} ) VULKAN_HPP_NOEXCEPT
46665       : shaderInputAttachmentArrayDynamicIndexing( shaderInputAttachmentArrayDynamicIndexing_ )
46666       , shaderUniformTexelBufferArrayDynamicIndexing( shaderUniformTexelBufferArrayDynamicIndexing_ )
46667       , shaderStorageTexelBufferArrayDynamicIndexing( shaderStorageTexelBufferArrayDynamicIndexing_ )
46668       , shaderUniformBufferArrayNonUniformIndexing( shaderUniformBufferArrayNonUniformIndexing_ )
46669       , shaderSampledImageArrayNonUniformIndexing( shaderSampledImageArrayNonUniformIndexing_ )
46670       , shaderStorageBufferArrayNonUniformIndexing( shaderStorageBufferArrayNonUniformIndexing_ )
46671       , shaderStorageImageArrayNonUniformIndexing( shaderStorageImageArrayNonUniformIndexing_ )
46672       , shaderInputAttachmentArrayNonUniformIndexing( shaderInputAttachmentArrayNonUniformIndexing_ )
46673       , shaderUniformTexelBufferArrayNonUniformIndexing( shaderUniformTexelBufferArrayNonUniformIndexing_ )
46674       , shaderStorageTexelBufferArrayNonUniformIndexing( shaderStorageTexelBufferArrayNonUniformIndexing_ )
46675       , descriptorBindingUniformBufferUpdateAfterBind( descriptorBindingUniformBufferUpdateAfterBind_ )
46676       , descriptorBindingSampledImageUpdateAfterBind( descriptorBindingSampledImageUpdateAfterBind_ )
46677       , descriptorBindingStorageImageUpdateAfterBind( descriptorBindingStorageImageUpdateAfterBind_ )
46678       , descriptorBindingStorageBufferUpdateAfterBind( descriptorBindingStorageBufferUpdateAfterBind_ )
46679       , descriptorBindingUniformTexelBufferUpdateAfterBind( descriptorBindingUniformTexelBufferUpdateAfterBind_ )
46680       , descriptorBindingStorageTexelBufferUpdateAfterBind( descriptorBindingStorageTexelBufferUpdateAfterBind_ )
46681       , descriptorBindingUpdateUnusedWhilePending( descriptorBindingUpdateUnusedWhilePending_ )
46682       , descriptorBindingPartiallyBound( descriptorBindingPartiallyBound_ )
46683       , descriptorBindingVariableDescriptorCount( descriptorBindingVariableDescriptorCount_ )
46684       , runtimeDescriptorArray( runtimeDescriptorArray_ )
46685     {}
46686 
46687     VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorIndexingFeatures(
46688       PhysicalDeviceDescriptorIndexingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46689 
PhysicalDeviceDescriptorIndexingFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures46690     PhysicalDeviceDescriptorIndexingFeatures( VkPhysicalDeviceDescriptorIndexingFeatures const & rhs )
46691       VULKAN_HPP_NOEXCEPT
46692       : PhysicalDeviceDescriptorIndexingFeatures(
46693           *reinterpret_cast<PhysicalDeviceDescriptorIndexingFeatures const *>( &rhs ) )
46694     {}
46695 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
46696 
46697     PhysicalDeviceDescriptorIndexingFeatures &
46698       operator=( PhysicalDeviceDescriptorIndexingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46699 
46700     PhysicalDeviceDescriptorIndexingFeatures &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures46701       operator=( VkPhysicalDeviceDescriptorIndexingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
46702     {
46703       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures const *>( &rhs );
46704       return *this;
46705     }
46706 
46707 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures46708     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
46709     {
46710       pNext = pNext_;
46711       return *this;
46712     }
46713 
setShaderInputAttachmentArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures46714     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setShaderInputAttachmentArrayDynamicIndexing(
46715       VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
46716     {
46717       shaderInputAttachmentArrayDynamicIndexing = shaderInputAttachmentArrayDynamicIndexing_;
46718       return *this;
46719     }
46720 
setShaderUniformTexelBufferArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures46721     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setShaderUniformTexelBufferArrayDynamicIndexing(
46722       VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
46723     {
46724       shaderUniformTexelBufferArrayDynamicIndexing = shaderUniformTexelBufferArrayDynamicIndexing_;
46725       return *this;
46726     }
46727 
setShaderStorageTexelBufferArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures46728     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setShaderStorageTexelBufferArrayDynamicIndexing(
46729       VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
46730     {
46731       shaderStorageTexelBufferArrayDynamicIndexing = shaderStorageTexelBufferArrayDynamicIndexing_;
46732       return *this;
46733     }
46734 
setShaderUniformBufferArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures46735     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setShaderUniformBufferArrayNonUniformIndexing(
46736       VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
46737     {
46738       shaderUniformBufferArrayNonUniformIndexing = shaderUniformBufferArrayNonUniformIndexing_;
46739       return *this;
46740     }
46741 
setShaderSampledImageArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures46742     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setShaderSampledImageArrayNonUniformIndexing(
46743       VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
46744     {
46745       shaderSampledImageArrayNonUniformIndexing = shaderSampledImageArrayNonUniformIndexing_;
46746       return *this;
46747     }
46748 
setShaderStorageBufferArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures46749     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setShaderStorageBufferArrayNonUniformIndexing(
46750       VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
46751     {
46752       shaderStorageBufferArrayNonUniformIndexing = shaderStorageBufferArrayNonUniformIndexing_;
46753       return *this;
46754     }
46755 
setShaderStorageImageArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures46756     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setShaderStorageImageArrayNonUniformIndexing(
46757       VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
46758     {
46759       shaderStorageImageArrayNonUniformIndexing = shaderStorageImageArrayNonUniformIndexing_;
46760       return *this;
46761     }
46762 
setShaderInputAttachmentArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures46763     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setShaderInputAttachmentArrayNonUniformIndexing(
46764       VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
46765     {
46766       shaderInputAttachmentArrayNonUniformIndexing = shaderInputAttachmentArrayNonUniformIndexing_;
46767       return *this;
46768     }
46769 
46770     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setShaderUniformTexelBufferArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures46771                             setShaderUniformTexelBufferArrayNonUniformIndexing(
46772                               VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
46773     {
46774       shaderUniformTexelBufferArrayNonUniformIndexing = shaderUniformTexelBufferArrayNonUniformIndexing_;
46775       return *this;
46776     }
46777 
46778     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setShaderStorageTexelBufferArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures46779                             setShaderStorageTexelBufferArrayNonUniformIndexing(
46780                               VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
46781     {
46782       shaderStorageTexelBufferArrayNonUniformIndexing = shaderStorageTexelBufferArrayNonUniformIndexing_;
46783       return *this;
46784     }
46785 
setDescriptorBindingUniformBufferUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures46786     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setDescriptorBindingUniformBufferUpdateAfterBind(
46787       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
46788     {
46789       descriptorBindingUniformBufferUpdateAfterBind = descriptorBindingUniformBufferUpdateAfterBind_;
46790       return *this;
46791     }
46792 
setDescriptorBindingSampledImageUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures46793     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setDescriptorBindingSampledImageUpdateAfterBind(
46794       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingSampledImageUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
46795     {
46796       descriptorBindingSampledImageUpdateAfterBind = descriptorBindingSampledImageUpdateAfterBind_;
46797       return *this;
46798     }
46799 
setDescriptorBindingStorageImageUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures46800     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setDescriptorBindingStorageImageUpdateAfterBind(
46801       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageImageUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
46802     {
46803       descriptorBindingStorageImageUpdateAfterBind = descriptorBindingStorageImageUpdateAfterBind_;
46804       return *this;
46805     }
46806 
setDescriptorBindingStorageBufferUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures46807     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setDescriptorBindingStorageBufferUpdateAfterBind(
46808       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
46809     {
46810       descriptorBindingStorageBufferUpdateAfterBind = descriptorBindingStorageBufferUpdateAfterBind_;
46811       return *this;
46812     }
46813 
46814     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setDescriptorBindingUniformTexelBufferUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures46815                             setDescriptorBindingUniformTexelBufferUpdateAfterBind(
46816                               VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
46817     {
46818       descriptorBindingUniformTexelBufferUpdateAfterBind = descriptorBindingUniformTexelBufferUpdateAfterBind_;
46819       return *this;
46820     }
46821 
46822     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setDescriptorBindingStorageTexelBufferUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures46823                             setDescriptorBindingStorageTexelBufferUpdateAfterBind(
46824                               VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
46825     {
46826       descriptorBindingStorageTexelBufferUpdateAfterBind = descriptorBindingStorageTexelBufferUpdateAfterBind_;
46827       return *this;
46828     }
46829 
setDescriptorBindingUpdateUnusedWhilePendingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures46830     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setDescriptorBindingUpdateUnusedWhilePending(
46831       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUpdateUnusedWhilePending_ ) VULKAN_HPP_NOEXCEPT
46832     {
46833       descriptorBindingUpdateUnusedWhilePending = descriptorBindingUpdateUnusedWhilePending_;
46834       return *this;
46835     }
46836 
setDescriptorBindingPartiallyBoundVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures46837     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setDescriptorBindingPartiallyBound(
46838       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingPartiallyBound_ ) VULKAN_HPP_NOEXCEPT
46839     {
46840       descriptorBindingPartiallyBound = descriptorBindingPartiallyBound_;
46841       return *this;
46842     }
46843 
setDescriptorBindingVariableDescriptorCountVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures46844     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setDescriptorBindingVariableDescriptorCount(
46845       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingVariableDescriptorCount_ ) VULKAN_HPP_NOEXCEPT
46846     {
46847       descriptorBindingVariableDescriptorCount = descriptorBindingVariableDescriptorCount_;
46848       return *this;
46849     }
46850 
46851     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setRuntimeDescriptorArrayVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures46852       setRuntimeDescriptorArray( VULKAN_HPP_NAMESPACE::Bool32 runtimeDescriptorArray_ ) VULKAN_HPP_NOEXCEPT
46853     {
46854       runtimeDescriptorArray = runtimeDescriptorArray_;
46855       return *this;
46856     }
46857 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
46858 
operator VkPhysicalDeviceDescriptorIndexingFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures46859     explicit operator VkPhysicalDeviceDescriptorIndexingFeatures const &() const VULKAN_HPP_NOEXCEPT
46860     {
46861       return *reinterpret_cast<const VkPhysicalDeviceDescriptorIndexingFeatures *>( this );
46862     }
46863 
operator VkPhysicalDeviceDescriptorIndexingFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures46864     explicit operator VkPhysicalDeviceDescriptorIndexingFeatures &() VULKAN_HPP_NOEXCEPT
46865     {
46866       return *reinterpret_cast<VkPhysicalDeviceDescriptorIndexingFeatures *>( this );
46867     }
46868 
46869 #if 14 <= VULKAN_HPP_CPP_VERSION
46870     auto
46871 #else
46872     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
46873                void * const &,
46874                VULKAN_HPP_NAMESPACE::Bool32 const &,
46875                VULKAN_HPP_NAMESPACE::Bool32 const &,
46876                VULKAN_HPP_NAMESPACE::Bool32 const &,
46877                VULKAN_HPP_NAMESPACE::Bool32 const &,
46878                VULKAN_HPP_NAMESPACE::Bool32 const &,
46879                VULKAN_HPP_NAMESPACE::Bool32 const &,
46880                VULKAN_HPP_NAMESPACE::Bool32 const &,
46881                VULKAN_HPP_NAMESPACE::Bool32 const &,
46882                VULKAN_HPP_NAMESPACE::Bool32 const &,
46883                VULKAN_HPP_NAMESPACE::Bool32 const &,
46884                VULKAN_HPP_NAMESPACE::Bool32 const &,
46885                VULKAN_HPP_NAMESPACE::Bool32 const &,
46886                VULKAN_HPP_NAMESPACE::Bool32 const &,
46887                VULKAN_HPP_NAMESPACE::Bool32 const &,
46888                VULKAN_HPP_NAMESPACE::Bool32 const &,
46889                VULKAN_HPP_NAMESPACE::Bool32 const &,
46890                VULKAN_HPP_NAMESPACE::Bool32 const &,
46891                VULKAN_HPP_NAMESPACE::Bool32 const &,
46892                VULKAN_HPP_NAMESPACE::Bool32 const &,
46893                VULKAN_HPP_NAMESPACE::Bool32 const &>
46894 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures46895       reflect() const VULKAN_HPP_NOEXCEPT
46896     {
46897       return std::tie( sType,
46898                        pNext,
46899                        shaderInputAttachmentArrayDynamicIndexing,
46900                        shaderUniformTexelBufferArrayDynamicIndexing,
46901                        shaderStorageTexelBufferArrayDynamicIndexing,
46902                        shaderUniformBufferArrayNonUniformIndexing,
46903                        shaderSampledImageArrayNonUniformIndexing,
46904                        shaderStorageBufferArrayNonUniformIndexing,
46905                        shaderStorageImageArrayNonUniformIndexing,
46906                        shaderInputAttachmentArrayNonUniformIndexing,
46907                        shaderUniformTexelBufferArrayNonUniformIndexing,
46908                        shaderStorageTexelBufferArrayNonUniformIndexing,
46909                        descriptorBindingUniformBufferUpdateAfterBind,
46910                        descriptorBindingSampledImageUpdateAfterBind,
46911                        descriptorBindingStorageImageUpdateAfterBind,
46912                        descriptorBindingStorageBufferUpdateAfterBind,
46913                        descriptorBindingUniformTexelBufferUpdateAfterBind,
46914                        descriptorBindingStorageTexelBufferUpdateAfterBind,
46915                        descriptorBindingUpdateUnusedWhilePending,
46916                        descriptorBindingPartiallyBound,
46917                        descriptorBindingVariableDescriptorCount,
46918                        runtimeDescriptorArray );
46919     }
46920 
46921 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
46922     auto operator<=>( PhysicalDeviceDescriptorIndexingFeatures const & ) const = default;
46923 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures46924     bool operator==( PhysicalDeviceDescriptorIndexingFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
46925     {
46926       return this->reflect() == rhs.reflect();
46927     }
46928 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures46929     bool operator!=( PhysicalDeviceDescriptorIndexingFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
46930     {
46931       return this->reflect() != rhs.reflect();
46932     }
46933 #endif
46934 
46935   public:
46936     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDescriptorIndexingFeatures;
46937     void *                              pNext = {};
46938     VULKAN_HPP_NAMESPACE::Bool32        shaderInputAttachmentArrayDynamicIndexing          = {};
46939     VULKAN_HPP_NAMESPACE::Bool32        shaderUniformTexelBufferArrayDynamicIndexing       = {};
46940     VULKAN_HPP_NAMESPACE::Bool32        shaderStorageTexelBufferArrayDynamicIndexing       = {};
46941     VULKAN_HPP_NAMESPACE::Bool32        shaderUniformBufferArrayNonUniformIndexing         = {};
46942     VULKAN_HPP_NAMESPACE::Bool32        shaderSampledImageArrayNonUniformIndexing          = {};
46943     VULKAN_HPP_NAMESPACE::Bool32        shaderStorageBufferArrayNonUniformIndexing         = {};
46944     VULKAN_HPP_NAMESPACE::Bool32        shaderStorageImageArrayNonUniformIndexing          = {};
46945     VULKAN_HPP_NAMESPACE::Bool32        shaderInputAttachmentArrayNonUniformIndexing       = {};
46946     VULKAN_HPP_NAMESPACE::Bool32        shaderUniformTexelBufferArrayNonUniformIndexing    = {};
46947     VULKAN_HPP_NAMESPACE::Bool32        shaderStorageTexelBufferArrayNonUniformIndexing    = {};
46948     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingUniformBufferUpdateAfterBind      = {};
46949     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingSampledImageUpdateAfterBind       = {};
46950     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingStorageImageUpdateAfterBind       = {};
46951     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingStorageBufferUpdateAfterBind      = {};
46952     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingUniformTexelBufferUpdateAfterBind = {};
46953     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingStorageTexelBufferUpdateAfterBind = {};
46954     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingUpdateUnusedWhilePending          = {};
46955     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingPartiallyBound                    = {};
46956     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingVariableDescriptorCount           = {};
46957     VULKAN_HPP_NAMESPACE::Bool32        runtimeDescriptorArray                             = {};
46958   };
46959   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures ) ==
46960                               sizeof( VkPhysicalDeviceDescriptorIndexingFeatures ),
46961                             "struct and wrapper have different size!" );
46962   VULKAN_HPP_STATIC_ASSERT(
46963     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures>::value,
46964     "struct wrapper is not a standard layout!" );
46965   VULKAN_HPP_STATIC_ASSERT(
46966     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures>::value,
46967     "PhysicalDeviceDescriptorIndexingFeatures is not nothrow_move_constructible!" );
46968 
46969   template <>
46970   struct CppType<StructureType, StructureType::ePhysicalDeviceDescriptorIndexingFeatures>
46971   {
46972     using Type = PhysicalDeviceDescriptorIndexingFeatures;
46973   };
46974   using PhysicalDeviceDescriptorIndexingFeaturesEXT = PhysicalDeviceDescriptorIndexingFeatures;
46975 
46976   struct PhysicalDeviceDescriptorIndexingProperties
46977   {
46978     using NativeType = VkPhysicalDeviceDescriptorIndexingProperties;
46979 
46980     static const bool                                  allowDuplicate = false;
46981     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
46982       StructureType::ePhysicalDeviceDescriptorIndexingProperties;
46983 
46984 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDescriptorIndexingPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties46985     VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorIndexingProperties(
46986       uint32_t                     maxUpdateAfterBindDescriptorsInAllPools_              = {},
46987       VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexingNative_     = {},
46988       VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexingNative_      = {},
46989       VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexingNative_     = {},
46990       VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexingNative_      = {},
46991       VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexingNative_   = {},
46992       VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccessUpdateAfterBind_                    = {},
46993       VULKAN_HPP_NAMESPACE::Bool32 quadDivergentImplicitLod_                             = {},
46994       uint32_t                     maxPerStageDescriptorUpdateAfterBindSamplers_         = {},
46995       uint32_t                     maxPerStageDescriptorUpdateAfterBindUniformBuffers_   = {},
46996       uint32_t                     maxPerStageDescriptorUpdateAfterBindStorageBuffers_   = {},
46997       uint32_t                     maxPerStageDescriptorUpdateAfterBindSampledImages_    = {},
46998       uint32_t                     maxPerStageDescriptorUpdateAfterBindStorageImages_    = {},
46999       uint32_t                     maxPerStageDescriptorUpdateAfterBindInputAttachments_ = {},
47000       uint32_t                     maxPerStageUpdateAfterBindResources_                  = {},
47001       uint32_t                     maxDescriptorSetUpdateAfterBindSamplers_              = {},
47002       uint32_t                     maxDescriptorSetUpdateAfterBindUniformBuffers_        = {},
47003       uint32_t                     maxDescriptorSetUpdateAfterBindUniformBuffersDynamic_ = {},
47004       uint32_t                     maxDescriptorSetUpdateAfterBindStorageBuffers_        = {},
47005       uint32_t                     maxDescriptorSetUpdateAfterBindStorageBuffersDynamic_ = {},
47006       uint32_t                     maxDescriptorSetUpdateAfterBindSampledImages_         = {},
47007       uint32_t                     maxDescriptorSetUpdateAfterBindStorageImages_         = {},
47008       uint32_t                     maxDescriptorSetUpdateAfterBindInputAttachments_      = {} ) VULKAN_HPP_NOEXCEPT
47009       : maxUpdateAfterBindDescriptorsInAllPools( maxUpdateAfterBindDescriptorsInAllPools_ )
47010       , shaderUniformBufferArrayNonUniformIndexingNative( shaderUniformBufferArrayNonUniformIndexingNative_ )
47011       , shaderSampledImageArrayNonUniformIndexingNative( shaderSampledImageArrayNonUniformIndexingNative_ )
47012       , shaderStorageBufferArrayNonUniformIndexingNative( shaderStorageBufferArrayNonUniformIndexingNative_ )
47013       , shaderStorageImageArrayNonUniformIndexingNative( shaderStorageImageArrayNonUniformIndexingNative_ )
47014       , shaderInputAttachmentArrayNonUniformIndexingNative( shaderInputAttachmentArrayNonUniformIndexingNative_ )
47015       , robustBufferAccessUpdateAfterBind( robustBufferAccessUpdateAfterBind_ )
47016       , quadDivergentImplicitLod( quadDivergentImplicitLod_ )
47017       , maxPerStageDescriptorUpdateAfterBindSamplers( maxPerStageDescriptorUpdateAfterBindSamplers_ )
47018       , maxPerStageDescriptorUpdateAfterBindUniformBuffers( maxPerStageDescriptorUpdateAfterBindUniformBuffers_ )
47019       , maxPerStageDescriptorUpdateAfterBindStorageBuffers( maxPerStageDescriptorUpdateAfterBindStorageBuffers_ )
47020       , maxPerStageDescriptorUpdateAfterBindSampledImages( maxPerStageDescriptorUpdateAfterBindSampledImages_ )
47021       , maxPerStageDescriptorUpdateAfterBindStorageImages( maxPerStageDescriptorUpdateAfterBindStorageImages_ )
47022       , maxPerStageDescriptorUpdateAfterBindInputAttachments( maxPerStageDescriptorUpdateAfterBindInputAttachments_ )
47023       , maxPerStageUpdateAfterBindResources( maxPerStageUpdateAfterBindResources_ )
47024       , maxDescriptorSetUpdateAfterBindSamplers( maxDescriptorSetUpdateAfterBindSamplers_ )
47025       , maxDescriptorSetUpdateAfterBindUniformBuffers( maxDescriptorSetUpdateAfterBindUniformBuffers_ )
47026       , maxDescriptorSetUpdateAfterBindUniformBuffersDynamic( maxDescriptorSetUpdateAfterBindUniformBuffersDynamic_ )
47027       , maxDescriptorSetUpdateAfterBindStorageBuffers( maxDescriptorSetUpdateAfterBindStorageBuffers_ )
47028       , maxDescriptorSetUpdateAfterBindStorageBuffersDynamic( maxDescriptorSetUpdateAfterBindStorageBuffersDynamic_ )
47029       , maxDescriptorSetUpdateAfterBindSampledImages( maxDescriptorSetUpdateAfterBindSampledImages_ )
47030       , maxDescriptorSetUpdateAfterBindStorageImages( maxDescriptorSetUpdateAfterBindStorageImages_ )
47031       , maxDescriptorSetUpdateAfterBindInputAttachments( maxDescriptorSetUpdateAfterBindInputAttachments_ )
47032     {}
47033 
47034     VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorIndexingProperties(
47035       PhysicalDeviceDescriptorIndexingProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47036 
PhysicalDeviceDescriptorIndexingPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties47037     PhysicalDeviceDescriptorIndexingProperties( VkPhysicalDeviceDescriptorIndexingProperties const & rhs )
47038       VULKAN_HPP_NOEXCEPT
47039       : PhysicalDeviceDescriptorIndexingProperties(
47040           *reinterpret_cast<PhysicalDeviceDescriptorIndexingProperties const *>( &rhs ) )
47041     {}
47042 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
47043 
47044     PhysicalDeviceDescriptorIndexingProperties &
47045       operator=( PhysicalDeviceDescriptorIndexingProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47046 
47047     PhysicalDeviceDescriptorIndexingProperties &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties47048       operator=( VkPhysicalDeviceDescriptorIndexingProperties const & rhs ) VULKAN_HPP_NOEXCEPT
47049     {
47050       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties const *>( &rhs );
47051       return *this;
47052     }
47053 
operator VkPhysicalDeviceDescriptorIndexingProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties47054     explicit operator VkPhysicalDeviceDescriptorIndexingProperties const &() const VULKAN_HPP_NOEXCEPT
47055     {
47056       return *reinterpret_cast<const VkPhysicalDeviceDescriptorIndexingProperties *>( this );
47057     }
47058 
operator VkPhysicalDeviceDescriptorIndexingProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties47059     explicit operator VkPhysicalDeviceDescriptorIndexingProperties &() VULKAN_HPP_NOEXCEPT
47060     {
47061       return *reinterpret_cast<VkPhysicalDeviceDescriptorIndexingProperties *>( this );
47062     }
47063 
47064 #if 14 <= VULKAN_HPP_CPP_VERSION
47065     auto
47066 #else
47067     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
47068                void * const &,
47069                uint32_t const &,
47070                VULKAN_HPP_NAMESPACE::Bool32 const &,
47071                VULKAN_HPP_NAMESPACE::Bool32 const &,
47072                VULKAN_HPP_NAMESPACE::Bool32 const &,
47073                VULKAN_HPP_NAMESPACE::Bool32 const &,
47074                VULKAN_HPP_NAMESPACE::Bool32 const &,
47075                VULKAN_HPP_NAMESPACE::Bool32 const &,
47076                VULKAN_HPP_NAMESPACE::Bool32 const &,
47077                uint32_t const &,
47078                uint32_t const &,
47079                uint32_t const &,
47080                uint32_t const &,
47081                uint32_t const &,
47082                uint32_t const &,
47083                uint32_t const &,
47084                uint32_t const &,
47085                uint32_t const &,
47086                uint32_t const &,
47087                uint32_t const &,
47088                uint32_t const &,
47089                uint32_t const &,
47090                uint32_t const &,
47091                uint32_t const &>
47092 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties47093       reflect() const VULKAN_HPP_NOEXCEPT
47094     {
47095       return std::tie( sType,
47096                        pNext,
47097                        maxUpdateAfterBindDescriptorsInAllPools,
47098                        shaderUniformBufferArrayNonUniformIndexingNative,
47099                        shaderSampledImageArrayNonUniformIndexingNative,
47100                        shaderStorageBufferArrayNonUniformIndexingNative,
47101                        shaderStorageImageArrayNonUniformIndexingNative,
47102                        shaderInputAttachmentArrayNonUniformIndexingNative,
47103                        robustBufferAccessUpdateAfterBind,
47104                        quadDivergentImplicitLod,
47105                        maxPerStageDescriptorUpdateAfterBindSamplers,
47106                        maxPerStageDescriptorUpdateAfterBindUniformBuffers,
47107                        maxPerStageDescriptorUpdateAfterBindStorageBuffers,
47108                        maxPerStageDescriptorUpdateAfterBindSampledImages,
47109                        maxPerStageDescriptorUpdateAfterBindStorageImages,
47110                        maxPerStageDescriptorUpdateAfterBindInputAttachments,
47111                        maxPerStageUpdateAfterBindResources,
47112                        maxDescriptorSetUpdateAfterBindSamplers,
47113                        maxDescriptorSetUpdateAfterBindUniformBuffers,
47114                        maxDescriptorSetUpdateAfterBindUniformBuffersDynamic,
47115                        maxDescriptorSetUpdateAfterBindStorageBuffers,
47116                        maxDescriptorSetUpdateAfterBindStorageBuffersDynamic,
47117                        maxDescriptorSetUpdateAfterBindSampledImages,
47118                        maxDescriptorSetUpdateAfterBindStorageImages,
47119                        maxDescriptorSetUpdateAfterBindInputAttachments );
47120     }
47121 
47122 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
47123     auto operator<=>( PhysicalDeviceDescriptorIndexingProperties const & ) const = default;
47124 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties47125     bool operator==( PhysicalDeviceDescriptorIndexingProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
47126     {
47127       return this->reflect() == rhs.reflect();
47128     }
47129 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties47130     bool operator!=( PhysicalDeviceDescriptorIndexingProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
47131     {
47132       return this->reflect() != rhs.reflect();
47133     }
47134 #endif
47135 
47136   public:
47137     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDescriptorIndexingProperties;
47138     void *                              pNext = {};
47139     uint32_t                            maxUpdateAfterBindDescriptorsInAllPools              = {};
47140     VULKAN_HPP_NAMESPACE::Bool32        shaderUniformBufferArrayNonUniformIndexingNative     = {};
47141     VULKAN_HPP_NAMESPACE::Bool32        shaderSampledImageArrayNonUniformIndexingNative      = {};
47142     VULKAN_HPP_NAMESPACE::Bool32        shaderStorageBufferArrayNonUniformIndexingNative     = {};
47143     VULKAN_HPP_NAMESPACE::Bool32        shaderStorageImageArrayNonUniformIndexingNative      = {};
47144     VULKAN_HPP_NAMESPACE::Bool32        shaderInputAttachmentArrayNonUniformIndexingNative   = {};
47145     VULKAN_HPP_NAMESPACE::Bool32        robustBufferAccessUpdateAfterBind                    = {};
47146     VULKAN_HPP_NAMESPACE::Bool32        quadDivergentImplicitLod                             = {};
47147     uint32_t                            maxPerStageDescriptorUpdateAfterBindSamplers         = {};
47148     uint32_t                            maxPerStageDescriptorUpdateAfterBindUniformBuffers   = {};
47149     uint32_t                            maxPerStageDescriptorUpdateAfterBindStorageBuffers   = {};
47150     uint32_t                            maxPerStageDescriptorUpdateAfterBindSampledImages    = {};
47151     uint32_t                            maxPerStageDescriptorUpdateAfterBindStorageImages    = {};
47152     uint32_t                            maxPerStageDescriptorUpdateAfterBindInputAttachments = {};
47153     uint32_t                            maxPerStageUpdateAfterBindResources                  = {};
47154     uint32_t                            maxDescriptorSetUpdateAfterBindSamplers              = {};
47155     uint32_t                            maxDescriptorSetUpdateAfterBindUniformBuffers        = {};
47156     uint32_t                            maxDescriptorSetUpdateAfterBindUniformBuffersDynamic = {};
47157     uint32_t                            maxDescriptorSetUpdateAfterBindStorageBuffers        = {};
47158     uint32_t                            maxDescriptorSetUpdateAfterBindStorageBuffersDynamic = {};
47159     uint32_t                            maxDescriptorSetUpdateAfterBindSampledImages         = {};
47160     uint32_t                            maxDescriptorSetUpdateAfterBindStorageImages         = {};
47161     uint32_t                            maxDescriptorSetUpdateAfterBindInputAttachments      = {};
47162   };
47163   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties ) ==
47164                               sizeof( VkPhysicalDeviceDescriptorIndexingProperties ),
47165                             "struct and wrapper have different size!" );
47166   VULKAN_HPP_STATIC_ASSERT(
47167     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties>::value,
47168     "struct wrapper is not a standard layout!" );
47169   VULKAN_HPP_STATIC_ASSERT(
47170     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties>::value,
47171     "PhysicalDeviceDescriptorIndexingProperties is not nothrow_move_constructible!" );
47172 
47173   template <>
47174   struct CppType<StructureType, StructureType::ePhysicalDeviceDescriptorIndexingProperties>
47175   {
47176     using Type = PhysicalDeviceDescriptorIndexingProperties;
47177   };
47178   using PhysicalDeviceDescriptorIndexingPropertiesEXT = PhysicalDeviceDescriptorIndexingProperties;
47179 
47180   struct PhysicalDeviceDeviceGeneratedCommandsFeaturesNV
47181   {
47182     using NativeType = VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV;
47183 
47184     static const bool                                  allowDuplicate = false;
47185     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
47186       StructureType::ePhysicalDeviceDeviceGeneratedCommandsFeaturesNV;
47187 
47188 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDeviceGeneratedCommandsFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV47189     VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceGeneratedCommandsFeaturesNV(
47190       VULKAN_HPP_NAMESPACE::Bool32 deviceGeneratedCommands_ = {} ) VULKAN_HPP_NOEXCEPT
47191       : deviceGeneratedCommands( deviceGeneratedCommands_ )
47192     {}
47193 
47194     VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceGeneratedCommandsFeaturesNV(
47195       PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47196 
PhysicalDeviceDeviceGeneratedCommandsFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV47197     PhysicalDeviceDeviceGeneratedCommandsFeaturesNV( VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs )
47198       VULKAN_HPP_NOEXCEPT
47199       : PhysicalDeviceDeviceGeneratedCommandsFeaturesNV(
47200           *reinterpret_cast<PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const *>( &rhs ) )
47201     {}
47202 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
47203 
47204     PhysicalDeviceDeviceGeneratedCommandsFeaturesNV &
47205       operator=( PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47206 
47207     PhysicalDeviceDeviceGeneratedCommandsFeaturesNV &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV47208       operator=( VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
47209     {
47210       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const *>( &rhs );
47211       return *this;
47212     }
47213 
47214 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
47215     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsFeaturesNV &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV47216                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
47217     {
47218       pNext = pNext_;
47219       return *this;
47220     }
47221 
47222     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsFeaturesNV &
setDeviceGeneratedCommandsVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV47223       setDeviceGeneratedCommands( VULKAN_HPP_NAMESPACE::Bool32 deviceGeneratedCommands_ ) VULKAN_HPP_NOEXCEPT
47224     {
47225       deviceGeneratedCommands = deviceGeneratedCommands_;
47226       return *this;
47227     }
47228 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
47229 
operator VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV47230     explicit operator VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
47231     {
47232       return *reinterpret_cast<const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV *>( this );
47233     }
47234 
operator VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV47235     explicit operator VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV &() VULKAN_HPP_NOEXCEPT
47236     {
47237       return *reinterpret_cast<VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV *>( this );
47238     }
47239 
47240 #if 14 <= VULKAN_HPP_CPP_VERSION
47241     auto
47242 #else
47243     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
47244 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV47245       reflect() const VULKAN_HPP_NOEXCEPT
47246     {
47247       return std::tie( sType, pNext, deviceGeneratedCommands );
47248     }
47249 
47250 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
47251     auto operator<=>( PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & ) const = default;
47252 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV47253     bool operator==( PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
47254     {
47255       return this->reflect() == rhs.reflect();
47256     }
47257 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV47258     bool operator!=( PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
47259     {
47260       return this->reflect() != rhs.reflect();
47261     }
47262 #endif
47263 
47264   public:
47265     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDeviceGeneratedCommandsFeaturesNV;
47266     void *                              pNext = {};
47267     VULKAN_HPP_NAMESPACE::Bool32        deviceGeneratedCommands = {};
47268   };
47269   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV ) ==
47270                               sizeof( VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV ),
47271                             "struct and wrapper have different size!" );
47272   VULKAN_HPP_STATIC_ASSERT(
47273     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV>::value,
47274     "struct wrapper is not a standard layout!" );
47275   VULKAN_HPP_STATIC_ASSERT(
47276     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV>::value,
47277     "PhysicalDeviceDeviceGeneratedCommandsFeaturesNV is not nothrow_move_constructible!" );
47278 
47279   template <>
47280   struct CppType<StructureType, StructureType::ePhysicalDeviceDeviceGeneratedCommandsFeaturesNV>
47281   {
47282     using Type = PhysicalDeviceDeviceGeneratedCommandsFeaturesNV;
47283   };
47284 
47285   struct PhysicalDeviceDeviceGeneratedCommandsPropertiesNV
47286   {
47287     using NativeType = VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV;
47288 
47289     static const bool                                  allowDuplicate = false;
47290     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
47291       StructureType::ePhysicalDeviceDeviceGeneratedCommandsPropertiesNV;
47292 
47293 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDeviceGeneratedCommandsPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV47294     VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceGeneratedCommandsPropertiesNV(
47295       uint32_t maxGraphicsShaderGroupCount_              = {},
47296       uint32_t maxIndirectSequenceCount_                 = {},
47297       uint32_t maxIndirectCommandsTokenCount_            = {},
47298       uint32_t maxIndirectCommandsStreamCount_           = {},
47299       uint32_t maxIndirectCommandsTokenOffset_           = {},
47300       uint32_t maxIndirectCommandsStreamStride_          = {},
47301       uint32_t minSequencesCountBufferOffsetAlignment_   = {},
47302       uint32_t minSequencesIndexBufferOffsetAlignment_   = {},
47303       uint32_t minIndirectCommandsBufferOffsetAlignment_ = {} ) VULKAN_HPP_NOEXCEPT
47304       : maxGraphicsShaderGroupCount( maxGraphicsShaderGroupCount_ )
47305       , maxIndirectSequenceCount( maxIndirectSequenceCount_ )
47306       , maxIndirectCommandsTokenCount( maxIndirectCommandsTokenCount_ )
47307       , maxIndirectCommandsStreamCount( maxIndirectCommandsStreamCount_ )
47308       , maxIndirectCommandsTokenOffset( maxIndirectCommandsTokenOffset_ )
47309       , maxIndirectCommandsStreamStride( maxIndirectCommandsStreamStride_ )
47310       , minSequencesCountBufferOffsetAlignment( minSequencesCountBufferOffsetAlignment_ )
47311       , minSequencesIndexBufferOffsetAlignment( minSequencesIndexBufferOffsetAlignment_ )
47312       , minIndirectCommandsBufferOffsetAlignment( minIndirectCommandsBufferOffsetAlignment_ )
47313     {}
47314 
47315     VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceGeneratedCommandsPropertiesNV(
47316       PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47317 
PhysicalDeviceDeviceGeneratedCommandsPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV47318     PhysicalDeviceDeviceGeneratedCommandsPropertiesNV( VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & rhs )
47319       VULKAN_HPP_NOEXCEPT
47320       : PhysicalDeviceDeviceGeneratedCommandsPropertiesNV(
47321           *reinterpret_cast<PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const *>( &rhs ) )
47322     {}
47323 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
47324 
47325     PhysicalDeviceDeviceGeneratedCommandsPropertiesNV &
47326       operator=( PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47327 
47328     PhysicalDeviceDeviceGeneratedCommandsPropertiesNV &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV47329       operator=( VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
47330     {
47331       *this =
47332         *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const *>( &rhs );
47333       return *this;
47334     }
47335 
operator VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV47336     explicit operator VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
47337     {
47338       return *reinterpret_cast<const VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV *>( this );
47339     }
47340 
operator VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV47341     explicit operator VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV &() VULKAN_HPP_NOEXCEPT
47342     {
47343       return *reinterpret_cast<VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV *>( this );
47344     }
47345 
47346 #if 14 <= VULKAN_HPP_CPP_VERSION
47347     auto
47348 #else
47349     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
47350                void * const &,
47351                uint32_t const &,
47352                uint32_t const &,
47353                uint32_t const &,
47354                uint32_t const &,
47355                uint32_t const &,
47356                uint32_t const &,
47357                uint32_t const &,
47358                uint32_t const &,
47359                uint32_t const &>
47360 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV47361       reflect() const VULKAN_HPP_NOEXCEPT
47362     {
47363       return std::tie( sType,
47364                        pNext,
47365                        maxGraphicsShaderGroupCount,
47366                        maxIndirectSequenceCount,
47367                        maxIndirectCommandsTokenCount,
47368                        maxIndirectCommandsStreamCount,
47369                        maxIndirectCommandsTokenOffset,
47370                        maxIndirectCommandsStreamStride,
47371                        minSequencesCountBufferOffsetAlignment,
47372                        minSequencesIndexBufferOffsetAlignment,
47373                        minIndirectCommandsBufferOffsetAlignment );
47374     }
47375 
47376 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
47377     auto operator<=>( PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & ) const = default;
47378 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV47379     bool operator==( PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
47380     {
47381       return this->reflect() == rhs.reflect();
47382     }
47383 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV47384     bool operator!=( PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
47385     {
47386       return this->reflect() != rhs.reflect();
47387     }
47388 #endif
47389 
47390   public:
47391     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDeviceGeneratedCommandsPropertiesNV;
47392     void *                              pNext = {};
47393     uint32_t                            maxGraphicsShaderGroupCount              = {};
47394     uint32_t                            maxIndirectSequenceCount                 = {};
47395     uint32_t                            maxIndirectCommandsTokenCount            = {};
47396     uint32_t                            maxIndirectCommandsStreamCount           = {};
47397     uint32_t                            maxIndirectCommandsTokenOffset           = {};
47398     uint32_t                            maxIndirectCommandsStreamStride          = {};
47399     uint32_t                            minSequencesCountBufferOffsetAlignment   = {};
47400     uint32_t                            minSequencesIndexBufferOffsetAlignment   = {};
47401     uint32_t                            minIndirectCommandsBufferOffsetAlignment = {};
47402   };
47403   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV ) ==
47404                               sizeof( VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV ),
47405                             "struct and wrapper have different size!" );
47406   VULKAN_HPP_STATIC_ASSERT(
47407     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV>::value,
47408     "struct wrapper is not a standard layout!" );
47409   VULKAN_HPP_STATIC_ASSERT(
47410     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV>::value,
47411     "PhysicalDeviceDeviceGeneratedCommandsPropertiesNV is not nothrow_move_constructible!" );
47412 
47413   template <>
47414   struct CppType<StructureType, StructureType::ePhysicalDeviceDeviceGeneratedCommandsPropertiesNV>
47415   {
47416     using Type = PhysicalDeviceDeviceGeneratedCommandsPropertiesNV;
47417   };
47418 
47419   struct PhysicalDeviceDeviceMemoryReportFeaturesEXT
47420   {
47421     using NativeType = VkPhysicalDeviceDeviceMemoryReportFeaturesEXT;
47422 
47423     static const bool                                  allowDuplicate = false;
47424     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
47425       StructureType::ePhysicalDeviceDeviceMemoryReportFeaturesEXT;
47426 
47427 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDeviceMemoryReportFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT47428     VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceMemoryReportFeaturesEXT(
47429       VULKAN_HPP_NAMESPACE::Bool32 deviceMemoryReport_ = {} ) VULKAN_HPP_NOEXCEPT
47430       : deviceMemoryReport( deviceMemoryReport_ )
47431     {}
47432 
47433     VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceMemoryReportFeaturesEXT(
47434       PhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47435 
PhysicalDeviceDeviceMemoryReportFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT47436     PhysicalDeviceDeviceMemoryReportFeaturesEXT( VkPhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs )
47437       VULKAN_HPP_NOEXCEPT
47438       : PhysicalDeviceDeviceMemoryReportFeaturesEXT(
47439           *reinterpret_cast<PhysicalDeviceDeviceMemoryReportFeaturesEXT const *>( &rhs ) )
47440     {}
47441 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
47442 
47443     PhysicalDeviceDeviceMemoryReportFeaturesEXT &
47444       operator=( PhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47445 
47446     PhysicalDeviceDeviceMemoryReportFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT47447       operator=( VkPhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
47448     {
47449       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT const *>( &rhs );
47450       return *this;
47451     }
47452 
47453 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT47454     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceMemoryReportFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
47455     {
47456       pNext = pNext_;
47457       return *this;
47458     }
47459 
47460     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceMemoryReportFeaturesEXT &
setDeviceMemoryReportVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT47461       setDeviceMemoryReport( VULKAN_HPP_NAMESPACE::Bool32 deviceMemoryReport_ ) VULKAN_HPP_NOEXCEPT
47462     {
47463       deviceMemoryReport = deviceMemoryReport_;
47464       return *this;
47465     }
47466 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
47467 
operator VkPhysicalDeviceDeviceMemoryReportFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT47468     explicit operator VkPhysicalDeviceDeviceMemoryReportFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
47469     {
47470       return *reinterpret_cast<const VkPhysicalDeviceDeviceMemoryReportFeaturesEXT *>( this );
47471     }
47472 
operator VkPhysicalDeviceDeviceMemoryReportFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT47473     explicit operator VkPhysicalDeviceDeviceMemoryReportFeaturesEXT &() VULKAN_HPP_NOEXCEPT
47474     {
47475       return *reinterpret_cast<VkPhysicalDeviceDeviceMemoryReportFeaturesEXT *>( this );
47476     }
47477 
47478 #if 14 <= VULKAN_HPP_CPP_VERSION
47479     auto
47480 #else
47481     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
47482 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT47483       reflect() const VULKAN_HPP_NOEXCEPT
47484     {
47485       return std::tie( sType, pNext, deviceMemoryReport );
47486     }
47487 
47488 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
47489     auto operator<=>( PhysicalDeviceDeviceMemoryReportFeaturesEXT const & ) const = default;
47490 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT47491     bool operator==( PhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
47492     {
47493       return this->reflect() == rhs.reflect();
47494     }
47495 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT47496     bool operator!=( PhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
47497     {
47498       return this->reflect() != rhs.reflect();
47499     }
47500 #endif
47501 
47502   public:
47503     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDeviceMemoryReportFeaturesEXT;
47504     void *                              pNext = {};
47505     VULKAN_HPP_NAMESPACE::Bool32        deviceMemoryReport = {};
47506   };
47507   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT ) ==
47508                               sizeof( VkPhysicalDeviceDeviceMemoryReportFeaturesEXT ),
47509                             "struct and wrapper have different size!" );
47510   VULKAN_HPP_STATIC_ASSERT(
47511     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT>::value,
47512     "struct wrapper is not a standard layout!" );
47513   VULKAN_HPP_STATIC_ASSERT(
47514     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT>::value,
47515     "PhysicalDeviceDeviceMemoryReportFeaturesEXT is not nothrow_move_constructible!" );
47516 
47517   template <>
47518   struct CppType<StructureType, StructureType::ePhysicalDeviceDeviceMemoryReportFeaturesEXT>
47519   {
47520     using Type = PhysicalDeviceDeviceMemoryReportFeaturesEXT;
47521   };
47522 
47523   struct PhysicalDeviceDiagnosticsConfigFeaturesNV
47524   {
47525     using NativeType = VkPhysicalDeviceDiagnosticsConfigFeaturesNV;
47526 
47527     static const bool                                  allowDuplicate = false;
47528     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
47529       StructureType::ePhysicalDeviceDiagnosticsConfigFeaturesNV;
47530 
47531 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDiagnosticsConfigFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV47532     VULKAN_HPP_CONSTEXPR PhysicalDeviceDiagnosticsConfigFeaturesNV(
47533       VULKAN_HPP_NAMESPACE::Bool32 diagnosticsConfig_ = {} ) VULKAN_HPP_NOEXCEPT
47534       : diagnosticsConfig( diagnosticsConfig_ )
47535     {}
47536 
47537     VULKAN_HPP_CONSTEXPR PhysicalDeviceDiagnosticsConfigFeaturesNV(
47538       PhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47539 
PhysicalDeviceDiagnosticsConfigFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV47540     PhysicalDeviceDiagnosticsConfigFeaturesNV( VkPhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs )
47541       VULKAN_HPP_NOEXCEPT
47542       : PhysicalDeviceDiagnosticsConfigFeaturesNV(
47543           *reinterpret_cast<PhysicalDeviceDiagnosticsConfigFeaturesNV const *>( &rhs ) )
47544     {}
47545 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
47546 
47547     PhysicalDeviceDiagnosticsConfigFeaturesNV &
47548       operator=( PhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47549 
47550     PhysicalDeviceDiagnosticsConfigFeaturesNV &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV47551       operator=( VkPhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
47552     {
47553       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV const *>( &rhs );
47554       return *this;
47555     }
47556 
47557 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV47558     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDiagnosticsConfigFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
47559     {
47560       pNext = pNext_;
47561       return *this;
47562     }
47563 
47564     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDiagnosticsConfigFeaturesNV &
setDiagnosticsConfigVULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV47565                             setDiagnosticsConfig( VULKAN_HPP_NAMESPACE::Bool32 diagnosticsConfig_ ) VULKAN_HPP_NOEXCEPT
47566     {
47567       diagnosticsConfig = diagnosticsConfig_;
47568       return *this;
47569     }
47570 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
47571 
operator VkPhysicalDeviceDiagnosticsConfigFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV47572     explicit operator VkPhysicalDeviceDiagnosticsConfigFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
47573     {
47574       return *reinterpret_cast<const VkPhysicalDeviceDiagnosticsConfigFeaturesNV *>( this );
47575     }
47576 
operator VkPhysicalDeviceDiagnosticsConfigFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV47577     explicit operator VkPhysicalDeviceDiagnosticsConfigFeaturesNV &() VULKAN_HPP_NOEXCEPT
47578     {
47579       return *reinterpret_cast<VkPhysicalDeviceDiagnosticsConfigFeaturesNV *>( this );
47580     }
47581 
47582 #if 14 <= VULKAN_HPP_CPP_VERSION
47583     auto
47584 #else
47585     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
47586 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV47587       reflect() const VULKAN_HPP_NOEXCEPT
47588     {
47589       return std::tie( sType, pNext, diagnosticsConfig );
47590     }
47591 
47592 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
47593     auto operator<=>( PhysicalDeviceDiagnosticsConfigFeaturesNV const & ) const = default;
47594 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV47595     bool operator==( PhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
47596     {
47597       return this->reflect() == rhs.reflect();
47598     }
47599 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV47600     bool operator!=( PhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
47601     {
47602       return this->reflect() != rhs.reflect();
47603     }
47604 #endif
47605 
47606   public:
47607     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::ePhysicalDeviceDiagnosticsConfigFeaturesNV;
47608     void *                              pNext             = {};
47609     VULKAN_HPP_NAMESPACE::Bool32        diagnosticsConfig = {};
47610   };
47611   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV ) ==
47612                               sizeof( VkPhysicalDeviceDiagnosticsConfigFeaturesNV ),
47613                             "struct and wrapper have different size!" );
47614   VULKAN_HPP_STATIC_ASSERT(
47615     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV>::value,
47616     "struct wrapper is not a standard layout!" );
47617   VULKAN_HPP_STATIC_ASSERT(
47618     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV>::value,
47619     "PhysicalDeviceDiagnosticsConfigFeaturesNV is not nothrow_move_constructible!" );
47620 
47621   template <>
47622   struct CppType<StructureType, StructureType::ePhysicalDeviceDiagnosticsConfigFeaturesNV>
47623   {
47624     using Type = PhysicalDeviceDiagnosticsConfigFeaturesNV;
47625   };
47626 
47627   struct PhysicalDeviceDiscardRectanglePropertiesEXT
47628   {
47629     using NativeType = VkPhysicalDeviceDiscardRectanglePropertiesEXT;
47630 
47631     static const bool                                  allowDuplicate = false;
47632     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
47633       StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT;
47634 
47635 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
47636     VULKAN_HPP_CONSTEXPR
PhysicalDeviceDiscardRectanglePropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT47637       PhysicalDeviceDiscardRectanglePropertiesEXT( uint32_t maxDiscardRectangles_ = {} ) VULKAN_HPP_NOEXCEPT
47638       : maxDiscardRectangles( maxDiscardRectangles_ )
47639     {}
47640 
47641     VULKAN_HPP_CONSTEXPR PhysicalDeviceDiscardRectanglePropertiesEXT(
47642       PhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47643 
PhysicalDeviceDiscardRectanglePropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT47644     PhysicalDeviceDiscardRectanglePropertiesEXT( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs )
47645       VULKAN_HPP_NOEXCEPT
47646       : PhysicalDeviceDiscardRectanglePropertiesEXT(
47647           *reinterpret_cast<PhysicalDeviceDiscardRectanglePropertiesEXT const *>( &rhs ) )
47648     {}
47649 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
47650 
47651     PhysicalDeviceDiscardRectanglePropertiesEXT &
47652       operator=( PhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47653 
47654     PhysicalDeviceDiscardRectanglePropertiesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT47655       operator=( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
47656     {
47657       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT const *>( &rhs );
47658       return *this;
47659     }
47660 
operator VkPhysicalDeviceDiscardRectanglePropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT47661     explicit operator VkPhysicalDeviceDiscardRectanglePropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
47662     {
47663       return *reinterpret_cast<const VkPhysicalDeviceDiscardRectanglePropertiesEXT *>( this );
47664     }
47665 
operator VkPhysicalDeviceDiscardRectanglePropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT47666     explicit operator VkPhysicalDeviceDiscardRectanglePropertiesEXT &() VULKAN_HPP_NOEXCEPT
47667     {
47668       return *reinterpret_cast<VkPhysicalDeviceDiscardRectanglePropertiesEXT *>( this );
47669     }
47670 
47671 #if 14 <= VULKAN_HPP_CPP_VERSION
47672     auto
47673 #else
47674     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
47675 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT47676       reflect() const VULKAN_HPP_NOEXCEPT
47677     {
47678       return std::tie( sType, pNext, maxDiscardRectangles );
47679     }
47680 
47681 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
47682     auto operator<=>( PhysicalDeviceDiscardRectanglePropertiesEXT const & ) const = default;
47683 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT47684     bool operator==( PhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
47685     {
47686       return this->reflect() == rhs.reflect();
47687     }
47688 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT47689     bool operator!=( PhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
47690     {
47691       return this->reflect() != rhs.reflect();
47692     }
47693 #endif
47694 
47695   public:
47696     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT;
47697     void *                              pNext = {};
47698     uint32_t                            maxDiscardRectangles = {};
47699   };
47700   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT ) ==
47701                               sizeof( VkPhysicalDeviceDiscardRectanglePropertiesEXT ),
47702                             "struct and wrapper have different size!" );
47703   VULKAN_HPP_STATIC_ASSERT(
47704     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT>::value,
47705     "struct wrapper is not a standard layout!" );
47706   VULKAN_HPP_STATIC_ASSERT(
47707     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT>::value,
47708     "PhysicalDeviceDiscardRectanglePropertiesEXT is not nothrow_move_constructible!" );
47709 
47710   template <>
47711   struct CppType<StructureType, StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT>
47712   {
47713     using Type = PhysicalDeviceDiscardRectanglePropertiesEXT;
47714   };
47715 
47716   struct PhysicalDeviceDriverProperties
47717   {
47718     using NativeType = VkPhysicalDeviceDriverProperties;
47719 
47720     static const bool                                  allowDuplicate = false;
47721     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDriverProperties;
47722 
47723 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDriverPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties47724     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDriverProperties(
47725       VULKAN_HPP_NAMESPACE::DriverId                    driverID_   = VULKAN_HPP_NAMESPACE::DriverId::eAmdProprietary,
47726       std::array<char, VK_MAX_DRIVER_NAME_SIZE> const & driverName_ = {},
47727       std::array<char, VK_MAX_DRIVER_INFO_SIZE> const & driverInfo_ = {},
47728       VULKAN_HPP_NAMESPACE::ConformanceVersion          conformanceVersion_ = {} ) VULKAN_HPP_NOEXCEPT
47729       : driverID( driverID_ )
47730       , driverName( driverName_ )
47731       , driverInfo( driverInfo_ )
47732       , conformanceVersion( conformanceVersion_ )
47733     {}
47734 
47735     VULKAN_HPP_CONSTEXPR_14
47736       PhysicalDeviceDriverProperties( PhysicalDeviceDriverProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47737 
PhysicalDeviceDriverPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties47738     PhysicalDeviceDriverProperties( VkPhysicalDeviceDriverProperties const & rhs ) VULKAN_HPP_NOEXCEPT
47739       : PhysicalDeviceDriverProperties( *reinterpret_cast<PhysicalDeviceDriverProperties const *>( &rhs ) )
47740     {}
47741 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
47742 
47743     PhysicalDeviceDriverProperties &
47744       operator=( PhysicalDeviceDriverProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47745 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties47746     PhysicalDeviceDriverProperties & operator=( VkPhysicalDeviceDriverProperties const & rhs ) VULKAN_HPP_NOEXCEPT
47747     {
47748       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties const *>( &rhs );
47749       return *this;
47750     }
47751 
operator VkPhysicalDeviceDriverProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties47752     explicit operator VkPhysicalDeviceDriverProperties const &() const VULKAN_HPP_NOEXCEPT
47753     {
47754       return *reinterpret_cast<const VkPhysicalDeviceDriverProperties *>( this );
47755     }
47756 
operator VkPhysicalDeviceDriverProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties47757     explicit operator VkPhysicalDeviceDriverProperties &() VULKAN_HPP_NOEXCEPT
47758     {
47759       return *reinterpret_cast<VkPhysicalDeviceDriverProperties *>( this );
47760     }
47761 
47762 #if 14 <= VULKAN_HPP_CPP_VERSION
47763     auto
47764 #else
47765     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
47766                void * const &,
47767                VULKAN_HPP_NAMESPACE::DriverId const &,
47768                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DRIVER_NAME_SIZE> const &,
47769                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DRIVER_INFO_SIZE> const &,
47770                VULKAN_HPP_NAMESPACE::ConformanceVersion const &>
47771 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties47772       reflect() const VULKAN_HPP_NOEXCEPT
47773     {
47774       return std::tie( sType, pNext, driverID, driverName, driverInfo, conformanceVersion );
47775     }
47776 
47777 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
47778     auto operator<=>( PhysicalDeviceDriverProperties const & ) const = default;
47779 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties47780     bool operator==( PhysicalDeviceDriverProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
47781     {
47782       return this->reflect() == rhs.reflect();
47783     }
47784 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties47785     bool operator!=( PhysicalDeviceDriverProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
47786     {
47787       return this->reflect() != rhs.reflect();
47788     }
47789 #endif
47790 
47791   public:
47792     VULKAN_HPP_NAMESPACE::StructureType sType    = StructureType::ePhysicalDeviceDriverProperties;
47793     void *                              pNext    = {};
47794     VULKAN_HPP_NAMESPACE::DriverId      driverID = VULKAN_HPP_NAMESPACE::DriverId::eAmdProprietary;
47795     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DRIVER_NAME_SIZE> driverName         = {};
47796     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DRIVER_INFO_SIZE> driverInfo         = {};
47797     VULKAN_HPP_NAMESPACE::ConformanceVersion                            conformanceVersion = {};
47798   };
47799   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties ) ==
47800                               sizeof( VkPhysicalDeviceDriverProperties ),
47801                             "struct and wrapper have different size!" );
47802   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties>::value,
47803                             "struct wrapper is not a standard layout!" );
47804   VULKAN_HPP_STATIC_ASSERT(
47805     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties>::value,
47806     "PhysicalDeviceDriverProperties is not nothrow_move_constructible!" );
47807 
47808   template <>
47809   struct CppType<StructureType, StructureType::ePhysicalDeviceDriverProperties>
47810   {
47811     using Type = PhysicalDeviceDriverProperties;
47812   };
47813   using PhysicalDeviceDriverPropertiesKHR = PhysicalDeviceDriverProperties;
47814 
47815   struct PhysicalDeviceDrmPropertiesEXT
47816   {
47817     using NativeType = VkPhysicalDeviceDrmPropertiesEXT;
47818 
47819     static const bool                                  allowDuplicate = false;
47820     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDrmPropertiesEXT;
47821 
47822 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDrmPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDrmPropertiesEXT47823     VULKAN_HPP_CONSTEXPR PhysicalDeviceDrmPropertiesEXT( VULKAN_HPP_NAMESPACE::Bool32 hasPrimary_   = {},
47824                                                          VULKAN_HPP_NAMESPACE::Bool32 hasRender_    = {},
47825                                                          int64_t                      primaryMajor_ = {},
47826                                                          int64_t                      primaryMinor_ = {},
47827                                                          int64_t                      renderMajor_  = {},
47828                                                          int64_t renderMinor_ = {} ) VULKAN_HPP_NOEXCEPT
47829       : hasPrimary( hasPrimary_ )
47830       , hasRender( hasRender_ )
47831       , primaryMajor( primaryMajor_ )
47832       , primaryMinor( primaryMinor_ )
47833       , renderMajor( renderMajor_ )
47834       , renderMinor( renderMinor_ )
47835     {}
47836 
47837     VULKAN_HPP_CONSTEXPR
47838       PhysicalDeviceDrmPropertiesEXT( PhysicalDeviceDrmPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47839 
PhysicalDeviceDrmPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDrmPropertiesEXT47840     PhysicalDeviceDrmPropertiesEXT( VkPhysicalDeviceDrmPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
47841       : PhysicalDeviceDrmPropertiesEXT( *reinterpret_cast<PhysicalDeviceDrmPropertiesEXT const *>( &rhs ) )
47842     {}
47843 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
47844 
47845     PhysicalDeviceDrmPropertiesEXT &
47846       operator=( PhysicalDeviceDrmPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47847 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDrmPropertiesEXT47848     PhysicalDeviceDrmPropertiesEXT & operator=( VkPhysicalDeviceDrmPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
47849     {
47850       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDrmPropertiesEXT const *>( &rhs );
47851       return *this;
47852     }
47853 
operator VkPhysicalDeviceDrmPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDrmPropertiesEXT47854     explicit operator VkPhysicalDeviceDrmPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
47855     {
47856       return *reinterpret_cast<const VkPhysicalDeviceDrmPropertiesEXT *>( this );
47857     }
47858 
operator VkPhysicalDeviceDrmPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceDrmPropertiesEXT47859     explicit operator VkPhysicalDeviceDrmPropertiesEXT &() VULKAN_HPP_NOEXCEPT
47860     {
47861       return *reinterpret_cast<VkPhysicalDeviceDrmPropertiesEXT *>( this );
47862     }
47863 
47864 #if 14 <= VULKAN_HPP_CPP_VERSION
47865     auto
47866 #else
47867     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
47868                void * const &,
47869                VULKAN_HPP_NAMESPACE::Bool32 const &,
47870                VULKAN_HPP_NAMESPACE::Bool32 const &,
47871                int64_t const &,
47872                int64_t const &,
47873                int64_t const &,
47874                int64_t const &>
47875 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDrmPropertiesEXT47876       reflect() const VULKAN_HPP_NOEXCEPT
47877     {
47878       return std::tie( sType, pNext, hasPrimary, hasRender, primaryMajor, primaryMinor, renderMajor, renderMinor );
47879     }
47880 
47881 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
47882     auto operator<=>( PhysicalDeviceDrmPropertiesEXT const & ) const = default;
47883 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDrmPropertiesEXT47884     bool operator==( PhysicalDeviceDrmPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
47885     {
47886       return this->reflect() == rhs.reflect();
47887     }
47888 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDrmPropertiesEXT47889     bool operator!=( PhysicalDeviceDrmPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
47890     {
47891       return this->reflect() != rhs.reflect();
47892     }
47893 #endif
47894 
47895   public:
47896     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::ePhysicalDeviceDrmPropertiesEXT;
47897     void *                              pNext        = {};
47898     VULKAN_HPP_NAMESPACE::Bool32        hasPrimary   = {};
47899     VULKAN_HPP_NAMESPACE::Bool32        hasRender    = {};
47900     int64_t                             primaryMajor = {};
47901     int64_t                             primaryMinor = {};
47902     int64_t                             renderMajor  = {};
47903     int64_t                             renderMinor  = {};
47904   };
47905   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDrmPropertiesEXT ) ==
47906                               sizeof( VkPhysicalDeviceDrmPropertiesEXT ),
47907                             "struct and wrapper have different size!" );
47908   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceDrmPropertiesEXT>::value,
47909                             "struct wrapper is not a standard layout!" );
47910   VULKAN_HPP_STATIC_ASSERT(
47911     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceDrmPropertiesEXT>::value,
47912     "PhysicalDeviceDrmPropertiesEXT is not nothrow_move_constructible!" );
47913 
47914   template <>
47915   struct CppType<StructureType, StructureType::ePhysicalDeviceDrmPropertiesEXT>
47916   {
47917     using Type = PhysicalDeviceDrmPropertiesEXT;
47918   };
47919 
47920   struct PhysicalDeviceDynamicRenderingFeaturesKHR
47921   {
47922     using NativeType = VkPhysicalDeviceDynamicRenderingFeaturesKHR;
47923 
47924     static const bool                                  allowDuplicate = false;
47925     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
47926       StructureType::ePhysicalDeviceDynamicRenderingFeaturesKHR;
47927 
47928 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDynamicRenderingFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeaturesKHR47929     VULKAN_HPP_CONSTEXPR PhysicalDeviceDynamicRenderingFeaturesKHR(
47930       VULKAN_HPP_NAMESPACE::Bool32 dynamicRendering_ = {} ) VULKAN_HPP_NOEXCEPT : dynamicRendering( dynamicRendering_ )
47931     {}
47932 
47933     VULKAN_HPP_CONSTEXPR PhysicalDeviceDynamicRenderingFeaturesKHR(
47934       PhysicalDeviceDynamicRenderingFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47935 
PhysicalDeviceDynamicRenderingFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeaturesKHR47936     PhysicalDeviceDynamicRenderingFeaturesKHR( VkPhysicalDeviceDynamicRenderingFeaturesKHR const & rhs )
47937       VULKAN_HPP_NOEXCEPT
47938       : PhysicalDeviceDynamicRenderingFeaturesKHR(
47939           *reinterpret_cast<PhysicalDeviceDynamicRenderingFeaturesKHR const *>( &rhs ) )
47940     {}
47941 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
47942 
47943     PhysicalDeviceDynamicRenderingFeaturesKHR &
47944       operator=( PhysicalDeviceDynamicRenderingFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47945 
47946     PhysicalDeviceDynamicRenderingFeaturesKHR &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeaturesKHR47947       operator=( VkPhysicalDeviceDynamicRenderingFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
47948     {
47949       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeaturesKHR const *>( &rhs );
47950       return *this;
47951     }
47952 
47953 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeaturesKHR47954     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDynamicRenderingFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
47955     {
47956       pNext = pNext_;
47957       return *this;
47958     }
47959 
47960     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDynamicRenderingFeaturesKHR &
setDynamicRenderingVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeaturesKHR47961                             setDynamicRendering( VULKAN_HPP_NAMESPACE::Bool32 dynamicRendering_ ) VULKAN_HPP_NOEXCEPT
47962     {
47963       dynamicRendering = dynamicRendering_;
47964       return *this;
47965     }
47966 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
47967 
operator VkPhysicalDeviceDynamicRenderingFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeaturesKHR47968     explicit operator VkPhysicalDeviceDynamicRenderingFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
47969     {
47970       return *reinterpret_cast<const VkPhysicalDeviceDynamicRenderingFeaturesKHR *>( this );
47971     }
47972 
operator VkPhysicalDeviceDynamicRenderingFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeaturesKHR47973     explicit operator VkPhysicalDeviceDynamicRenderingFeaturesKHR &() VULKAN_HPP_NOEXCEPT
47974     {
47975       return *reinterpret_cast<VkPhysicalDeviceDynamicRenderingFeaturesKHR *>( this );
47976     }
47977 
47978 #if 14 <= VULKAN_HPP_CPP_VERSION
47979     auto
47980 #else
47981     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
47982 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeaturesKHR47983       reflect() const VULKAN_HPP_NOEXCEPT
47984     {
47985       return std::tie( sType, pNext, dynamicRendering );
47986     }
47987 
47988 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
47989     auto operator<=>( PhysicalDeviceDynamicRenderingFeaturesKHR const & ) const = default;
47990 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeaturesKHR47991     bool operator==( PhysicalDeviceDynamicRenderingFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
47992     {
47993       return this->reflect() == rhs.reflect();
47994     }
47995 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeaturesKHR47996     bool operator!=( PhysicalDeviceDynamicRenderingFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
47997     {
47998       return this->reflect() != rhs.reflect();
47999     }
48000 #endif
48001 
48002   public:
48003     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::ePhysicalDeviceDynamicRenderingFeaturesKHR;
48004     void *                              pNext            = {};
48005     VULKAN_HPP_NAMESPACE::Bool32        dynamicRendering = {};
48006   };
48007   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeaturesKHR ) ==
48008                               sizeof( VkPhysicalDeviceDynamicRenderingFeaturesKHR ),
48009                             "struct and wrapper have different size!" );
48010   VULKAN_HPP_STATIC_ASSERT(
48011     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeaturesKHR>::value,
48012     "struct wrapper is not a standard layout!" );
48013   VULKAN_HPP_STATIC_ASSERT(
48014     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeaturesKHR>::value,
48015     "PhysicalDeviceDynamicRenderingFeaturesKHR is not nothrow_move_constructible!" );
48016 
48017   template <>
48018   struct CppType<StructureType, StructureType::ePhysicalDeviceDynamicRenderingFeaturesKHR>
48019   {
48020     using Type = PhysicalDeviceDynamicRenderingFeaturesKHR;
48021   };
48022 
48023   struct PhysicalDeviceExclusiveScissorFeaturesNV
48024   {
48025     using NativeType = VkPhysicalDeviceExclusiveScissorFeaturesNV;
48026 
48027     static const bool                                  allowDuplicate = false;
48028     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
48029       StructureType::ePhysicalDeviceExclusiveScissorFeaturesNV;
48030 
48031 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExclusiveScissorFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV48032     VULKAN_HPP_CONSTEXPR PhysicalDeviceExclusiveScissorFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 exclusiveScissor_ = {} )
48033       VULKAN_HPP_NOEXCEPT : exclusiveScissor( exclusiveScissor_ )
48034     {}
48035 
48036     VULKAN_HPP_CONSTEXPR PhysicalDeviceExclusiveScissorFeaturesNV(
48037       PhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48038 
PhysicalDeviceExclusiveScissorFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV48039     PhysicalDeviceExclusiveScissorFeaturesNV( VkPhysicalDeviceExclusiveScissorFeaturesNV const & rhs )
48040       VULKAN_HPP_NOEXCEPT
48041       : PhysicalDeviceExclusiveScissorFeaturesNV(
48042           *reinterpret_cast<PhysicalDeviceExclusiveScissorFeaturesNV const *>( &rhs ) )
48043     {}
48044 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
48045 
48046     PhysicalDeviceExclusiveScissorFeaturesNV &
48047       operator=( PhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48048 
48049     PhysicalDeviceExclusiveScissorFeaturesNV &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV48050       operator=( VkPhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
48051     {
48052       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV const *>( &rhs );
48053       return *this;
48054     }
48055 
48056 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV48057     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExclusiveScissorFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
48058     {
48059       pNext = pNext_;
48060       return *this;
48061     }
48062 
48063     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExclusiveScissorFeaturesNV &
setExclusiveScissorVULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV48064                             setExclusiveScissor( VULKAN_HPP_NAMESPACE::Bool32 exclusiveScissor_ ) VULKAN_HPP_NOEXCEPT
48065     {
48066       exclusiveScissor = exclusiveScissor_;
48067       return *this;
48068     }
48069 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
48070 
operator VkPhysicalDeviceExclusiveScissorFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV48071     explicit operator VkPhysicalDeviceExclusiveScissorFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
48072     {
48073       return *reinterpret_cast<const VkPhysicalDeviceExclusiveScissorFeaturesNV *>( this );
48074     }
48075 
operator VkPhysicalDeviceExclusiveScissorFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV48076     explicit operator VkPhysicalDeviceExclusiveScissorFeaturesNV &() VULKAN_HPP_NOEXCEPT
48077     {
48078       return *reinterpret_cast<VkPhysicalDeviceExclusiveScissorFeaturesNV *>( this );
48079     }
48080 
48081 #if 14 <= VULKAN_HPP_CPP_VERSION
48082     auto
48083 #else
48084     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
48085 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV48086       reflect() const VULKAN_HPP_NOEXCEPT
48087     {
48088       return std::tie( sType, pNext, exclusiveScissor );
48089     }
48090 
48091 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
48092     auto operator<=>( PhysicalDeviceExclusiveScissorFeaturesNV const & ) const = default;
48093 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV48094     bool operator==( PhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
48095     {
48096       return this->reflect() == rhs.reflect();
48097     }
48098 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV48099     bool operator!=( PhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
48100     {
48101       return this->reflect() != rhs.reflect();
48102     }
48103 #endif
48104 
48105   public:
48106     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::ePhysicalDeviceExclusiveScissorFeaturesNV;
48107     void *                              pNext            = {};
48108     VULKAN_HPP_NAMESPACE::Bool32        exclusiveScissor = {};
48109   };
48110   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV ) ==
48111                               sizeof( VkPhysicalDeviceExclusiveScissorFeaturesNV ),
48112                             "struct and wrapper have different size!" );
48113   VULKAN_HPP_STATIC_ASSERT(
48114     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV>::value,
48115     "struct wrapper is not a standard layout!" );
48116   VULKAN_HPP_STATIC_ASSERT(
48117     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV>::value,
48118     "PhysicalDeviceExclusiveScissorFeaturesNV is not nothrow_move_constructible!" );
48119 
48120   template <>
48121   struct CppType<StructureType, StructureType::ePhysicalDeviceExclusiveScissorFeaturesNV>
48122   {
48123     using Type = PhysicalDeviceExclusiveScissorFeaturesNV;
48124   };
48125 
48126   struct PhysicalDeviceExtendedDynamicState2FeaturesEXT
48127   {
48128     using NativeType = VkPhysicalDeviceExtendedDynamicState2FeaturesEXT;
48129 
48130     static const bool                                  allowDuplicate = false;
48131     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
48132       StructureType::ePhysicalDeviceExtendedDynamicState2FeaturesEXT;
48133 
48134 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExtendedDynamicState2FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT48135     VULKAN_HPP_CONSTEXPR PhysicalDeviceExtendedDynamicState2FeaturesEXT(
48136       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState2_                   = {},
48137       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState2LogicOp_            = {},
48138       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState2PatchControlPoints_ = {} ) VULKAN_HPP_NOEXCEPT
48139       : extendedDynamicState2( extendedDynamicState2_ )
48140       , extendedDynamicState2LogicOp( extendedDynamicState2LogicOp_ )
48141       , extendedDynamicState2PatchControlPoints( extendedDynamicState2PatchControlPoints_ )
48142     {}
48143 
48144     VULKAN_HPP_CONSTEXPR PhysicalDeviceExtendedDynamicState2FeaturesEXT(
48145       PhysicalDeviceExtendedDynamicState2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48146 
PhysicalDeviceExtendedDynamicState2FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT48147     PhysicalDeviceExtendedDynamicState2FeaturesEXT( VkPhysicalDeviceExtendedDynamicState2FeaturesEXT const & rhs )
48148       VULKAN_HPP_NOEXCEPT
48149       : PhysicalDeviceExtendedDynamicState2FeaturesEXT(
48150           *reinterpret_cast<PhysicalDeviceExtendedDynamicState2FeaturesEXT const *>( &rhs ) )
48151     {}
48152 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
48153 
48154     PhysicalDeviceExtendedDynamicState2FeaturesEXT &
48155       operator=( PhysicalDeviceExtendedDynamicState2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48156 
48157     PhysicalDeviceExtendedDynamicState2FeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT48158       operator=( VkPhysicalDeviceExtendedDynamicState2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
48159     {
48160       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT const *>( &rhs );
48161       return *this;
48162     }
48163 
48164 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
48165     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState2FeaturesEXT &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT48166                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
48167     {
48168       pNext = pNext_;
48169       return *this;
48170     }
48171 
48172     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState2FeaturesEXT &
setExtendedDynamicState2VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT48173       setExtendedDynamicState2( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState2_ ) VULKAN_HPP_NOEXCEPT
48174     {
48175       extendedDynamicState2 = extendedDynamicState2_;
48176       return *this;
48177     }
48178 
48179     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState2FeaturesEXT &
setExtendedDynamicState2LogicOpVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT48180       setExtendedDynamicState2LogicOp( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState2LogicOp_ ) VULKAN_HPP_NOEXCEPT
48181     {
48182       extendedDynamicState2LogicOp = extendedDynamicState2LogicOp_;
48183       return *this;
48184     }
48185 
setExtendedDynamicState2PatchControlPointsVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT48186     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState2FeaturesEXT & setExtendedDynamicState2PatchControlPoints(
48187       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState2PatchControlPoints_ ) VULKAN_HPP_NOEXCEPT
48188     {
48189       extendedDynamicState2PatchControlPoints = extendedDynamicState2PatchControlPoints_;
48190       return *this;
48191     }
48192 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
48193 
operator VkPhysicalDeviceExtendedDynamicState2FeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT48194     explicit operator VkPhysicalDeviceExtendedDynamicState2FeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
48195     {
48196       return *reinterpret_cast<const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT *>( this );
48197     }
48198 
operator VkPhysicalDeviceExtendedDynamicState2FeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT48199     explicit operator VkPhysicalDeviceExtendedDynamicState2FeaturesEXT &() VULKAN_HPP_NOEXCEPT
48200     {
48201       return *reinterpret_cast<VkPhysicalDeviceExtendedDynamicState2FeaturesEXT *>( this );
48202     }
48203 
48204 #if 14 <= VULKAN_HPP_CPP_VERSION
48205     auto
48206 #else
48207     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
48208                void * const &,
48209                VULKAN_HPP_NAMESPACE::Bool32 const &,
48210                VULKAN_HPP_NAMESPACE::Bool32 const &,
48211                VULKAN_HPP_NAMESPACE::Bool32 const &>
48212 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT48213       reflect() const VULKAN_HPP_NOEXCEPT
48214     {
48215       return std::tie(
48216         sType, pNext, extendedDynamicState2, extendedDynamicState2LogicOp, extendedDynamicState2PatchControlPoints );
48217     }
48218 
48219 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
48220     auto operator<=>( PhysicalDeviceExtendedDynamicState2FeaturesEXT const & ) const = default;
48221 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT48222     bool operator==( PhysicalDeviceExtendedDynamicState2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
48223     {
48224       return this->reflect() == rhs.reflect();
48225     }
48226 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT48227     bool operator!=( PhysicalDeviceExtendedDynamicState2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
48228     {
48229       return this->reflect() != rhs.reflect();
48230     }
48231 #endif
48232 
48233   public:
48234     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExtendedDynamicState2FeaturesEXT;
48235     void *                              pNext = {};
48236     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState2                   = {};
48237     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState2LogicOp            = {};
48238     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState2PatchControlPoints = {};
48239   };
48240   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT ) ==
48241                               sizeof( VkPhysicalDeviceExtendedDynamicState2FeaturesEXT ),
48242                             "struct and wrapper have different size!" );
48243   VULKAN_HPP_STATIC_ASSERT(
48244     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT>::value,
48245     "struct wrapper is not a standard layout!" );
48246   VULKAN_HPP_STATIC_ASSERT(
48247     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT>::value,
48248     "PhysicalDeviceExtendedDynamicState2FeaturesEXT is not nothrow_move_constructible!" );
48249 
48250   template <>
48251   struct CppType<StructureType, StructureType::ePhysicalDeviceExtendedDynamicState2FeaturesEXT>
48252   {
48253     using Type = PhysicalDeviceExtendedDynamicState2FeaturesEXT;
48254   };
48255 
48256   struct PhysicalDeviceExtendedDynamicStateFeaturesEXT
48257   {
48258     using NativeType = VkPhysicalDeviceExtendedDynamicStateFeaturesEXT;
48259 
48260     static const bool                                  allowDuplicate = false;
48261     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
48262       StructureType::ePhysicalDeviceExtendedDynamicStateFeaturesEXT;
48263 
48264 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExtendedDynamicStateFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT48265     VULKAN_HPP_CONSTEXPR PhysicalDeviceExtendedDynamicStateFeaturesEXT(
48266       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState_ = {} ) VULKAN_HPP_NOEXCEPT
48267       : extendedDynamicState( extendedDynamicState_ )
48268     {}
48269 
48270     VULKAN_HPP_CONSTEXPR PhysicalDeviceExtendedDynamicStateFeaturesEXT(
48271       PhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48272 
PhysicalDeviceExtendedDynamicStateFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT48273     PhysicalDeviceExtendedDynamicStateFeaturesEXT( VkPhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs )
48274       VULKAN_HPP_NOEXCEPT
48275       : PhysicalDeviceExtendedDynamicStateFeaturesEXT(
48276           *reinterpret_cast<PhysicalDeviceExtendedDynamicStateFeaturesEXT const *>( &rhs ) )
48277     {}
48278 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
48279 
48280     PhysicalDeviceExtendedDynamicStateFeaturesEXT &
48281       operator=( PhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48282 
48283     PhysicalDeviceExtendedDynamicStateFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT48284       operator=( VkPhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
48285     {
48286       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT const *>( &rhs );
48287       return *this;
48288     }
48289 
48290 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
48291     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicStateFeaturesEXT &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT48292                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
48293     {
48294       pNext = pNext_;
48295       return *this;
48296     }
48297 
48298     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicStateFeaturesEXT &
setExtendedDynamicStateVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT48299       setExtendedDynamicState( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState_ ) VULKAN_HPP_NOEXCEPT
48300     {
48301       extendedDynamicState = extendedDynamicState_;
48302       return *this;
48303     }
48304 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
48305 
operator VkPhysicalDeviceExtendedDynamicStateFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT48306     explicit operator VkPhysicalDeviceExtendedDynamicStateFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
48307     {
48308       return *reinterpret_cast<const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT *>( this );
48309     }
48310 
operator VkPhysicalDeviceExtendedDynamicStateFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT48311     explicit operator VkPhysicalDeviceExtendedDynamicStateFeaturesEXT &() VULKAN_HPP_NOEXCEPT
48312     {
48313       return *reinterpret_cast<VkPhysicalDeviceExtendedDynamicStateFeaturesEXT *>( this );
48314     }
48315 
48316 #if 14 <= VULKAN_HPP_CPP_VERSION
48317     auto
48318 #else
48319     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
48320 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT48321       reflect() const VULKAN_HPP_NOEXCEPT
48322     {
48323       return std::tie( sType, pNext, extendedDynamicState );
48324     }
48325 
48326 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
48327     auto operator<=>( PhysicalDeviceExtendedDynamicStateFeaturesEXT const & ) const = default;
48328 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT48329     bool operator==( PhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
48330     {
48331       return this->reflect() == rhs.reflect();
48332     }
48333 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT48334     bool operator!=( PhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
48335     {
48336       return this->reflect() != rhs.reflect();
48337     }
48338 #endif
48339 
48340   public:
48341     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExtendedDynamicStateFeaturesEXT;
48342     void *                              pNext = {};
48343     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState = {};
48344   };
48345   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT ) ==
48346                               sizeof( VkPhysicalDeviceExtendedDynamicStateFeaturesEXT ),
48347                             "struct and wrapper have different size!" );
48348   VULKAN_HPP_STATIC_ASSERT(
48349     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT>::value,
48350     "struct wrapper is not a standard layout!" );
48351   VULKAN_HPP_STATIC_ASSERT(
48352     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT>::value,
48353     "PhysicalDeviceExtendedDynamicStateFeaturesEXT is not nothrow_move_constructible!" );
48354 
48355   template <>
48356   struct CppType<StructureType, StructureType::ePhysicalDeviceExtendedDynamicStateFeaturesEXT>
48357   {
48358     using Type = PhysicalDeviceExtendedDynamicStateFeaturesEXT;
48359   };
48360 
48361   struct PhysicalDeviceExternalBufferInfo
48362   {
48363     using NativeType = VkPhysicalDeviceExternalBufferInfo;
48364 
48365     static const bool                                  allowDuplicate = false;
48366     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExternalBufferInfo;
48367 
48368 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExternalBufferInfoVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo48369     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalBufferInfo(
48370       VULKAN_HPP_NAMESPACE::BufferCreateFlags                flags_ = {},
48371       VULKAN_HPP_NAMESPACE::BufferUsageFlags                 usage_ = {},
48372       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ =
48373         VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd ) VULKAN_HPP_NOEXCEPT
48374       : flags( flags_ )
48375       , usage( usage_ )
48376       , handleType( handleType_ )
48377     {}
48378 
48379     VULKAN_HPP_CONSTEXPR
48380       PhysicalDeviceExternalBufferInfo( PhysicalDeviceExternalBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48381 
PhysicalDeviceExternalBufferInfoVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo48382     PhysicalDeviceExternalBufferInfo( VkPhysicalDeviceExternalBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT
48383       : PhysicalDeviceExternalBufferInfo( *reinterpret_cast<PhysicalDeviceExternalBufferInfo const *>( &rhs ) )
48384     {}
48385 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
48386 
48387     PhysicalDeviceExternalBufferInfo &
48388       operator=( PhysicalDeviceExternalBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48389 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo48390     PhysicalDeviceExternalBufferInfo & operator=( VkPhysicalDeviceExternalBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT
48391     {
48392       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo const *>( &rhs );
48393       return *this;
48394     }
48395 
48396 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo48397     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalBufferInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
48398     {
48399       pNext = pNext_;
48400       return *this;
48401     }
48402 
48403     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalBufferInfo &
setFlagsVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo48404                             setFlags( VULKAN_HPP_NAMESPACE::BufferCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
48405     {
48406       flags = flags_;
48407       return *this;
48408     }
48409 
48410     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalBufferInfo &
setUsageVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo48411                             setUsage( VULKAN_HPP_NAMESPACE::BufferUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT
48412     {
48413       usage = usage_;
48414       return *this;
48415     }
48416 
48417     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalBufferInfo &
setHandleTypeVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo48418       setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
48419     {
48420       handleType = handleType_;
48421       return *this;
48422     }
48423 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
48424 
operator VkPhysicalDeviceExternalBufferInfo const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo48425     explicit operator VkPhysicalDeviceExternalBufferInfo const &() const VULKAN_HPP_NOEXCEPT
48426     {
48427       return *reinterpret_cast<const VkPhysicalDeviceExternalBufferInfo *>( this );
48428     }
48429 
operator VkPhysicalDeviceExternalBufferInfo&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo48430     explicit operator VkPhysicalDeviceExternalBufferInfo &() VULKAN_HPP_NOEXCEPT
48431     {
48432       return *reinterpret_cast<VkPhysicalDeviceExternalBufferInfo *>( this );
48433     }
48434 
48435 #if 14 <= VULKAN_HPP_CPP_VERSION
48436     auto
48437 #else
48438     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
48439                const void * const &,
48440                VULKAN_HPP_NAMESPACE::BufferCreateFlags const &,
48441                VULKAN_HPP_NAMESPACE::BufferUsageFlags const &,
48442                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits const &>
48443 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo48444       reflect() const VULKAN_HPP_NOEXCEPT
48445     {
48446       return std::tie( sType, pNext, flags, usage, handleType );
48447     }
48448 
48449 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
48450     auto operator<=>( PhysicalDeviceExternalBufferInfo const & ) const = default;
48451 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo48452     bool operator==( PhysicalDeviceExternalBufferInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
48453     {
48454       return this->reflect() == rhs.reflect();
48455     }
48456 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo48457     bool operator!=( PhysicalDeviceExternalBufferInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
48458     {
48459       return this->reflect() != rhs.reflect();
48460     }
48461 #endif
48462 
48463   public:
48464     VULKAN_HPP_NAMESPACE::StructureType                    sType = StructureType::ePhysicalDeviceExternalBufferInfo;
48465     const void *                                           pNext = {};
48466     VULKAN_HPP_NAMESPACE::BufferCreateFlags                flags = {};
48467     VULKAN_HPP_NAMESPACE::BufferUsageFlags                 usage = {};
48468     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType =
48469       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
48470   };
48471   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo ) ==
48472                               sizeof( VkPhysicalDeviceExternalBufferInfo ),
48473                             "struct and wrapper have different size!" );
48474   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo>::value,
48475                             "struct wrapper is not a standard layout!" );
48476   VULKAN_HPP_STATIC_ASSERT(
48477     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo>::value,
48478     "PhysicalDeviceExternalBufferInfo is not nothrow_move_constructible!" );
48479 
48480   template <>
48481   struct CppType<StructureType, StructureType::ePhysicalDeviceExternalBufferInfo>
48482   {
48483     using Type = PhysicalDeviceExternalBufferInfo;
48484   };
48485   using PhysicalDeviceExternalBufferInfoKHR = PhysicalDeviceExternalBufferInfo;
48486 
48487   struct PhysicalDeviceExternalFenceInfo
48488   {
48489     using NativeType = VkPhysicalDeviceExternalFenceInfo;
48490 
48491     static const bool                                  allowDuplicate = false;
48492     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceExternalFenceInfo;
48493 
48494 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExternalFenceInfoVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo48495     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalFenceInfo(
48496       VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ =
48497         VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd ) VULKAN_HPP_NOEXCEPT
48498       : handleType( handleType_ )
48499     {}
48500 
48501     VULKAN_HPP_CONSTEXPR
48502       PhysicalDeviceExternalFenceInfo( PhysicalDeviceExternalFenceInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48503 
PhysicalDeviceExternalFenceInfoVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo48504     PhysicalDeviceExternalFenceInfo( VkPhysicalDeviceExternalFenceInfo const & rhs ) VULKAN_HPP_NOEXCEPT
48505       : PhysicalDeviceExternalFenceInfo( *reinterpret_cast<PhysicalDeviceExternalFenceInfo const *>( &rhs ) )
48506     {}
48507 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
48508 
48509     PhysicalDeviceExternalFenceInfo &
48510       operator=( PhysicalDeviceExternalFenceInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48511 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo48512     PhysicalDeviceExternalFenceInfo & operator=( VkPhysicalDeviceExternalFenceInfo const & rhs ) VULKAN_HPP_NOEXCEPT
48513     {
48514       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo const *>( &rhs );
48515       return *this;
48516     }
48517 
48518 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo48519     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalFenceInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
48520     {
48521       pNext = pNext_;
48522       return *this;
48523     }
48524 
48525     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalFenceInfo &
setHandleTypeVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo48526       setHandleType( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
48527     {
48528       handleType = handleType_;
48529       return *this;
48530     }
48531 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
48532 
operator VkPhysicalDeviceExternalFenceInfo const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo48533     explicit operator VkPhysicalDeviceExternalFenceInfo const &() const VULKAN_HPP_NOEXCEPT
48534     {
48535       return *reinterpret_cast<const VkPhysicalDeviceExternalFenceInfo *>( this );
48536     }
48537 
operator VkPhysicalDeviceExternalFenceInfo&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo48538     explicit operator VkPhysicalDeviceExternalFenceInfo &() VULKAN_HPP_NOEXCEPT
48539     {
48540       return *reinterpret_cast<VkPhysicalDeviceExternalFenceInfo *>( this );
48541     }
48542 
48543 #if 14 <= VULKAN_HPP_CPP_VERSION
48544     auto
48545 #else
48546     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
48547                const void * const &,
48548                VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits const &>
48549 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo48550       reflect() const VULKAN_HPP_NOEXCEPT
48551     {
48552       return std::tie( sType, pNext, handleType );
48553     }
48554 
48555 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
48556     auto operator<=>( PhysicalDeviceExternalFenceInfo const & ) const = default;
48557 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo48558     bool operator==( PhysicalDeviceExternalFenceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
48559     {
48560       return this->reflect() == rhs.reflect();
48561     }
48562 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo48563     bool operator!=( PhysicalDeviceExternalFenceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
48564     {
48565       return this->reflect() != rhs.reflect();
48566     }
48567 #endif
48568 
48569   public:
48570     VULKAN_HPP_NAMESPACE::StructureType                   sType = StructureType::ePhysicalDeviceExternalFenceInfo;
48571     const void *                                          pNext = {};
48572     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType =
48573       VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd;
48574   };
48575   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo ) ==
48576                               sizeof( VkPhysicalDeviceExternalFenceInfo ),
48577                             "struct and wrapper have different size!" );
48578   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo>::value,
48579                             "struct wrapper is not a standard layout!" );
48580   VULKAN_HPP_STATIC_ASSERT(
48581     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo>::value,
48582     "PhysicalDeviceExternalFenceInfo is not nothrow_move_constructible!" );
48583 
48584   template <>
48585   struct CppType<StructureType, StructureType::ePhysicalDeviceExternalFenceInfo>
48586   {
48587     using Type = PhysicalDeviceExternalFenceInfo;
48588   };
48589   using PhysicalDeviceExternalFenceInfoKHR = PhysicalDeviceExternalFenceInfo;
48590 
48591   struct PhysicalDeviceExternalImageFormatInfo
48592   {
48593     using NativeType = VkPhysicalDeviceExternalImageFormatInfo;
48594 
48595     static const bool                                  allowDuplicate = false;
48596     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
48597       StructureType::ePhysicalDeviceExternalImageFormatInfo;
48598 
48599 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExternalImageFormatInfoVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo48600     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalImageFormatInfo(
48601       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ =
48602         VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd ) VULKAN_HPP_NOEXCEPT
48603       : handleType( handleType_ )
48604     {}
48605 
48606     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalImageFormatInfo( PhysicalDeviceExternalImageFormatInfo const & rhs )
48607       VULKAN_HPP_NOEXCEPT = default;
48608 
PhysicalDeviceExternalImageFormatInfoVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo48609     PhysicalDeviceExternalImageFormatInfo( VkPhysicalDeviceExternalImageFormatInfo const & rhs ) VULKAN_HPP_NOEXCEPT
48610       : PhysicalDeviceExternalImageFormatInfo(
48611           *reinterpret_cast<PhysicalDeviceExternalImageFormatInfo const *>( &rhs ) )
48612     {}
48613 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
48614 
48615     PhysicalDeviceExternalImageFormatInfo &
48616       operator=( PhysicalDeviceExternalImageFormatInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48617 
48618     PhysicalDeviceExternalImageFormatInfo &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo48619       operator=( VkPhysicalDeviceExternalImageFormatInfo const & rhs ) VULKAN_HPP_NOEXCEPT
48620     {
48621       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo const *>( &rhs );
48622       return *this;
48623     }
48624 
48625 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo48626     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalImageFormatInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
48627     {
48628       pNext = pNext_;
48629       return *this;
48630     }
48631 
48632     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalImageFormatInfo &
setHandleTypeVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo48633       setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
48634     {
48635       handleType = handleType_;
48636       return *this;
48637     }
48638 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
48639 
operator VkPhysicalDeviceExternalImageFormatInfo const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo48640     explicit operator VkPhysicalDeviceExternalImageFormatInfo const &() const VULKAN_HPP_NOEXCEPT
48641     {
48642       return *reinterpret_cast<const VkPhysicalDeviceExternalImageFormatInfo *>( this );
48643     }
48644 
operator VkPhysicalDeviceExternalImageFormatInfo&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo48645     explicit operator VkPhysicalDeviceExternalImageFormatInfo &() VULKAN_HPP_NOEXCEPT
48646     {
48647       return *reinterpret_cast<VkPhysicalDeviceExternalImageFormatInfo *>( this );
48648     }
48649 
48650 #if 14 <= VULKAN_HPP_CPP_VERSION
48651     auto
48652 #else
48653     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
48654                const void * const &,
48655                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits const &>
48656 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo48657       reflect() const VULKAN_HPP_NOEXCEPT
48658     {
48659       return std::tie( sType, pNext, handleType );
48660     }
48661 
48662 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
48663     auto operator<=>( PhysicalDeviceExternalImageFormatInfo const & ) const = default;
48664 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo48665     bool operator==( PhysicalDeviceExternalImageFormatInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
48666     {
48667       return this->reflect() == rhs.reflect();
48668     }
48669 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo48670     bool operator!=( PhysicalDeviceExternalImageFormatInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
48671     {
48672       return this->reflect() != rhs.reflect();
48673     }
48674 #endif
48675 
48676   public:
48677     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExternalImageFormatInfo;
48678     const void *                        pNext = {};
48679     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType =
48680       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
48681   };
48682   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo ) ==
48683                               sizeof( VkPhysicalDeviceExternalImageFormatInfo ),
48684                             "struct and wrapper have different size!" );
48685   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo>::value,
48686                             "struct wrapper is not a standard layout!" );
48687   VULKAN_HPP_STATIC_ASSERT(
48688     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo>::value,
48689     "PhysicalDeviceExternalImageFormatInfo is not nothrow_move_constructible!" );
48690 
48691   template <>
48692   struct CppType<StructureType, StructureType::ePhysicalDeviceExternalImageFormatInfo>
48693   {
48694     using Type = PhysicalDeviceExternalImageFormatInfo;
48695   };
48696   using PhysicalDeviceExternalImageFormatInfoKHR = PhysicalDeviceExternalImageFormatInfo;
48697 
48698   struct PhysicalDeviceExternalMemoryHostPropertiesEXT
48699   {
48700     using NativeType = VkPhysicalDeviceExternalMemoryHostPropertiesEXT;
48701 
48702     static const bool                                  allowDuplicate = false;
48703     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
48704       StructureType::ePhysicalDeviceExternalMemoryHostPropertiesEXT;
48705 
48706 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExternalMemoryHostPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT48707     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalMemoryHostPropertiesEXT(
48708       VULKAN_HPP_NAMESPACE::DeviceSize minImportedHostPointerAlignment_ = {} ) VULKAN_HPP_NOEXCEPT
48709       : minImportedHostPointerAlignment( minImportedHostPointerAlignment_ )
48710     {}
48711 
48712     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalMemoryHostPropertiesEXT(
48713       PhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48714 
PhysicalDeviceExternalMemoryHostPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT48715     PhysicalDeviceExternalMemoryHostPropertiesEXT( VkPhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs )
48716       VULKAN_HPP_NOEXCEPT
48717       : PhysicalDeviceExternalMemoryHostPropertiesEXT(
48718           *reinterpret_cast<PhysicalDeviceExternalMemoryHostPropertiesEXT const *>( &rhs ) )
48719     {}
48720 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
48721 
48722     PhysicalDeviceExternalMemoryHostPropertiesEXT &
48723       operator=( PhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48724 
48725     PhysicalDeviceExternalMemoryHostPropertiesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT48726       operator=( VkPhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
48727     {
48728       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT const *>( &rhs );
48729       return *this;
48730     }
48731 
operator VkPhysicalDeviceExternalMemoryHostPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT48732     explicit operator VkPhysicalDeviceExternalMemoryHostPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
48733     {
48734       return *reinterpret_cast<const VkPhysicalDeviceExternalMemoryHostPropertiesEXT *>( this );
48735     }
48736 
operator VkPhysicalDeviceExternalMemoryHostPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT48737     explicit operator VkPhysicalDeviceExternalMemoryHostPropertiesEXT &() VULKAN_HPP_NOEXCEPT
48738     {
48739       return *reinterpret_cast<VkPhysicalDeviceExternalMemoryHostPropertiesEXT *>( this );
48740     }
48741 
48742 #if 14 <= VULKAN_HPP_CPP_VERSION
48743     auto
48744 #else
48745     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
48746 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT48747       reflect() const VULKAN_HPP_NOEXCEPT
48748     {
48749       return std::tie( sType, pNext, minImportedHostPointerAlignment );
48750     }
48751 
48752 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
48753     auto operator<=>( PhysicalDeviceExternalMemoryHostPropertiesEXT const & ) const = default;
48754 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT48755     bool operator==( PhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
48756     {
48757       return this->reflect() == rhs.reflect();
48758     }
48759 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT48760     bool operator!=( PhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
48761     {
48762       return this->reflect() != rhs.reflect();
48763     }
48764 #endif
48765 
48766   public:
48767     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExternalMemoryHostPropertiesEXT;
48768     void *                              pNext = {};
48769     VULKAN_HPP_NAMESPACE::DeviceSize    minImportedHostPointerAlignment = {};
48770   };
48771   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT ) ==
48772                               sizeof( VkPhysicalDeviceExternalMemoryHostPropertiesEXT ),
48773                             "struct and wrapper have different size!" );
48774   VULKAN_HPP_STATIC_ASSERT(
48775     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT>::value,
48776     "struct wrapper is not a standard layout!" );
48777   VULKAN_HPP_STATIC_ASSERT(
48778     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT>::value,
48779     "PhysicalDeviceExternalMemoryHostPropertiesEXT is not nothrow_move_constructible!" );
48780 
48781   template <>
48782   struct CppType<StructureType, StructureType::ePhysicalDeviceExternalMemoryHostPropertiesEXT>
48783   {
48784     using Type = PhysicalDeviceExternalMemoryHostPropertiesEXT;
48785   };
48786 
48787   struct PhysicalDeviceExternalMemoryRDMAFeaturesNV
48788   {
48789     using NativeType = VkPhysicalDeviceExternalMemoryRDMAFeaturesNV;
48790 
48791     static const bool                                  allowDuplicate = false;
48792     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
48793       StructureType::ePhysicalDeviceExternalMemoryRdmaFeaturesNV;
48794 
48795 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExternalMemoryRDMAFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV48796     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalMemoryRDMAFeaturesNV(
48797       VULKAN_HPP_NAMESPACE::Bool32 externalMemoryRDMA_ = {} ) VULKAN_HPP_NOEXCEPT
48798       : externalMemoryRDMA( externalMemoryRDMA_ )
48799     {}
48800 
48801     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalMemoryRDMAFeaturesNV(
48802       PhysicalDeviceExternalMemoryRDMAFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48803 
PhysicalDeviceExternalMemoryRDMAFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV48804     PhysicalDeviceExternalMemoryRDMAFeaturesNV( VkPhysicalDeviceExternalMemoryRDMAFeaturesNV const & rhs )
48805       VULKAN_HPP_NOEXCEPT
48806       : PhysicalDeviceExternalMemoryRDMAFeaturesNV(
48807           *reinterpret_cast<PhysicalDeviceExternalMemoryRDMAFeaturesNV const *>( &rhs ) )
48808     {}
48809 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
48810 
48811     PhysicalDeviceExternalMemoryRDMAFeaturesNV &
48812       operator=( PhysicalDeviceExternalMemoryRDMAFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48813 
48814     PhysicalDeviceExternalMemoryRDMAFeaturesNV &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV48815       operator=( VkPhysicalDeviceExternalMemoryRDMAFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
48816     {
48817       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV const *>( &rhs );
48818       return *this;
48819     }
48820 
48821 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV48822     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalMemoryRDMAFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
48823     {
48824       pNext = pNext_;
48825       return *this;
48826     }
48827 
48828     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalMemoryRDMAFeaturesNV &
setExternalMemoryRDMAVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV48829       setExternalMemoryRDMA( VULKAN_HPP_NAMESPACE::Bool32 externalMemoryRDMA_ ) VULKAN_HPP_NOEXCEPT
48830     {
48831       externalMemoryRDMA = externalMemoryRDMA_;
48832       return *this;
48833     }
48834 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
48835 
operator VkPhysicalDeviceExternalMemoryRDMAFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV48836     explicit operator VkPhysicalDeviceExternalMemoryRDMAFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
48837     {
48838       return *reinterpret_cast<const VkPhysicalDeviceExternalMemoryRDMAFeaturesNV *>( this );
48839     }
48840 
operator VkPhysicalDeviceExternalMemoryRDMAFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV48841     explicit operator VkPhysicalDeviceExternalMemoryRDMAFeaturesNV &() VULKAN_HPP_NOEXCEPT
48842     {
48843       return *reinterpret_cast<VkPhysicalDeviceExternalMemoryRDMAFeaturesNV *>( this );
48844     }
48845 
48846 #if 14 <= VULKAN_HPP_CPP_VERSION
48847     auto
48848 #else
48849     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
48850 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV48851       reflect() const VULKAN_HPP_NOEXCEPT
48852     {
48853       return std::tie( sType, pNext, externalMemoryRDMA );
48854     }
48855 
48856 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
48857     auto operator<=>( PhysicalDeviceExternalMemoryRDMAFeaturesNV const & ) const = default;
48858 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV48859     bool operator==( PhysicalDeviceExternalMemoryRDMAFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
48860     {
48861       return this->reflect() == rhs.reflect();
48862     }
48863 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV48864     bool operator!=( PhysicalDeviceExternalMemoryRDMAFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
48865     {
48866       return this->reflect() != rhs.reflect();
48867     }
48868 #endif
48869 
48870   public:
48871     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::ePhysicalDeviceExternalMemoryRdmaFeaturesNV;
48872     void *                              pNext              = {};
48873     VULKAN_HPP_NAMESPACE::Bool32        externalMemoryRDMA = {};
48874   };
48875   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV ) ==
48876                               sizeof( VkPhysicalDeviceExternalMemoryRDMAFeaturesNV ),
48877                             "struct and wrapper have different size!" );
48878   VULKAN_HPP_STATIC_ASSERT(
48879     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV>::value,
48880     "struct wrapper is not a standard layout!" );
48881   VULKAN_HPP_STATIC_ASSERT(
48882     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV>::value,
48883     "PhysicalDeviceExternalMemoryRDMAFeaturesNV is not nothrow_move_constructible!" );
48884 
48885   template <>
48886   struct CppType<StructureType, StructureType::ePhysicalDeviceExternalMemoryRdmaFeaturesNV>
48887   {
48888     using Type = PhysicalDeviceExternalMemoryRDMAFeaturesNV;
48889   };
48890 
48891   struct PhysicalDeviceExternalSemaphoreInfo
48892   {
48893     using NativeType = VkPhysicalDeviceExternalSemaphoreInfo;
48894 
48895     static const bool                                  allowDuplicate = false;
48896     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
48897       StructureType::ePhysicalDeviceExternalSemaphoreInfo;
48898 
48899 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExternalSemaphoreInfoVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo48900     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalSemaphoreInfo(
48901       VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ =
48902         VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd ) VULKAN_HPP_NOEXCEPT
48903       : handleType( handleType_ )
48904     {}
48905 
48906     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalSemaphoreInfo( PhysicalDeviceExternalSemaphoreInfo const & rhs )
48907       VULKAN_HPP_NOEXCEPT = default;
48908 
PhysicalDeviceExternalSemaphoreInfoVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo48909     PhysicalDeviceExternalSemaphoreInfo( VkPhysicalDeviceExternalSemaphoreInfo const & rhs ) VULKAN_HPP_NOEXCEPT
48910       : PhysicalDeviceExternalSemaphoreInfo( *reinterpret_cast<PhysicalDeviceExternalSemaphoreInfo const *>( &rhs ) )
48911     {}
48912 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
48913 
48914     PhysicalDeviceExternalSemaphoreInfo &
48915       operator=( PhysicalDeviceExternalSemaphoreInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48916 
48917     PhysicalDeviceExternalSemaphoreInfo &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo48918       operator=( VkPhysicalDeviceExternalSemaphoreInfo const & rhs ) VULKAN_HPP_NOEXCEPT
48919     {
48920       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo const *>( &rhs );
48921       return *this;
48922     }
48923 
48924 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo48925     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalSemaphoreInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
48926     {
48927       pNext = pNext_;
48928       return *this;
48929     }
48930 
48931     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalSemaphoreInfo &
setHandleTypeVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo48932       setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
48933     {
48934       handleType = handleType_;
48935       return *this;
48936     }
48937 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
48938 
operator VkPhysicalDeviceExternalSemaphoreInfo const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo48939     explicit operator VkPhysicalDeviceExternalSemaphoreInfo const &() const VULKAN_HPP_NOEXCEPT
48940     {
48941       return *reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfo *>( this );
48942     }
48943 
operator VkPhysicalDeviceExternalSemaphoreInfo&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo48944     explicit operator VkPhysicalDeviceExternalSemaphoreInfo &() VULKAN_HPP_NOEXCEPT
48945     {
48946       return *reinterpret_cast<VkPhysicalDeviceExternalSemaphoreInfo *>( this );
48947     }
48948 
48949 #if 14 <= VULKAN_HPP_CPP_VERSION
48950     auto
48951 #else
48952     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
48953                const void * const &,
48954                VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits const &>
48955 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo48956       reflect() const VULKAN_HPP_NOEXCEPT
48957     {
48958       return std::tie( sType, pNext, handleType );
48959     }
48960 
48961 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
48962     auto operator<=>( PhysicalDeviceExternalSemaphoreInfo const & ) const = default;
48963 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo48964     bool operator==( PhysicalDeviceExternalSemaphoreInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
48965     {
48966       return this->reflect() == rhs.reflect();
48967     }
48968 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo48969     bool operator!=( PhysicalDeviceExternalSemaphoreInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
48970     {
48971       return this->reflect() != rhs.reflect();
48972     }
48973 #endif
48974 
48975   public:
48976     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExternalSemaphoreInfo;
48977     const void *                        pNext = {};
48978     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType =
48979       VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd;
48980   };
48981   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo ) ==
48982                               sizeof( VkPhysicalDeviceExternalSemaphoreInfo ),
48983                             "struct and wrapper have different size!" );
48984   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo>::value,
48985                             "struct wrapper is not a standard layout!" );
48986   VULKAN_HPP_STATIC_ASSERT(
48987     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo>::value,
48988     "PhysicalDeviceExternalSemaphoreInfo is not nothrow_move_constructible!" );
48989 
48990   template <>
48991   struct CppType<StructureType, StructureType::ePhysicalDeviceExternalSemaphoreInfo>
48992   {
48993     using Type = PhysicalDeviceExternalSemaphoreInfo;
48994   };
48995   using PhysicalDeviceExternalSemaphoreInfoKHR = PhysicalDeviceExternalSemaphoreInfo;
48996 
48997   struct PhysicalDeviceFeatures2
48998   {
48999     using NativeType = VkPhysicalDeviceFeatures2;
49000 
49001     static const bool                                  allowDuplicate = false;
49002     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceFeatures2;
49003 
49004 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
49005     VULKAN_HPP_CONSTEXPR
PhysicalDeviceFeatures2VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures249006       PhysicalDeviceFeatures2( VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures features_ = {} ) VULKAN_HPP_NOEXCEPT
49007       : features( features_ )
49008     {}
49009 
49010     VULKAN_HPP_CONSTEXPR PhysicalDeviceFeatures2( PhysicalDeviceFeatures2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49011 
PhysicalDeviceFeatures2VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures249012     PhysicalDeviceFeatures2( VkPhysicalDeviceFeatures2 const & rhs ) VULKAN_HPP_NOEXCEPT
49013       : PhysicalDeviceFeatures2( *reinterpret_cast<PhysicalDeviceFeatures2 const *>( &rhs ) )
49014     {}
49015 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
49016 
49017     PhysicalDeviceFeatures2 & operator=( PhysicalDeviceFeatures2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49018 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures249019     PhysicalDeviceFeatures2 & operator=( VkPhysicalDeviceFeatures2 const & rhs ) VULKAN_HPP_NOEXCEPT
49020     {
49021       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 const *>( &rhs );
49022       return *this;
49023     }
49024 
49025 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures249026     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures2 & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
49027     {
49028       pNext = pNext_;
49029       return *this;
49030     }
49031 
49032     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures2 &
setFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures249033       setFeatures( VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures const & features_ ) VULKAN_HPP_NOEXCEPT
49034     {
49035       features = features_;
49036       return *this;
49037     }
49038 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
49039 
operator VkPhysicalDeviceFeatures2 const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures249040     explicit operator VkPhysicalDeviceFeatures2 const &() const VULKAN_HPP_NOEXCEPT
49041     {
49042       return *reinterpret_cast<const VkPhysicalDeviceFeatures2 *>( this );
49043     }
49044 
operator VkPhysicalDeviceFeatures2&VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures249045     explicit operator VkPhysicalDeviceFeatures2 &() VULKAN_HPP_NOEXCEPT
49046     {
49047       return *reinterpret_cast<VkPhysicalDeviceFeatures2 *>( this );
49048     }
49049 
49050 #if 14 <= VULKAN_HPP_CPP_VERSION
49051     auto
49052 #else
49053     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
49054                void * const &,
49055                VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures const &>
49056 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures249057       reflect() const VULKAN_HPP_NOEXCEPT
49058     {
49059       return std::tie( sType, pNext, features );
49060     }
49061 
49062 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
49063     auto operator<=>( PhysicalDeviceFeatures2 const & ) const = default;
49064 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures249065     bool operator==( PhysicalDeviceFeatures2 const & rhs ) const VULKAN_HPP_NOEXCEPT
49066     {
49067       return this->reflect() == rhs.reflect();
49068     }
49069 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures249070     bool operator!=( PhysicalDeviceFeatures2 const & rhs ) const VULKAN_HPP_NOEXCEPT
49071     {
49072       return this->reflect() != rhs.reflect();
49073     }
49074 #endif
49075 
49076   public:
49077     VULKAN_HPP_NAMESPACE::StructureType          sType    = StructureType::ePhysicalDeviceFeatures2;
49078     void *                                       pNext    = {};
49079     VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures features = {};
49080   };
49081   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 ) ==
49082                               sizeof( VkPhysicalDeviceFeatures2 ),
49083                             "struct and wrapper have different size!" );
49084   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2>::value,
49085                             "struct wrapper is not a standard layout!" );
49086   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2>::value,
49087                             "PhysicalDeviceFeatures2 is not nothrow_move_constructible!" );
49088 
49089   template <>
49090   struct CppType<StructureType, StructureType::ePhysicalDeviceFeatures2>
49091   {
49092     using Type = PhysicalDeviceFeatures2;
49093   };
49094   using PhysicalDeviceFeatures2KHR = PhysicalDeviceFeatures2;
49095 
49096   struct PhysicalDeviceFloatControlsProperties
49097   {
49098     using NativeType = VkPhysicalDeviceFloatControlsProperties;
49099 
49100     static const bool                                  allowDuplicate = false;
49101     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
49102       StructureType::ePhysicalDeviceFloatControlsProperties;
49103 
49104 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFloatControlsPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties49105     VULKAN_HPP_CONSTEXPR PhysicalDeviceFloatControlsProperties(
49106       VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence denormBehaviorIndependence_ =
49107         VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly,
49108       VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence roundingModeIndependence_ =
49109         VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly,
49110       VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat16_ = {},
49111       VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat32_ = {},
49112       VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat64_ = {},
49113       VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat16_           = {},
49114       VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat32_           = {},
49115       VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat64_           = {},
49116       VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat16_        = {},
49117       VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat32_        = {},
49118       VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat64_        = {},
49119       VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat16_          = {},
49120       VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat32_          = {},
49121       VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat64_          = {},
49122       VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat16_          = {},
49123       VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat32_          = {},
49124       VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat64_          = {} ) VULKAN_HPP_NOEXCEPT
49125       : denormBehaviorIndependence( denormBehaviorIndependence_ )
49126       , roundingModeIndependence( roundingModeIndependence_ )
49127       , shaderSignedZeroInfNanPreserveFloat16( shaderSignedZeroInfNanPreserveFloat16_ )
49128       , shaderSignedZeroInfNanPreserveFloat32( shaderSignedZeroInfNanPreserveFloat32_ )
49129       , shaderSignedZeroInfNanPreserveFloat64( shaderSignedZeroInfNanPreserveFloat64_ )
49130       , shaderDenormPreserveFloat16( shaderDenormPreserveFloat16_ )
49131       , shaderDenormPreserveFloat32( shaderDenormPreserveFloat32_ )
49132       , shaderDenormPreserveFloat64( shaderDenormPreserveFloat64_ )
49133       , shaderDenormFlushToZeroFloat16( shaderDenormFlushToZeroFloat16_ )
49134       , shaderDenormFlushToZeroFloat32( shaderDenormFlushToZeroFloat32_ )
49135       , shaderDenormFlushToZeroFloat64( shaderDenormFlushToZeroFloat64_ )
49136       , shaderRoundingModeRTEFloat16( shaderRoundingModeRTEFloat16_ )
49137       , shaderRoundingModeRTEFloat32( shaderRoundingModeRTEFloat32_ )
49138       , shaderRoundingModeRTEFloat64( shaderRoundingModeRTEFloat64_ )
49139       , shaderRoundingModeRTZFloat16( shaderRoundingModeRTZFloat16_ )
49140       , shaderRoundingModeRTZFloat32( shaderRoundingModeRTZFloat32_ )
49141       , shaderRoundingModeRTZFloat64( shaderRoundingModeRTZFloat64_ )
49142     {}
49143 
49144     VULKAN_HPP_CONSTEXPR PhysicalDeviceFloatControlsProperties( PhysicalDeviceFloatControlsProperties const & rhs )
49145       VULKAN_HPP_NOEXCEPT = default;
49146 
PhysicalDeviceFloatControlsPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties49147     PhysicalDeviceFloatControlsProperties( VkPhysicalDeviceFloatControlsProperties const & rhs ) VULKAN_HPP_NOEXCEPT
49148       : PhysicalDeviceFloatControlsProperties(
49149           *reinterpret_cast<PhysicalDeviceFloatControlsProperties const *>( &rhs ) )
49150     {}
49151 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
49152 
49153     PhysicalDeviceFloatControlsProperties &
49154       operator=( PhysicalDeviceFloatControlsProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49155 
49156     PhysicalDeviceFloatControlsProperties &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties49157       operator=( VkPhysicalDeviceFloatControlsProperties const & rhs ) VULKAN_HPP_NOEXCEPT
49158     {
49159       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties const *>( &rhs );
49160       return *this;
49161     }
49162 
operator VkPhysicalDeviceFloatControlsProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties49163     explicit operator VkPhysicalDeviceFloatControlsProperties const &() const VULKAN_HPP_NOEXCEPT
49164     {
49165       return *reinterpret_cast<const VkPhysicalDeviceFloatControlsProperties *>( this );
49166     }
49167 
operator VkPhysicalDeviceFloatControlsProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties49168     explicit operator VkPhysicalDeviceFloatControlsProperties &() VULKAN_HPP_NOEXCEPT
49169     {
49170       return *reinterpret_cast<VkPhysicalDeviceFloatControlsProperties *>( this );
49171     }
49172 
49173 #if 14 <= VULKAN_HPP_CPP_VERSION
49174     auto
49175 #else
49176     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
49177                void * const &,
49178                VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence const &,
49179                VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence const &,
49180                VULKAN_HPP_NAMESPACE::Bool32 const &,
49181                VULKAN_HPP_NAMESPACE::Bool32 const &,
49182                VULKAN_HPP_NAMESPACE::Bool32 const &,
49183                VULKAN_HPP_NAMESPACE::Bool32 const &,
49184                VULKAN_HPP_NAMESPACE::Bool32 const &,
49185                VULKAN_HPP_NAMESPACE::Bool32 const &,
49186                VULKAN_HPP_NAMESPACE::Bool32 const &,
49187                VULKAN_HPP_NAMESPACE::Bool32 const &,
49188                VULKAN_HPP_NAMESPACE::Bool32 const &,
49189                VULKAN_HPP_NAMESPACE::Bool32 const &,
49190                VULKAN_HPP_NAMESPACE::Bool32 const &,
49191                VULKAN_HPP_NAMESPACE::Bool32 const &,
49192                VULKAN_HPP_NAMESPACE::Bool32 const &,
49193                VULKAN_HPP_NAMESPACE::Bool32 const &,
49194                VULKAN_HPP_NAMESPACE::Bool32 const &>
49195 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties49196       reflect() const VULKAN_HPP_NOEXCEPT
49197     {
49198       return std::tie( sType,
49199                        pNext,
49200                        denormBehaviorIndependence,
49201                        roundingModeIndependence,
49202                        shaderSignedZeroInfNanPreserveFloat16,
49203                        shaderSignedZeroInfNanPreserveFloat32,
49204                        shaderSignedZeroInfNanPreserveFloat64,
49205                        shaderDenormPreserveFloat16,
49206                        shaderDenormPreserveFloat32,
49207                        shaderDenormPreserveFloat64,
49208                        shaderDenormFlushToZeroFloat16,
49209                        shaderDenormFlushToZeroFloat32,
49210                        shaderDenormFlushToZeroFloat64,
49211                        shaderRoundingModeRTEFloat16,
49212                        shaderRoundingModeRTEFloat32,
49213                        shaderRoundingModeRTEFloat64,
49214                        shaderRoundingModeRTZFloat16,
49215                        shaderRoundingModeRTZFloat32,
49216                        shaderRoundingModeRTZFloat64 );
49217     }
49218 
49219 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
49220     auto operator<=>( PhysicalDeviceFloatControlsProperties const & ) const = default;
49221 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties49222     bool operator==( PhysicalDeviceFloatControlsProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
49223     {
49224       return this->reflect() == rhs.reflect();
49225     }
49226 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties49227     bool operator!=( PhysicalDeviceFloatControlsProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
49228     {
49229       return this->reflect() != rhs.reflect();
49230     }
49231 #endif
49232 
49233   public:
49234     VULKAN_HPP_NAMESPACE::StructureType                   sType = StructureType::ePhysicalDeviceFloatControlsProperties;
49235     void *                                                pNext = {};
49236     VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence denormBehaviorIndependence =
49237       VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly;
49238     VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence roundingModeIndependence =
49239       VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly;
49240     VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat16 = {};
49241     VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat32 = {};
49242     VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat64 = {};
49243     VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat16           = {};
49244     VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat32           = {};
49245     VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat64           = {};
49246     VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat16        = {};
49247     VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat32        = {};
49248     VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat64        = {};
49249     VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat16          = {};
49250     VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat32          = {};
49251     VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat64          = {};
49252     VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat16          = {};
49253     VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat32          = {};
49254     VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat64          = {};
49255   };
49256   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties ) ==
49257                               sizeof( VkPhysicalDeviceFloatControlsProperties ),
49258                             "struct and wrapper have different size!" );
49259   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties>::value,
49260                             "struct wrapper is not a standard layout!" );
49261   VULKAN_HPP_STATIC_ASSERT(
49262     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties>::value,
49263     "PhysicalDeviceFloatControlsProperties is not nothrow_move_constructible!" );
49264 
49265   template <>
49266   struct CppType<StructureType, StructureType::ePhysicalDeviceFloatControlsProperties>
49267   {
49268     using Type = PhysicalDeviceFloatControlsProperties;
49269   };
49270   using PhysicalDeviceFloatControlsPropertiesKHR = PhysicalDeviceFloatControlsProperties;
49271 
49272   struct PhysicalDeviceFragmentDensityMap2FeaturesEXT
49273   {
49274     using NativeType = VkPhysicalDeviceFragmentDensityMap2FeaturesEXT;
49275 
49276     static const bool                                  allowDuplicate = false;
49277     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
49278       StructureType::ePhysicalDeviceFragmentDensityMap2FeaturesEXT;
49279 
49280 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentDensityMap2FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT49281     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMap2FeaturesEXT(
49282       VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapDeferred_ = {} ) VULKAN_HPP_NOEXCEPT
49283       : fragmentDensityMapDeferred( fragmentDensityMapDeferred_ )
49284     {}
49285 
49286     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMap2FeaturesEXT(
49287       PhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49288 
PhysicalDeviceFragmentDensityMap2FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT49289     PhysicalDeviceFragmentDensityMap2FeaturesEXT( VkPhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs )
49290       VULKAN_HPP_NOEXCEPT
49291       : PhysicalDeviceFragmentDensityMap2FeaturesEXT(
49292           *reinterpret_cast<PhysicalDeviceFragmentDensityMap2FeaturesEXT const *>( &rhs ) )
49293     {}
49294 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
49295 
49296     PhysicalDeviceFragmentDensityMap2FeaturesEXT &
49297       operator=( PhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49298 
49299     PhysicalDeviceFragmentDensityMap2FeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT49300       operator=( VkPhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
49301     {
49302       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT const *>( &rhs );
49303       return *this;
49304     }
49305 
49306 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT49307     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMap2FeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
49308     {
49309       pNext = pNext_;
49310       return *this;
49311     }
49312 
49313     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMap2FeaturesEXT &
setFragmentDensityMapDeferredVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT49314       setFragmentDensityMapDeferred( VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapDeferred_ ) VULKAN_HPP_NOEXCEPT
49315     {
49316       fragmentDensityMapDeferred = fragmentDensityMapDeferred_;
49317       return *this;
49318     }
49319 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
49320 
operator VkPhysicalDeviceFragmentDensityMap2FeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT49321     explicit operator VkPhysicalDeviceFragmentDensityMap2FeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
49322     {
49323       return *reinterpret_cast<const VkPhysicalDeviceFragmentDensityMap2FeaturesEXT *>( this );
49324     }
49325 
operator VkPhysicalDeviceFragmentDensityMap2FeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT49326     explicit operator VkPhysicalDeviceFragmentDensityMap2FeaturesEXT &() VULKAN_HPP_NOEXCEPT
49327     {
49328       return *reinterpret_cast<VkPhysicalDeviceFragmentDensityMap2FeaturesEXT *>( this );
49329     }
49330 
49331 #if 14 <= VULKAN_HPP_CPP_VERSION
49332     auto
49333 #else
49334     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
49335 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT49336       reflect() const VULKAN_HPP_NOEXCEPT
49337     {
49338       return std::tie( sType, pNext, fragmentDensityMapDeferred );
49339     }
49340 
49341 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
49342     auto operator<=>( PhysicalDeviceFragmentDensityMap2FeaturesEXT const & ) const = default;
49343 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT49344     bool operator==( PhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
49345     {
49346       return this->reflect() == rhs.reflect();
49347     }
49348 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT49349     bool operator!=( PhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
49350     {
49351       return this->reflect() != rhs.reflect();
49352     }
49353 #endif
49354 
49355   public:
49356     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentDensityMap2FeaturesEXT;
49357     void *                              pNext = {};
49358     VULKAN_HPP_NAMESPACE::Bool32        fragmentDensityMapDeferred = {};
49359   };
49360   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT ) ==
49361                               sizeof( VkPhysicalDeviceFragmentDensityMap2FeaturesEXT ),
49362                             "struct and wrapper have different size!" );
49363   VULKAN_HPP_STATIC_ASSERT(
49364     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT>::value,
49365     "struct wrapper is not a standard layout!" );
49366   VULKAN_HPP_STATIC_ASSERT(
49367     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT>::value,
49368     "PhysicalDeviceFragmentDensityMap2FeaturesEXT is not nothrow_move_constructible!" );
49369 
49370   template <>
49371   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentDensityMap2FeaturesEXT>
49372   {
49373     using Type = PhysicalDeviceFragmentDensityMap2FeaturesEXT;
49374   };
49375 
49376   struct PhysicalDeviceFragmentDensityMap2PropertiesEXT
49377   {
49378     using NativeType = VkPhysicalDeviceFragmentDensityMap2PropertiesEXT;
49379 
49380     static const bool                                  allowDuplicate = false;
49381     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
49382       StructureType::ePhysicalDeviceFragmentDensityMap2PropertiesEXT;
49383 
49384 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentDensityMap2PropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2PropertiesEXT49385     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMap2PropertiesEXT(
49386       VULKAN_HPP_NAMESPACE::Bool32 subsampledLoads_                           = {},
49387       VULKAN_HPP_NAMESPACE::Bool32 subsampledCoarseReconstructionEarlyAccess_ = {},
49388       uint32_t                     maxSubsampledArrayLayers_                  = {},
49389       uint32_t                     maxDescriptorSetSubsampledSamplers_        = {} ) VULKAN_HPP_NOEXCEPT
49390       : subsampledLoads( subsampledLoads_ )
49391       , subsampledCoarseReconstructionEarlyAccess( subsampledCoarseReconstructionEarlyAccess_ )
49392       , maxSubsampledArrayLayers( maxSubsampledArrayLayers_ )
49393       , maxDescriptorSetSubsampledSamplers( maxDescriptorSetSubsampledSamplers_ )
49394     {}
49395 
49396     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMap2PropertiesEXT(
49397       PhysicalDeviceFragmentDensityMap2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49398 
PhysicalDeviceFragmentDensityMap2PropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2PropertiesEXT49399     PhysicalDeviceFragmentDensityMap2PropertiesEXT( VkPhysicalDeviceFragmentDensityMap2PropertiesEXT const & rhs )
49400       VULKAN_HPP_NOEXCEPT
49401       : PhysicalDeviceFragmentDensityMap2PropertiesEXT(
49402           *reinterpret_cast<PhysicalDeviceFragmentDensityMap2PropertiesEXT const *>( &rhs ) )
49403     {}
49404 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
49405 
49406     PhysicalDeviceFragmentDensityMap2PropertiesEXT &
49407       operator=( PhysicalDeviceFragmentDensityMap2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49408 
49409     PhysicalDeviceFragmentDensityMap2PropertiesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2PropertiesEXT49410       operator=( VkPhysicalDeviceFragmentDensityMap2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
49411     {
49412       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2PropertiesEXT const *>( &rhs );
49413       return *this;
49414     }
49415 
operator VkPhysicalDeviceFragmentDensityMap2PropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2PropertiesEXT49416     explicit operator VkPhysicalDeviceFragmentDensityMap2PropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
49417     {
49418       return *reinterpret_cast<const VkPhysicalDeviceFragmentDensityMap2PropertiesEXT *>( this );
49419     }
49420 
operator VkPhysicalDeviceFragmentDensityMap2PropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2PropertiesEXT49421     explicit operator VkPhysicalDeviceFragmentDensityMap2PropertiesEXT &() VULKAN_HPP_NOEXCEPT
49422     {
49423       return *reinterpret_cast<VkPhysicalDeviceFragmentDensityMap2PropertiesEXT *>( this );
49424     }
49425 
49426 #if 14 <= VULKAN_HPP_CPP_VERSION
49427     auto
49428 #else
49429     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
49430                void * const &,
49431                VULKAN_HPP_NAMESPACE::Bool32 const &,
49432                VULKAN_HPP_NAMESPACE::Bool32 const &,
49433                uint32_t const &,
49434                uint32_t const &>
49435 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2PropertiesEXT49436       reflect() const VULKAN_HPP_NOEXCEPT
49437     {
49438       return std::tie( sType,
49439                        pNext,
49440                        subsampledLoads,
49441                        subsampledCoarseReconstructionEarlyAccess,
49442                        maxSubsampledArrayLayers,
49443                        maxDescriptorSetSubsampledSamplers );
49444     }
49445 
49446 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
49447     auto operator<=>( PhysicalDeviceFragmentDensityMap2PropertiesEXT const & ) const = default;
49448 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2PropertiesEXT49449     bool operator==( PhysicalDeviceFragmentDensityMap2PropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
49450     {
49451       return this->reflect() == rhs.reflect();
49452     }
49453 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2PropertiesEXT49454     bool operator!=( PhysicalDeviceFragmentDensityMap2PropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
49455     {
49456       return this->reflect() != rhs.reflect();
49457     }
49458 #endif
49459 
49460   public:
49461     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentDensityMap2PropertiesEXT;
49462     void *                              pNext = {};
49463     VULKAN_HPP_NAMESPACE::Bool32        subsampledLoads                           = {};
49464     VULKAN_HPP_NAMESPACE::Bool32        subsampledCoarseReconstructionEarlyAccess = {};
49465     uint32_t                            maxSubsampledArrayLayers                  = {};
49466     uint32_t                            maxDescriptorSetSubsampledSamplers        = {};
49467   };
49468   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2PropertiesEXT ) ==
49469                               sizeof( VkPhysicalDeviceFragmentDensityMap2PropertiesEXT ),
49470                             "struct and wrapper have different size!" );
49471   VULKAN_HPP_STATIC_ASSERT(
49472     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2PropertiesEXT>::value,
49473     "struct wrapper is not a standard layout!" );
49474   VULKAN_HPP_STATIC_ASSERT(
49475     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2PropertiesEXT>::value,
49476     "PhysicalDeviceFragmentDensityMap2PropertiesEXT is not nothrow_move_constructible!" );
49477 
49478   template <>
49479   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentDensityMap2PropertiesEXT>
49480   {
49481     using Type = PhysicalDeviceFragmentDensityMap2PropertiesEXT;
49482   };
49483 
49484   struct PhysicalDeviceFragmentDensityMapFeaturesEXT
49485   {
49486     using NativeType = VkPhysicalDeviceFragmentDensityMapFeaturesEXT;
49487 
49488     static const bool                                  allowDuplicate = false;
49489     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
49490       StructureType::ePhysicalDeviceFragmentDensityMapFeaturesEXT;
49491 
49492 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentDensityMapFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT49493     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapFeaturesEXT(
49494       VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMap_                    = {},
49495       VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapDynamic_             = {},
49496       VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapNonSubsampledImages_ = {} ) VULKAN_HPP_NOEXCEPT
49497       : fragmentDensityMap( fragmentDensityMap_ )
49498       , fragmentDensityMapDynamic( fragmentDensityMapDynamic_ )
49499       , fragmentDensityMapNonSubsampledImages( fragmentDensityMapNonSubsampledImages_ )
49500     {}
49501 
49502     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapFeaturesEXT(
49503       PhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49504 
PhysicalDeviceFragmentDensityMapFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT49505     PhysicalDeviceFragmentDensityMapFeaturesEXT( VkPhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs )
49506       VULKAN_HPP_NOEXCEPT
49507       : PhysicalDeviceFragmentDensityMapFeaturesEXT(
49508           *reinterpret_cast<PhysicalDeviceFragmentDensityMapFeaturesEXT const *>( &rhs ) )
49509     {}
49510 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
49511 
49512     PhysicalDeviceFragmentDensityMapFeaturesEXT &
49513       operator=( PhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49514 
49515     PhysicalDeviceFragmentDensityMapFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT49516       operator=( VkPhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
49517     {
49518       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT const *>( &rhs );
49519       return *this;
49520     }
49521 
49522 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT49523     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
49524     {
49525       pNext = pNext_;
49526       return *this;
49527     }
49528 
49529     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapFeaturesEXT &
setFragmentDensityMapVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT49530       setFragmentDensityMap( VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMap_ ) VULKAN_HPP_NOEXCEPT
49531     {
49532       fragmentDensityMap = fragmentDensityMap_;
49533       return *this;
49534     }
49535 
49536     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapFeaturesEXT &
setFragmentDensityMapDynamicVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT49537       setFragmentDensityMapDynamic( VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapDynamic_ ) VULKAN_HPP_NOEXCEPT
49538     {
49539       fragmentDensityMapDynamic = fragmentDensityMapDynamic_;
49540       return *this;
49541     }
49542 
setFragmentDensityMapNonSubsampledImagesVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT49543     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapFeaturesEXT & setFragmentDensityMapNonSubsampledImages(
49544       VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapNonSubsampledImages_ ) VULKAN_HPP_NOEXCEPT
49545     {
49546       fragmentDensityMapNonSubsampledImages = fragmentDensityMapNonSubsampledImages_;
49547       return *this;
49548     }
49549 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
49550 
operator VkPhysicalDeviceFragmentDensityMapFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT49551     explicit operator VkPhysicalDeviceFragmentDensityMapFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
49552     {
49553       return *reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapFeaturesEXT *>( this );
49554     }
49555 
operator VkPhysicalDeviceFragmentDensityMapFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT49556     explicit operator VkPhysicalDeviceFragmentDensityMapFeaturesEXT &() VULKAN_HPP_NOEXCEPT
49557     {
49558       return *reinterpret_cast<VkPhysicalDeviceFragmentDensityMapFeaturesEXT *>( this );
49559     }
49560 
49561 #if 14 <= VULKAN_HPP_CPP_VERSION
49562     auto
49563 #else
49564     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
49565                void * const &,
49566                VULKAN_HPP_NAMESPACE::Bool32 const &,
49567                VULKAN_HPP_NAMESPACE::Bool32 const &,
49568                VULKAN_HPP_NAMESPACE::Bool32 const &>
49569 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT49570       reflect() const VULKAN_HPP_NOEXCEPT
49571     {
49572       return std::tie(
49573         sType, pNext, fragmentDensityMap, fragmentDensityMapDynamic, fragmentDensityMapNonSubsampledImages );
49574     }
49575 
49576 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
49577     auto operator<=>( PhysicalDeviceFragmentDensityMapFeaturesEXT const & ) const = default;
49578 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT49579     bool operator==( PhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
49580     {
49581       return this->reflect() == rhs.reflect();
49582     }
49583 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT49584     bool operator!=( PhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
49585     {
49586       return this->reflect() != rhs.reflect();
49587     }
49588 #endif
49589 
49590   public:
49591     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentDensityMapFeaturesEXT;
49592     void *                              pNext = {};
49593     VULKAN_HPP_NAMESPACE::Bool32        fragmentDensityMap                    = {};
49594     VULKAN_HPP_NAMESPACE::Bool32        fragmentDensityMapDynamic             = {};
49595     VULKAN_HPP_NAMESPACE::Bool32        fragmentDensityMapNonSubsampledImages = {};
49596   };
49597   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT ) ==
49598                               sizeof( VkPhysicalDeviceFragmentDensityMapFeaturesEXT ),
49599                             "struct and wrapper have different size!" );
49600   VULKAN_HPP_STATIC_ASSERT(
49601     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT>::value,
49602     "struct wrapper is not a standard layout!" );
49603   VULKAN_HPP_STATIC_ASSERT(
49604     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT>::value,
49605     "PhysicalDeviceFragmentDensityMapFeaturesEXT is not nothrow_move_constructible!" );
49606 
49607   template <>
49608   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentDensityMapFeaturesEXT>
49609   {
49610     using Type = PhysicalDeviceFragmentDensityMapFeaturesEXT;
49611   };
49612 
49613   struct PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM
49614   {
49615     using NativeType = VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM;
49616 
49617     static const bool                                  allowDuplicate = false;
49618     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
49619       StructureType::ePhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM;
49620 
49621 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM49622     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM(
49623       VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapOffset_ = {} ) VULKAN_HPP_NOEXCEPT
49624       : fragmentDensityMapOffset( fragmentDensityMapOffset_ )
49625     {}
49626 
49627     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM(
49628       PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49629 
PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM49630     PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM(
49631       VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
49632       : PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM(
49633           *reinterpret_cast<PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const *>( &rhs ) )
49634     {}
49635 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
49636 
49637     PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM &
49638       operator=( PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49639 
49640     PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM49641       operator=( VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
49642     {
49643       *this =
49644         *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const *>( &rhs );
49645       return *this;
49646     }
49647 
49648 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
49649     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM49650                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
49651     {
49652       pNext = pNext_;
49653       return *this;
49654     }
49655 
49656     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM &
setFragmentDensityMapOffsetVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM49657       setFragmentDensityMapOffset( VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapOffset_ ) VULKAN_HPP_NOEXCEPT
49658     {
49659       fragmentDensityMapOffset = fragmentDensityMapOffset_;
49660       return *this;
49661     }
49662 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
49663 
operator VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM49664     explicit operator VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const &() const VULKAN_HPP_NOEXCEPT
49665     {
49666       return *reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM *>( this );
49667     }
49668 
operator VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM49669     explicit operator VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM &() VULKAN_HPP_NOEXCEPT
49670     {
49671       return *reinterpret_cast<VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM *>( this );
49672     }
49673 
49674 #if 14 <= VULKAN_HPP_CPP_VERSION
49675     auto
49676 #else
49677     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
49678 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM49679       reflect() const VULKAN_HPP_NOEXCEPT
49680     {
49681       return std::tie( sType, pNext, fragmentDensityMapOffset );
49682     }
49683 
49684 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
49685     auto operator<=>( PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const & ) const = default;
49686 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM49687     bool operator==( PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
49688     {
49689       return this->reflect() == rhs.reflect();
49690     }
49691 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM49692     bool operator!=( PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
49693     {
49694       return this->reflect() != rhs.reflect();
49695     }
49696 #endif
49697 
49698   public:
49699     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM;
49700     void *                              pNext = {};
49701     VULKAN_HPP_NAMESPACE::Bool32        fragmentDensityMapOffset = {};
49702   };
49703   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM ) ==
49704                               sizeof( VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM ),
49705                             "struct and wrapper have different size!" );
49706   VULKAN_HPP_STATIC_ASSERT(
49707     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM>::value,
49708     "struct wrapper is not a standard layout!" );
49709   VULKAN_HPP_STATIC_ASSERT(
49710     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM>::value,
49711     "PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM is not nothrow_move_constructible!" );
49712 
49713   template <>
49714   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM>
49715   {
49716     using Type = PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM;
49717   };
49718 
49719   struct PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM
49720   {
49721     using NativeType = VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM;
49722 
49723     static const bool                                  allowDuplicate = false;
49724     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
49725       StructureType::ePhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM;
49726 
49727 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM49728     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM(
49729       VULKAN_HPP_NAMESPACE::Extent2D fragmentDensityOffsetGranularity_ = {} ) VULKAN_HPP_NOEXCEPT
49730       : fragmentDensityOffsetGranularity( fragmentDensityOffsetGranularity_ )
49731     {}
49732 
49733     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM(
49734       PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49735 
PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM49736     PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM(
49737       VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
49738       : PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM(
49739           *reinterpret_cast<PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const *>( &rhs ) )
49740     {}
49741 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
49742 
49743     PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM &
49744       operator=( PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49745 
49746     PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM49747       operator=( VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
49748     {
49749       *this =
49750         *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const *>( &rhs );
49751       return *this;
49752     }
49753 
operator VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM49754     explicit operator VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const &() const VULKAN_HPP_NOEXCEPT
49755     {
49756       return *reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM *>( this );
49757     }
49758 
operator VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM49759     explicit operator VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM &() VULKAN_HPP_NOEXCEPT
49760     {
49761       return *reinterpret_cast<VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM *>( this );
49762     }
49763 
49764 #if 14 <= VULKAN_HPP_CPP_VERSION
49765     auto
49766 #else
49767     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Extent2D const &>
49768 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM49769       reflect() const VULKAN_HPP_NOEXCEPT
49770     {
49771       return std::tie( sType, pNext, fragmentDensityOffsetGranularity );
49772     }
49773 
49774 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
49775     auto operator<=>( PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const & ) const = default;
49776 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM49777     bool operator==( PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
49778     {
49779       return this->reflect() == rhs.reflect();
49780     }
49781 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM49782     bool operator!=( PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
49783     {
49784       return this->reflect() != rhs.reflect();
49785     }
49786 #endif
49787 
49788   public:
49789     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM;
49790     void *                              pNext = {};
49791     VULKAN_HPP_NAMESPACE::Extent2D      fragmentDensityOffsetGranularity = {};
49792   };
49793   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM ) ==
49794                               sizeof( VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM ),
49795                             "struct and wrapper have different size!" );
49796   VULKAN_HPP_STATIC_ASSERT(
49797     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM>::value,
49798     "struct wrapper is not a standard layout!" );
49799   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<
49800                               VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM>::value,
49801                             "PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM is not nothrow_move_constructible!" );
49802 
49803   template <>
49804   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM>
49805   {
49806     using Type = PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM;
49807   };
49808 
49809   struct PhysicalDeviceFragmentDensityMapPropertiesEXT
49810   {
49811     using NativeType = VkPhysicalDeviceFragmentDensityMapPropertiesEXT;
49812 
49813     static const bool                                  allowDuplicate = false;
49814     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
49815       StructureType::ePhysicalDeviceFragmentDensityMapPropertiesEXT;
49816 
49817 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentDensityMapPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapPropertiesEXT49818     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapPropertiesEXT(
49819       VULKAN_HPP_NAMESPACE::Extent2D minFragmentDensityTexelSize_ = {},
49820       VULKAN_HPP_NAMESPACE::Extent2D maxFragmentDensityTexelSize_ = {},
49821       VULKAN_HPP_NAMESPACE::Bool32   fragmentDensityInvocations_  = {} ) VULKAN_HPP_NOEXCEPT
49822       : minFragmentDensityTexelSize( minFragmentDensityTexelSize_ )
49823       , maxFragmentDensityTexelSize( maxFragmentDensityTexelSize_ )
49824       , fragmentDensityInvocations( fragmentDensityInvocations_ )
49825     {}
49826 
49827     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapPropertiesEXT(
49828       PhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49829 
PhysicalDeviceFragmentDensityMapPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapPropertiesEXT49830     PhysicalDeviceFragmentDensityMapPropertiesEXT( VkPhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs )
49831       VULKAN_HPP_NOEXCEPT
49832       : PhysicalDeviceFragmentDensityMapPropertiesEXT(
49833           *reinterpret_cast<PhysicalDeviceFragmentDensityMapPropertiesEXT const *>( &rhs ) )
49834     {}
49835 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
49836 
49837     PhysicalDeviceFragmentDensityMapPropertiesEXT &
49838       operator=( PhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49839 
49840     PhysicalDeviceFragmentDensityMapPropertiesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapPropertiesEXT49841       operator=( VkPhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
49842     {
49843       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapPropertiesEXT const *>( &rhs );
49844       return *this;
49845     }
49846 
operator VkPhysicalDeviceFragmentDensityMapPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapPropertiesEXT49847     explicit operator VkPhysicalDeviceFragmentDensityMapPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
49848     {
49849       return *reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapPropertiesEXT *>( this );
49850     }
49851 
operator VkPhysicalDeviceFragmentDensityMapPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapPropertiesEXT49852     explicit operator VkPhysicalDeviceFragmentDensityMapPropertiesEXT &() VULKAN_HPP_NOEXCEPT
49853     {
49854       return *reinterpret_cast<VkPhysicalDeviceFragmentDensityMapPropertiesEXT *>( this );
49855     }
49856 
49857 #if 14 <= VULKAN_HPP_CPP_VERSION
49858     auto
49859 #else
49860     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
49861                void * const &,
49862                VULKAN_HPP_NAMESPACE::Extent2D const &,
49863                VULKAN_HPP_NAMESPACE::Extent2D const &,
49864                VULKAN_HPP_NAMESPACE::Bool32 const &>
49865 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapPropertiesEXT49866       reflect() const VULKAN_HPP_NOEXCEPT
49867     {
49868       return std::tie(
49869         sType, pNext, minFragmentDensityTexelSize, maxFragmentDensityTexelSize, fragmentDensityInvocations );
49870     }
49871 
49872 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
49873     auto operator<=>( PhysicalDeviceFragmentDensityMapPropertiesEXT const & ) const = default;
49874 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapPropertiesEXT49875     bool operator==( PhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
49876     {
49877       return this->reflect() == rhs.reflect();
49878     }
49879 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapPropertiesEXT49880     bool operator!=( PhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
49881     {
49882       return this->reflect() != rhs.reflect();
49883     }
49884 #endif
49885 
49886   public:
49887     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentDensityMapPropertiesEXT;
49888     void *                              pNext = {};
49889     VULKAN_HPP_NAMESPACE::Extent2D      minFragmentDensityTexelSize = {};
49890     VULKAN_HPP_NAMESPACE::Extent2D      maxFragmentDensityTexelSize = {};
49891     VULKAN_HPP_NAMESPACE::Bool32        fragmentDensityInvocations  = {};
49892   };
49893   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapPropertiesEXT ) ==
49894                               sizeof( VkPhysicalDeviceFragmentDensityMapPropertiesEXT ),
49895                             "struct and wrapper have different size!" );
49896   VULKAN_HPP_STATIC_ASSERT(
49897     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapPropertiesEXT>::value,
49898     "struct wrapper is not a standard layout!" );
49899   VULKAN_HPP_STATIC_ASSERT(
49900     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapPropertiesEXT>::value,
49901     "PhysicalDeviceFragmentDensityMapPropertiesEXT is not nothrow_move_constructible!" );
49902 
49903   template <>
49904   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentDensityMapPropertiesEXT>
49905   {
49906     using Type = PhysicalDeviceFragmentDensityMapPropertiesEXT;
49907   };
49908 
49909   struct PhysicalDeviceFragmentShaderBarycentricFeaturesNV
49910   {
49911     using NativeType = VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV;
49912 
49913     static const bool                                  allowDuplicate = false;
49914     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
49915       StructureType::ePhysicalDeviceFragmentShaderBarycentricFeaturesNV;
49916 
49917 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentShaderBarycentricFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesNV49918     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShaderBarycentricFeaturesNV(
49919       VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderBarycentric_ = {} ) VULKAN_HPP_NOEXCEPT
49920       : fragmentShaderBarycentric( fragmentShaderBarycentric_ )
49921     {}
49922 
49923     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShaderBarycentricFeaturesNV(
49924       PhysicalDeviceFragmentShaderBarycentricFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49925 
PhysicalDeviceFragmentShaderBarycentricFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesNV49926     PhysicalDeviceFragmentShaderBarycentricFeaturesNV( VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV const & rhs )
49927       VULKAN_HPP_NOEXCEPT
49928       : PhysicalDeviceFragmentShaderBarycentricFeaturesNV(
49929           *reinterpret_cast<PhysicalDeviceFragmentShaderBarycentricFeaturesNV const *>( &rhs ) )
49930     {}
49931 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
49932 
49933     PhysicalDeviceFragmentShaderBarycentricFeaturesNV &
49934       operator=( PhysicalDeviceFragmentShaderBarycentricFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49935 
49936     PhysicalDeviceFragmentShaderBarycentricFeaturesNV &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesNV49937       operator=( VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
49938     {
49939       *this =
49940         *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesNV const *>( &rhs );
49941       return *this;
49942     }
49943 
49944 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
49945     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderBarycentricFeaturesNV &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesNV49946                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
49947     {
49948       pNext = pNext_;
49949       return *this;
49950     }
49951 
49952     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderBarycentricFeaturesNV &
setFragmentShaderBarycentricVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesNV49953       setFragmentShaderBarycentric( VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderBarycentric_ ) VULKAN_HPP_NOEXCEPT
49954     {
49955       fragmentShaderBarycentric = fragmentShaderBarycentric_;
49956       return *this;
49957     }
49958 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
49959 
operator VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesNV49960     explicit operator VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
49961     {
49962       return *reinterpret_cast<const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV *>( this );
49963     }
49964 
operator VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesNV49965     explicit operator VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV &() VULKAN_HPP_NOEXCEPT
49966     {
49967       return *reinterpret_cast<VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV *>( this );
49968     }
49969 
49970 #if 14 <= VULKAN_HPP_CPP_VERSION
49971     auto
49972 #else
49973     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
49974 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesNV49975       reflect() const VULKAN_HPP_NOEXCEPT
49976     {
49977       return std::tie( sType, pNext, fragmentShaderBarycentric );
49978     }
49979 
49980 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
49981     auto operator<=>( PhysicalDeviceFragmentShaderBarycentricFeaturesNV const & ) const = default;
49982 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesNV49983     bool operator==( PhysicalDeviceFragmentShaderBarycentricFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
49984     {
49985       return this->reflect() == rhs.reflect();
49986     }
49987 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesNV49988     bool operator!=( PhysicalDeviceFragmentShaderBarycentricFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
49989     {
49990       return this->reflect() != rhs.reflect();
49991     }
49992 #endif
49993 
49994   public:
49995     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentShaderBarycentricFeaturesNV;
49996     void *                              pNext = {};
49997     VULKAN_HPP_NAMESPACE::Bool32        fragmentShaderBarycentric = {};
49998   };
49999   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesNV ) ==
50000                               sizeof( VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV ),
50001                             "struct and wrapper have different size!" );
50002   VULKAN_HPP_STATIC_ASSERT(
50003     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesNV>::value,
50004     "struct wrapper is not a standard layout!" );
50005   VULKAN_HPP_STATIC_ASSERT(
50006     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesNV>::value,
50007     "PhysicalDeviceFragmentShaderBarycentricFeaturesNV is not nothrow_move_constructible!" );
50008 
50009   template <>
50010   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentShaderBarycentricFeaturesNV>
50011   {
50012     using Type = PhysicalDeviceFragmentShaderBarycentricFeaturesNV;
50013   };
50014 
50015   struct PhysicalDeviceFragmentShaderInterlockFeaturesEXT
50016   {
50017     using NativeType = VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT;
50018 
50019     static const bool                                  allowDuplicate = false;
50020     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
50021       StructureType::ePhysicalDeviceFragmentShaderInterlockFeaturesEXT;
50022 
50023 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentShaderInterlockFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT50024     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShaderInterlockFeaturesEXT(
50025       VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderSampleInterlock_      = {},
50026       VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderPixelInterlock_       = {},
50027       VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderShadingRateInterlock_ = {} ) VULKAN_HPP_NOEXCEPT
50028       : fragmentShaderSampleInterlock( fragmentShaderSampleInterlock_ )
50029       , fragmentShaderPixelInterlock( fragmentShaderPixelInterlock_ )
50030       , fragmentShaderShadingRateInterlock( fragmentShaderShadingRateInterlock_ )
50031     {}
50032 
50033     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShaderInterlockFeaturesEXT(
50034       PhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50035 
PhysicalDeviceFragmentShaderInterlockFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT50036     PhysicalDeviceFragmentShaderInterlockFeaturesEXT( VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs )
50037       VULKAN_HPP_NOEXCEPT
50038       : PhysicalDeviceFragmentShaderInterlockFeaturesEXT(
50039           *reinterpret_cast<PhysicalDeviceFragmentShaderInterlockFeaturesEXT const *>( &rhs ) )
50040     {}
50041 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
50042 
50043     PhysicalDeviceFragmentShaderInterlockFeaturesEXT &
50044       operator=( PhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50045 
50046     PhysicalDeviceFragmentShaderInterlockFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT50047       operator=( VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
50048     {
50049       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT const *>( &rhs );
50050       return *this;
50051     }
50052 
50053 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
50054     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderInterlockFeaturesEXT &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT50055                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
50056     {
50057       pNext = pNext_;
50058       return *this;
50059     }
50060 
setFragmentShaderSampleInterlockVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT50061     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderInterlockFeaturesEXT & setFragmentShaderSampleInterlock(
50062       VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderSampleInterlock_ ) VULKAN_HPP_NOEXCEPT
50063     {
50064       fragmentShaderSampleInterlock = fragmentShaderSampleInterlock_;
50065       return *this;
50066     }
50067 
50068     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderInterlockFeaturesEXT &
setFragmentShaderPixelInterlockVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT50069       setFragmentShaderPixelInterlock( VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderPixelInterlock_ ) VULKAN_HPP_NOEXCEPT
50070     {
50071       fragmentShaderPixelInterlock = fragmentShaderPixelInterlock_;
50072       return *this;
50073     }
50074 
setFragmentShaderShadingRateInterlockVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT50075     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderInterlockFeaturesEXT & setFragmentShaderShadingRateInterlock(
50076       VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderShadingRateInterlock_ ) VULKAN_HPP_NOEXCEPT
50077     {
50078       fragmentShaderShadingRateInterlock = fragmentShaderShadingRateInterlock_;
50079       return *this;
50080     }
50081 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
50082 
operator VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT50083     explicit operator VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
50084     {
50085       return *reinterpret_cast<const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT *>( this );
50086     }
50087 
operator VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT50088     explicit operator VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT &() VULKAN_HPP_NOEXCEPT
50089     {
50090       return *reinterpret_cast<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT *>( this );
50091     }
50092 
50093 #if 14 <= VULKAN_HPP_CPP_VERSION
50094     auto
50095 #else
50096     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
50097                void * const &,
50098                VULKAN_HPP_NAMESPACE::Bool32 const &,
50099                VULKAN_HPP_NAMESPACE::Bool32 const &,
50100                VULKAN_HPP_NAMESPACE::Bool32 const &>
50101 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT50102       reflect() const VULKAN_HPP_NOEXCEPT
50103     {
50104       return std::tie(
50105         sType, pNext, fragmentShaderSampleInterlock, fragmentShaderPixelInterlock, fragmentShaderShadingRateInterlock );
50106     }
50107 
50108 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
50109     auto operator<=>( PhysicalDeviceFragmentShaderInterlockFeaturesEXT const & ) const = default;
50110 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT50111     bool operator==( PhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
50112     {
50113       return this->reflect() == rhs.reflect();
50114     }
50115 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT50116     bool operator!=( PhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
50117     {
50118       return this->reflect() != rhs.reflect();
50119     }
50120 #endif
50121 
50122   public:
50123     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentShaderInterlockFeaturesEXT;
50124     void *                              pNext = {};
50125     VULKAN_HPP_NAMESPACE::Bool32        fragmentShaderSampleInterlock      = {};
50126     VULKAN_HPP_NAMESPACE::Bool32        fragmentShaderPixelInterlock       = {};
50127     VULKAN_HPP_NAMESPACE::Bool32        fragmentShaderShadingRateInterlock = {};
50128   };
50129   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT ) ==
50130                               sizeof( VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT ),
50131                             "struct and wrapper have different size!" );
50132   VULKAN_HPP_STATIC_ASSERT(
50133     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT>::value,
50134     "struct wrapper is not a standard layout!" );
50135   VULKAN_HPP_STATIC_ASSERT(
50136     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT>::value,
50137     "PhysicalDeviceFragmentShaderInterlockFeaturesEXT is not nothrow_move_constructible!" );
50138 
50139   template <>
50140   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentShaderInterlockFeaturesEXT>
50141   {
50142     using Type = PhysicalDeviceFragmentShaderInterlockFeaturesEXT;
50143   };
50144 
50145   struct PhysicalDeviceFragmentShadingRateEnumsFeaturesNV
50146   {
50147     using NativeType = VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV;
50148 
50149     static const bool                                  allowDuplicate = false;
50150     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
50151       StructureType::ePhysicalDeviceFragmentShadingRateEnumsFeaturesNV;
50152 
50153 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentShadingRateEnumsFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV50154     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateEnumsFeaturesNV(
50155       VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateEnums_         = {},
50156       VULKAN_HPP_NAMESPACE::Bool32 supersampleFragmentShadingRates_  = {},
50157       VULKAN_HPP_NAMESPACE::Bool32 noInvocationFragmentShadingRates_ = {} ) VULKAN_HPP_NOEXCEPT
50158       : fragmentShadingRateEnums( fragmentShadingRateEnums_ )
50159       , supersampleFragmentShadingRates( supersampleFragmentShadingRates_ )
50160       , noInvocationFragmentShadingRates( noInvocationFragmentShadingRates_ )
50161     {}
50162 
50163     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateEnumsFeaturesNV(
50164       PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50165 
PhysicalDeviceFragmentShadingRateEnumsFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV50166     PhysicalDeviceFragmentShadingRateEnumsFeaturesNV( VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & rhs )
50167       VULKAN_HPP_NOEXCEPT
50168       : PhysicalDeviceFragmentShadingRateEnumsFeaturesNV(
50169           *reinterpret_cast<PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const *>( &rhs ) )
50170     {}
50171 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
50172 
50173     PhysicalDeviceFragmentShadingRateEnumsFeaturesNV &
50174       operator=( PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50175 
50176     PhysicalDeviceFragmentShadingRateEnumsFeaturesNV &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV50177       operator=( VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
50178     {
50179       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const *>( &rhs );
50180       return *this;
50181     }
50182 
50183 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
50184     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateEnumsFeaturesNV &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV50185                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
50186     {
50187       pNext = pNext_;
50188       return *this;
50189     }
50190 
50191     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateEnumsFeaturesNV &
setFragmentShadingRateEnumsVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV50192       setFragmentShadingRateEnums( VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateEnums_ ) VULKAN_HPP_NOEXCEPT
50193     {
50194       fragmentShadingRateEnums = fragmentShadingRateEnums_;
50195       return *this;
50196     }
50197 
setSupersampleFragmentShadingRatesVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV50198     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateEnumsFeaturesNV & setSupersampleFragmentShadingRates(
50199       VULKAN_HPP_NAMESPACE::Bool32 supersampleFragmentShadingRates_ ) VULKAN_HPP_NOEXCEPT
50200     {
50201       supersampleFragmentShadingRates = supersampleFragmentShadingRates_;
50202       return *this;
50203     }
50204 
setNoInvocationFragmentShadingRatesVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV50205     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateEnumsFeaturesNV & setNoInvocationFragmentShadingRates(
50206       VULKAN_HPP_NAMESPACE::Bool32 noInvocationFragmentShadingRates_ ) VULKAN_HPP_NOEXCEPT
50207     {
50208       noInvocationFragmentShadingRates = noInvocationFragmentShadingRates_;
50209       return *this;
50210     }
50211 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
50212 
operator VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV50213     explicit operator VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
50214     {
50215       return *reinterpret_cast<const VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV *>( this );
50216     }
50217 
operator VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV50218     explicit operator VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV &() VULKAN_HPP_NOEXCEPT
50219     {
50220       return *reinterpret_cast<VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV *>( this );
50221     }
50222 
50223 #if 14 <= VULKAN_HPP_CPP_VERSION
50224     auto
50225 #else
50226     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
50227                void * const &,
50228                VULKAN_HPP_NAMESPACE::Bool32 const &,
50229                VULKAN_HPP_NAMESPACE::Bool32 const &,
50230                VULKAN_HPP_NAMESPACE::Bool32 const &>
50231 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV50232       reflect() const VULKAN_HPP_NOEXCEPT
50233     {
50234       return std::tie(
50235         sType, pNext, fragmentShadingRateEnums, supersampleFragmentShadingRates, noInvocationFragmentShadingRates );
50236     }
50237 
50238 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
50239     auto operator<=>( PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & ) const = default;
50240 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV50241     bool operator==( PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
50242     {
50243       return this->reflect() == rhs.reflect();
50244     }
50245 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV50246     bool operator!=( PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
50247     {
50248       return this->reflect() != rhs.reflect();
50249     }
50250 #endif
50251 
50252   public:
50253     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentShadingRateEnumsFeaturesNV;
50254     void *                              pNext = {};
50255     VULKAN_HPP_NAMESPACE::Bool32        fragmentShadingRateEnums         = {};
50256     VULKAN_HPP_NAMESPACE::Bool32        supersampleFragmentShadingRates  = {};
50257     VULKAN_HPP_NAMESPACE::Bool32        noInvocationFragmentShadingRates = {};
50258   };
50259   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV ) ==
50260                               sizeof( VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV ),
50261                             "struct and wrapper have different size!" );
50262   VULKAN_HPP_STATIC_ASSERT(
50263     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV>::value,
50264     "struct wrapper is not a standard layout!" );
50265   VULKAN_HPP_STATIC_ASSERT(
50266     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV>::value,
50267     "PhysicalDeviceFragmentShadingRateEnumsFeaturesNV is not nothrow_move_constructible!" );
50268 
50269   template <>
50270   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentShadingRateEnumsFeaturesNV>
50271   {
50272     using Type = PhysicalDeviceFragmentShadingRateEnumsFeaturesNV;
50273   };
50274 
50275   struct PhysicalDeviceFragmentShadingRateEnumsPropertiesNV
50276   {
50277     using NativeType = VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV;
50278 
50279     static const bool                                  allowDuplicate = false;
50280     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
50281       StructureType::ePhysicalDeviceFragmentShadingRateEnumsPropertiesNV;
50282 
50283 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentShadingRateEnumsPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV50284     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateEnumsPropertiesNV(
50285       VULKAN_HPP_NAMESPACE::SampleCountFlagBits maxFragmentShadingRateInvocationCount_ =
50286         VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1 ) VULKAN_HPP_NOEXCEPT
50287       : maxFragmentShadingRateInvocationCount( maxFragmentShadingRateInvocationCount_ )
50288     {}
50289 
50290     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateEnumsPropertiesNV(
50291       PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50292 
PhysicalDeviceFragmentShadingRateEnumsPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV50293     PhysicalDeviceFragmentShadingRateEnumsPropertiesNV(
50294       VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
50295       : PhysicalDeviceFragmentShadingRateEnumsPropertiesNV(
50296           *reinterpret_cast<PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const *>( &rhs ) )
50297     {}
50298 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
50299 
50300     PhysicalDeviceFragmentShadingRateEnumsPropertiesNV &
50301       operator=( PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50302 
50303     PhysicalDeviceFragmentShadingRateEnumsPropertiesNV &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV50304       operator=( VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
50305     {
50306       *this =
50307         *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const *>( &rhs );
50308       return *this;
50309     }
50310 
50311 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
50312     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateEnumsPropertiesNV &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV50313                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
50314     {
50315       pNext = pNext_;
50316       return *this;
50317     }
50318 
50319     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateEnumsPropertiesNV &
setMaxFragmentShadingRateInvocationCountVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV50320                             setMaxFragmentShadingRateInvocationCount(
50321                               VULKAN_HPP_NAMESPACE::SampleCountFlagBits maxFragmentShadingRateInvocationCount_ ) VULKAN_HPP_NOEXCEPT
50322     {
50323       maxFragmentShadingRateInvocationCount = maxFragmentShadingRateInvocationCount_;
50324       return *this;
50325     }
50326 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
50327 
operator VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV50328     explicit operator VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
50329     {
50330       return *reinterpret_cast<const VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV *>( this );
50331     }
50332 
operator VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV50333     explicit operator VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV &() VULKAN_HPP_NOEXCEPT
50334     {
50335       return *reinterpret_cast<VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV *>( this );
50336     }
50337 
50338 #if 14 <= VULKAN_HPP_CPP_VERSION
50339     auto
50340 #else
50341     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
50342                void * const &,
50343                VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &>
50344 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV50345       reflect() const VULKAN_HPP_NOEXCEPT
50346     {
50347       return std::tie( sType, pNext, maxFragmentShadingRateInvocationCount );
50348     }
50349 
50350 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
50351     auto operator<=>( PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & ) const = default;
50352 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV50353     bool operator==( PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
50354     {
50355       return this->reflect() == rhs.reflect();
50356     }
50357 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV50358     bool operator!=( PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
50359     {
50360       return this->reflect() != rhs.reflect();
50361     }
50362 #endif
50363 
50364   public:
50365     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentShadingRateEnumsPropertiesNV;
50366     void *                              pNext = {};
50367     VULKAN_HPP_NAMESPACE::SampleCountFlagBits maxFragmentShadingRateInvocationCount =
50368       VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
50369   };
50370   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV ) ==
50371                               sizeof( VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV ),
50372                             "struct and wrapper have different size!" );
50373   VULKAN_HPP_STATIC_ASSERT(
50374     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV>::value,
50375     "struct wrapper is not a standard layout!" );
50376   VULKAN_HPP_STATIC_ASSERT(
50377     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV>::value,
50378     "PhysicalDeviceFragmentShadingRateEnumsPropertiesNV is not nothrow_move_constructible!" );
50379 
50380   template <>
50381   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentShadingRateEnumsPropertiesNV>
50382   {
50383     using Type = PhysicalDeviceFragmentShadingRateEnumsPropertiesNV;
50384   };
50385 
50386   struct PhysicalDeviceFragmentShadingRateFeaturesKHR
50387   {
50388     using NativeType = VkPhysicalDeviceFragmentShadingRateFeaturesKHR;
50389 
50390     static const bool                                  allowDuplicate = false;
50391     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
50392       StructureType::ePhysicalDeviceFragmentShadingRateFeaturesKHR;
50393 
50394 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentShadingRateFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR50395     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateFeaturesKHR(
50396       VULKAN_HPP_NAMESPACE::Bool32 pipelineFragmentShadingRate_   = {},
50397       VULKAN_HPP_NAMESPACE::Bool32 primitiveFragmentShadingRate_  = {},
50398       VULKAN_HPP_NAMESPACE::Bool32 attachmentFragmentShadingRate_ = {} ) VULKAN_HPP_NOEXCEPT
50399       : pipelineFragmentShadingRate( pipelineFragmentShadingRate_ )
50400       , primitiveFragmentShadingRate( primitiveFragmentShadingRate_ )
50401       , attachmentFragmentShadingRate( attachmentFragmentShadingRate_ )
50402     {}
50403 
50404     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateFeaturesKHR(
50405       PhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50406 
PhysicalDeviceFragmentShadingRateFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR50407     PhysicalDeviceFragmentShadingRateFeaturesKHR( VkPhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs )
50408       VULKAN_HPP_NOEXCEPT
50409       : PhysicalDeviceFragmentShadingRateFeaturesKHR(
50410           *reinterpret_cast<PhysicalDeviceFragmentShadingRateFeaturesKHR const *>( &rhs ) )
50411     {}
50412 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
50413 
50414     PhysicalDeviceFragmentShadingRateFeaturesKHR &
50415       operator=( PhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50416 
50417     PhysicalDeviceFragmentShadingRateFeaturesKHR &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR50418       operator=( VkPhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
50419     {
50420       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR const *>( &rhs );
50421       return *this;
50422     }
50423 
50424 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR50425     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
50426     {
50427       pNext = pNext_;
50428       return *this;
50429     }
50430 
50431     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateFeaturesKHR &
setPipelineFragmentShadingRateVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR50432       setPipelineFragmentShadingRate( VULKAN_HPP_NAMESPACE::Bool32 pipelineFragmentShadingRate_ ) VULKAN_HPP_NOEXCEPT
50433     {
50434       pipelineFragmentShadingRate = pipelineFragmentShadingRate_;
50435       return *this;
50436     }
50437 
50438     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateFeaturesKHR &
setPrimitiveFragmentShadingRateVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR50439       setPrimitiveFragmentShadingRate( VULKAN_HPP_NAMESPACE::Bool32 primitiveFragmentShadingRate_ ) VULKAN_HPP_NOEXCEPT
50440     {
50441       primitiveFragmentShadingRate = primitiveFragmentShadingRate_;
50442       return *this;
50443     }
50444 
setAttachmentFragmentShadingRateVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR50445     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateFeaturesKHR & setAttachmentFragmentShadingRate(
50446       VULKAN_HPP_NAMESPACE::Bool32 attachmentFragmentShadingRate_ ) VULKAN_HPP_NOEXCEPT
50447     {
50448       attachmentFragmentShadingRate = attachmentFragmentShadingRate_;
50449       return *this;
50450     }
50451 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
50452 
operator VkPhysicalDeviceFragmentShadingRateFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR50453     explicit operator VkPhysicalDeviceFragmentShadingRateFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
50454     {
50455       return *reinterpret_cast<const VkPhysicalDeviceFragmentShadingRateFeaturesKHR *>( this );
50456     }
50457 
operator VkPhysicalDeviceFragmentShadingRateFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR50458     explicit operator VkPhysicalDeviceFragmentShadingRateFeaturesKHR &() VULKAN_HPP_NOEXCEPT
50459     {
50460       return *reinterpret_cast<VkPhysicalDeviceFragmentShadingRateFeaturesKHR *>( this );
50461     }
50462 
50463 #if 14 <= VULKAN_HPP_CPP_VERSION
50464     auto
50465 #else
50466     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
50467                void * const &,
50468                VULKAN_HPP_NAMESPACE::Bool32 const &,
50469                VULKAN_HPP_NAMESPACE::Bool32 const &,
50470                VULKAN_HPP_NAMESPACE::Bool32 const &>
50471 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR50472       reflect() const VULKAN_HPP_NOEXCEPT
50473     {
50474       return std::tie(
50475         sType, pNext, pipelineFragmentShadingRate, primitiveFragmentShadingRate, attachmentFragmentShadingRate );
50476     }
50477 
50478 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
50479     auto operator<=>( PhysicalDeviceFragmentShadingRateFeaturesKHR const & ) const = default;
50480 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR50481     bool operator==( PhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
50482     {
50483       return this->reflect() == rhs.reflect();
50484     }
50485 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR50486     bool operator!=( PhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
50487     {
50488       return this->reflect() != rhs.reflect();
50489     }
50490 #endif
50491 
50492   public:
50493     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentShadingRateFeaturesKHR;
50494     void *                              pNext = {};
50495     VULKAN_HPP_NAMESPACE::Bool32        pipelineFragmentShadingRate   = {};
50496     VULKAN_HPP_NAMESPACE::Bool32        primitiveFragmentShadingRate  = {};
50497     VULKAN_HPP_NAMESPACE::Bool32        attachmentFragmentShadingRate = {};
50498   };
50499   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR ) ==
50500                               sizeof( VkPhysicalDeviceFragmentShadingRateFeaturesKHR ),
50501                             "struct and wrapper have different size!" );
50502   VULKAN_HPP_STATIC_ASSERT(
50503     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR>::value,
50504     "struct wrapper is not a standard layout!" );
50505   VULKAN_HPP_STATIC_ASSERT(
50506     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR>::value,
50507     "PhysicalDeviceFragmentShadingRateFeaturesKHR is not nothrow_move_constructible!" );
50508 
50509   template <>
50510   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentShadingRateFeaturesKHR>
50511   {
50512     using Type = PhysicalDeviceFragmentShadingRateFeaturesKHR;
50513   };
50514 
50515   struct PhysicalDeviceFragmentShadingRateKHR
50516   {
50517     using NativeType = VkPhysicalDeviceFragmentShadingRateKHR;
50518 
50519     static const bool                                  allowDuplicate = false;
50520     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
50521       StructureType::ePhysicalDeviceFragmentShadingRateKHR;
50522 
50523 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
50524     VULKAN_HPP_CONSTEXPR
PhysicalDeviceFragmentShadingRateKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR50525       PhysicalDeviceFragmentShadingRateKHR( VULKAN_HPP_NAMESPACE::SampleCountFlags sampleCounts_ = {},
50526                                             VULKAN_HPP_NAMESPACE::Extent2D fragmentSize_ = {} ) VULKAN_HPP_NOEXCEPT
50527       : sampleCounts( sampleCounts_ )
50528       , fragmentSize( fragmentSize_ )
50529     {}
50530 
50531     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateKHR( PhysicalDeviceFragmentShadingRateKHR const & rhs )
50532       VULKAN_HPP_NOEXCEPT = default;
50533 
PhysicalDeviceFragmentShadingRateKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR50534     PhysicalDeviceFragmentShadingRateKHR( VkPhysicalDeviceFragmentShadingRateKHR const & rhs ) VULKAN_HPP_NOEXCEPT
50535       : PhysicalDeviceFragmentShadingRateKHR( *reinterpret_cast<PhysicalDeviceFragmentShadingRateKHR const *>( &rhs ) )
50536     {}
50537 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
50538 
50539     PhysicalDeviceFragmentShadingRateKHR &
50540       operator=( PhysicalDeviceFragmentShadingRateKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50541 
50542     PhysicalDeviceFragmentShadingRateKHR &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR50543       operator=( VkPhysicalDeviceFragmentShadingRateKHR const & rhs ) VULKAN_HPP_NOEXCEPT
50544     {
50545       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR const *>( &rhs );
50546       return *this;
50547     }
50548 
operator VkPhysicalDeviceFragmentShadingRateKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR50549     explicit operator VkPhysicalDeviceFragmentShadingRateKHR const &() const VULKAN_HPP_NOEXCEPT
50550     {
50551       return *reinterpret_cast<const VkPhysicalDeviceFragmentShadingRateKHR *>( this );
50552     }
50553 
operator VkPhysicalDeviceFragmentShadingRateKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR50554     explicit operator VkPhysicalDeviceFragmentShadingRateKHR &() VULKAN_HPP_NOEXCEPT
50555     {
50556       return *reinterpret_cast<VkPhysicalDeviceFragmentShadingRateKHR *>( this );
50557     }
50558 
50559 #if 14 <= VULKAN_HPP_CPP_VERSION
50560     auto
50561 #else
50562     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
50563                void * const &,
50564                VULKAN_HPP_NAMESPACE::SampleCountFlags const &,
50565                VULKAN_HPP_NAMESPACE::Extent2D const &>
50566 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR50567       reflect() const VULKAN_HPP_NOEXCEPT
50568     {
50569       return std::tie( sType, pNext, sampleCounts, fragmentSize );
50570     }
50571 
50572 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
50573     auto operator<=>( PhysicalDeviceFragmentShadingRateKHR const & ) const = default;
50574 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR50575     bool operator==( PhysicalDeviceFragmentShadingRateKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
50576     {
50577       return this->reflect() == rhs.reflect();
50578     }
50579 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR50580     bool operator!=( PhysicalDeviceFragmentShadingRateKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
50581     {
50582       return this->reflect() != rhs.reflect();
50583     }
50584 #endif
50585 
50586   public:
50587     VULKAN_HPP_NAMESPACE::StructureType    sType        = StructureType::ePhysicalDeviceFragmentShadingRateKHR;
50588     void *                                 pNext        = {};
50589     VULKAN_HPP_NAMESPACE::SampleCountFlags sampleCounts = {};
50590     VULKAN_HPP_NAMESPACE::Extent2D         fragmentSize = {};
50591   };
50592   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR ) ==
50593                               sizeof( VkPhysicalDeviceFragmentShadingRateKHR ),
50594                             "struct and wrapper have different size!" );
50595   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR>::value,
50596                             "struct wrapper is not a standard layout!" );
50597   VULKAN_HPP_STATIC_ASSERT(
50598     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR>::value,
50599     "PhysicalDeviceFragmentShadingRateKHR is not nothrow_move_constructible!" );
50600 
50601   template <>
50602   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentShadingRateKHR>
50603   {
50604     using Type = PhysicalDeviceFragmentShadingRateKHR;
50605   };
50606 
50607   struct PhysicalDeviceFragmentShadingRatePropertiesKHR
50608   {
50609     using NativeType = VkPhysicalDeviceFragmentShadingRatePropertiesKHR;
50610 
50611     static const bool                                  allowDuplicate = false;
50612     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
50613       StructureType::ePhysicalDeviceFragmentShadingRatePropertiesKHR;
50614 
50615 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentShadingRatePropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR50616     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRatePropertiesKHR(
50617       VULKAN_HPP_NAMESPACE::Extent2D            minFragmentShadingRateAttachmentTexelSize_            = {},
50618       VULKAN_HPP_NAMESPACE::Extent2D            maxFragmentShadingRateAttachmentTexelSize_            = {},
50619       uint32_t                                  maxFragmentShadingRateAttachmentTexelSizeAspectRatio_ = {},
50620       VULKAN_HPP_NAMESPACE::Bool32              primitiveFragmentShadingRateWithMultipleViewports_    = {},
50621       VULKAN_HPP_NAMESPACE::Bool32              layeredShadingRateAttachments_                        = {},
50622       VULKAN_HPP_NAMESPACE::Bool32              fragmentShadingRateNonTrivialCombinerOps_             = {},
50623       VULKAN_HPP_NAMESPACE::Extent2D            maxFragmentSize_                                      = {},
50624       uint32_t                                  maxFragmentSizeAspectRatio_                           = {},
50625       uint32_t                                  maxFragmentShadingRateCoverageSamples_                = {},
50626       VULKAN_HPP_NAMESPACE::SampleCountFlagBits maxFragmentShadingRateRasterizationSamples_ =
50627         VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1,
50628       VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithShaderDepthStencilWrites_  = {},
50629       VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithSampleMask_                = {},
50630       VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithShaderSampleMask_          = {},
50631       VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithConservativeRasterization_ = {},
50632       VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithFragmentShaderInterlock_   = {},
50633       VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithCustomSampleLocations_     = {},
50634       VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateStrictMultiplyCombiner_        = {} ) VULKAN_HPP_NOEXCEPT
50635       : minFragmentShadingRateAttachmentTexelSize( minFragmentShadingRateAttachmentTexelSize_ )
50636       , maxFragmentShadingRateAttachmentTexelSize( maxFragmentShadingRateAttachmentTexelSize_ )
50637       , maxFragmentShadingRateAttachmentTexelSizeAspectRatio( maxFragmentShadingRateAttachmentTexelSizeAspectRatio_ )
50638       , primitiveFragmentShadingRateWithMultipleViewports( primitiveFragmentShadingRateWithMultipleViewports_ )
50639       , layeredShadingRateAttachments( layeredShadingRateAttachments_ )
50640       , fragmentShadingRateNonTrivialCombinerOps( fragmentShadingRateNonTrivialCombinerOps_ )
50641       , maxFragmentSize( maxFragmentSize_ )
50642       , maxFragmentSizeAspectRatio( maxFragmentSizeAspectRatio_ )
50643       , maxFragmentShadingRateCoverageSamples( maxFragmentShadingRateCoverageSamples_ )
50644       , maxFragmentShadingRateRasterizationSamples( maxFragmentShadingRateRasterizationSamples_ )
50645       , fragmentShadingRateWithShaderDepthStencilWrites( fragmentShadingRateWithShaderDepthStencilWrites_ )
50646       , fragmentShadingRateWithSampleMask( fragmentShadingRateWithSampleMask_ )
50647       , fragmentShadingRateWithShaderSampleMask( fragmentShadingRateWithShaderSampleMask_ )
50648       , fragmentShadingRateWithConservativeRasterization( fragmentShadingRateWithConservativeRasterization_ )
50649       , fragmentShadingRateWithFragmentShaderInterlock( fragmentShadingRateWithFragmentShaderInterlock_ )
50650       , fragmentShadingRateWithCustomSampleLocations( fragmentShadingRateWithCustomSampleLocations_ )
50651       , fragmentShadingRateStrictMultiplyCombiner( fragmentShadingRateStrictMultiplyCombiner_ )
50652     {}
50653 
50654     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRatePropertiesKHR(
50655       PhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50656 
PhysicalDeviceFragmentShadingRatePropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR50657     PhysicalDeviceFragmentShadingRatePropertiesKHR( VkPhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs )
50658       VULKAN_HPP_NOEXCEPT
50659       : PhysicalDeviceFragmentShadingRatePropertiesKHR(
50660           *reinterpret_cast<PhysicalDeviceFragmentShadingRatePropertiesKHR const *>( &rhs ) )
50661     {}
50662 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
50663 
50664     PhysicalDeviceFragmentShadingRatePropertiesKHR &
50665       operator=( PhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50666 
50667     PhysicalDeviceFragmentShadingRatePropertiesKHR &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR50668       operator=( VkPhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
50669     {
50670       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR const *>( &rhs );
50671       return *this;
50672     }
50673 
operator VkPhysicalDeviceFragmentShadingRatePropertiesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR50674     explicit operator VkPhysicalDeviceFragmentShadingRatePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
50675     {
50676       return *reinterpret_cast<const VkPhysicalDeviceFragmentShadingRatePropertiesKHR *>( this );
50677     }
50678 
operator VkPhysicalDeviceFragmentShadingRatePropertiesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR50679     explicit operator VkPhysicalDeviceFragmentShadingRatePropertiesKHR &() VULKAN_HPP_NOEXCEPT
50680     {
50681       return *reinterpret_cast<VkPhysicalDeviceFragmentShadingRatePropertiesKHR *>( this );
50682     }
50683 
50684 #if 14 <= VULKAN_HPP_CPP_VERSION
50685     auto
50686 #else
50687     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
50688                void * const &,
50689                VULKAN_HPP_NAMESPACE::Extent2D const &,
50690                VULKAN_HPP_NAMESPACE::Extent2D const &,
50691                uint32_t const &,
50692                VULKAN_HPP_NAMESPACE::Bool32 const &,
50693                VULKAN_HPP_NAMESPACE::Bool32 const &,
50694                VULKAN_HPP_NAMESPACE::Bool32 const &,
50695                VULKAN_HPP_NAMESPACE::Extent2D const &,
50696                uint32_t const &,
50697                uint32_t const &,
50698                VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &,
50699                VULKAN_HPP_NAMESPACE::Bool32 const &,
50700                VULKAN_HPP_NAMESPACE::Bool32 const &,
50701                VULKAN_HPP_NAMESPACE::Bool32 const &,
50702                VULKAN_HPP_NAMESPACE::Bool32 const &,
50703                VULKAN_HPP_NAMESPACE::Bool32 const &,
50704                VULKAN_HPP_NAMESPACE::Bool32 const &,
50705                VULKAN_HPP_NAMESPACE::Bool32 const &>
50706 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR50707       reflect() const VULKAN_HPP_NOEXCEPT
50708     {
50709       return std::tie( sType,
50710                        pNext,
50711                        minFragmentShadingRateAttachmentTexelSize,
50712                        maxFragmentShadingRateAttachmentTexelSize,
50713                        maxFragmentShadingRateAttachmentTexelSizeAspectRatio,
50714                        primitiveFragmentShadingRateWithMultipleViewports,
50715                        layeredShadingRateAttachments,
50716                        fragmentShadingRateNonTrivialCombinerOps,
50717                        maxFragmentSize,
50718                        maxFragmentSizeAspectRatio,
50719                        maxFragmentShadingRateCoverageSamples,
50720                        maxFragmentShadingRateRasterizationSamples,
50721                        fragmentShadingRateWithShaderDepthStencilWrites,
50722                        fragmentShadingRateWithSampleMask,
50723                        fragmentShadingRateWithShaderSampleMask,
50724                        fragmentShadingRateWithConservativeRasterization,
50725                        fragmentShadingRateWithFragmentShaderInterlock,
50726                        fragmentShadingRateWithCustomSampleLocations,
50727                        fragmentShadingRateStrictMultiplyCombiner );
50728     }
50729 
50730 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
50731     auto operator<=>( PhysicalDeviceFragmentShadingRatePropertiesKHR const & ) const = default;
50732 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR50733     bool operator==( PhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
50734     {
50735       return this->reflect() == rhs.reflect();
50736     }
50737 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR50738     bool operator!=( PhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
50739     {
50740       return this->reflect() != rhs.reflect();
50741     }
50742 #endif
50743 
50744   public:
50745     VULKAN_HPP_NAMESPACE::StructureType       sType = StructureType::ePhysicalDeviceFragmentShadingRatePropertiesKHR;
50746     void *                                    pNext = {};
50747     VULKAN_HPP_NAMESPACE::Extent2D            minFragmentShadingRateAttachmentTexelSize            = {};
50748     VULKAN_HPP_NAMESPACE::Extent2D            maxFragmentShadingRateAttachmentTexelSize            = {};
50749     uint32_t                                  maxFragmentShadingRateAttachmentTexelSizeAspectRatio = {};
50750     VULKAN_HPP_NAMESPACE::Bool32              primitiveFragmentShadingRateWithMultipleViewports    = {};
50751     VULKAN_HPP_NAMESPACE::Bool32              layeredShadingRateAttachments                        = {};
50752     VULKAN_HPP_NAMESPACE::Bool32              fragmentShadingRateNonTrivialCombinerOps             = {};
50753     VULKAN_HPP_NAMESPACE::Extent2D            maxFragmentSize                                      = {};
50754     uint32_t                                  maxFragmentSizeAspectRatio                           = {};
50755     uint32_t                                  maxFragmentShadingRateCoverageSamples                = {};
50756     VULKAN_HPP_NAMESPACE::SampleCountFlagBits maxFragmentShadingRateRasterizationSamples =
50757       VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
50758     VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithShaderDepthStencilWrites  = {};
50759     VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithSampleMask                = {};
50760     VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithShaderSampleMask          = {};
50761     VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithConservativeRasterization = {};
50762     VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithFragmentShaderInterlock   = {};
50763     VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithCustomSampleLocations     = {};
50764     VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateStrictMultiplyCombiner        = {};
50765   };
50766   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR ) ==
50767                               sizeof( VkPhysicalDeviceFragmentShadingRatePropertiesKHR ),
50768                             "struct and wrapper have different size!" );
50769   VULKAN_HPP_STATIC_ASSERT(
50770     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR>::value,
50771     "struct wrapper is not a standard layout!" );
50772   VULKAN_HPP_STATIC_ASSERT(
50773     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR>::value,
50774     "PhysicalDeviceFragmentShadingRatePropertiesKHR is not nothrow_move_constructible!" );
50775 
50776   template <>
50777   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentShadingRatePropertiesKHR>
50778   {
50779     using Type = PhysicalDeviceFragmentShadingRatePropertiesKHR;
50780   };
50781 
50782   struct PhysicalDeviceGlobalPriorityQueryFeaturesEXT
50783   {
50784     using NativeType = VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT;
50785 
50786     static const bool                                  allowDuplicate = false;
50787     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
50788       StructureType::ePhysicalDeviceGlobalPriorityQueryFeaturesEXT;
50789 
50790 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceGlobalPriorityQueryFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeaturesEXT50791     VULKAN_HPP_CONSTEXPR PhysicalDeviceGlobalPriorityQueryFeaturesEXT(
50792       VULKAN_HPP_NAMESPACE::Bool32 globalPriorityQuery_ = {} ) VULKAN_HPP_NOEXCEPT
50793       : globalPriorityQuery( globalPriorityQuery_ )
50794     {}
50795 
50796     VULKAN_HPP_CONSTEXPR PhysicalDeviceGlobalPriorityQueryFeaturesEXT(
50797       PhysicalDeviceGlobalPriorityQueryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50798 
PhysicalDeviceGlobalPriorityQueryFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeaturesEXT50799     PhysicalDeviceGlobalPriorityQueryFeaturesEXT( VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT const & rhs )
50800       VULKAN_HPP_NOEXCEPT
50801       : PhysicalDeviceGlobalPriorityQueryFeaturesEXT(
50802           *reinterpret_cast<PhysicalDeviceGlobalPriorityQueryFeaturesEXT const *>( &rhs ) )
50803     {}
50804 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
50805 
50806     PhysicalDeviceGlobalPriorityQueryFeaturesEXT &
50807       operator=( PhysicalDeviceGlobalPriorityQueryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50808 
50809     PhysicalDeviceGlobalPriorityQueryFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeaturesEXT50810       operator=( VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
50811     {
50812       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeaturesEXT const *>( &rhs );
50813       return *this;
50814     }
50815 
50816 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeaturesEXT50817     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGlobalPriorityQueryFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
50818     {
50819       pNext = pNext_;
50820       return *this;
50821     }
50822 
50823     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGlobalPriorityQueryFeaturesEXT &
setGlobalPriorityQueryVULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeaturesEXT50824       setGlobalPriorityQuery( VULKAN_HPP_NAMESPACE::Bool32 globalPriorityQuery_ ) VULKAN_HPP_NOEXCEPT
50825     {
50826       globalPriorityQuery = globalPriorityQuery_;
50827       return *this;
50828     }
50829 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
50830 
operator VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeaturesEXT50831     explicit operator VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
50832     {
50833       return *reinterpret_cast<const VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT *>( this );
50834     }
50835 
operator VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeaturesEXT50836     explicit operator VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT &() VULKAN_HPP_NOEXCEPT
50837     {
50838       return *reinterpret_cast<VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT *>( this );
50839     }
50840 
50841 #if 14 <= VULKAN_HPP_CPP_VERSION
50842     auto
50843 #else
50844     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
50845 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeaturesEXT50846       reflect() const VULKAN_HPP_NOEXCEPT
50847     {
50848       return std::tie( sType, pNext, globalPriorityQuery );
50849     }
50850 
50851 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
50852     auto operator<=>( PhysicalDeviceGlobalPriorityQueryFeaturesEXT const & ) const = default;
50853 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeaturesEXT50854     bool operator==( PhysicalDeviceGlobalPriorityQueryFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
50855     {
50856       return this->reflect() == rhs.reflect();
50857     }
50858 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeaturesEXT50859     bool operator!=( PhysicalDeviceGlobalPriorityQueryFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
50860     {
50861       return this->reflect() != rhs.reflect();
50862     }
50863 #endif
50864 
50865   public:
50866     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceGlobalPriorityQueryFeaturesEXT;
50867     void *                              pNext = {};
50868     VULKAN_HPP_NAMESPACE::Bool32        globalPriorityQuery = {};
50869   };
50870   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeaturesEXT ) ==
50871                               sizeof( VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT ),
50872                             "struct and wrapper have different size!" );
50873   VULKAN_HPP_STATIC_ASSERT(
50874     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeaturesEXT>::value,
50875     "struct wrapper is not a standard layout!" );
50876   VULKAN_HPP_STATIC_ASSERT(
50877     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeaturesEXT>::value,
50878     "PhysicalDeviceGlobalPriorityQueryFeaturesEXT is not nothrow_move_constructible!" );
50879 
50880   template <>
50881   struct CppType<StructureType, StructureType::ePhysicalDeviceGlobalPriorityQueryFeaturesEXT>
50882   {
50883     using Type = PhysicalDeviceGlobalPriorityQueryFeaturesEXT;
50884   };
50885 
50886   struct PhysicalDeviceGroupProperties
50887   {
50888     using NativeType = VkPhysicalDeviceGroupProperties;
50889 
50890     static const bool                                  allowDuplicate = false;
50891     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceGroupProperties;
50892 
50893 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceGroupPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties50894     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGroupProperties(
50895       uint32_t                                                                           physicalDeviceCount_ = {},
50896       std::array<VULKAN_HPP_NAMESPACE::PhysicalDevice, VK_MAX_DEVICE_GROUP_SIZE> const & physicalDevices_     = {},
50897       VULKAN_HPP_NAMESPACE::Bool32 subsetAllocation_ = {} ) VULKAN_HPP_NOEXCEPT
50898       : physicalDeviceCount( physicalDeviceCount_ )
50899       , physicalDevices( physicalDevices_ )
50900       , subsetAllocation( subsetAllocation_ )
50901     {}
50902 
50903     VULKAN_HPP_CONSTEXPR_14
50904       PhysicalDeviceGroupProperties( PhysicalDeviceGroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50905 
PhysicalDeviceGroupPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties50906     PhysicalDeviceGroupProperties( VkPhysicalDeviceGroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT
50907       : PhysicalDeviceGroupProperties( *reinterpret_cast<PhysicalDeviceGroupProperties const *>( &rhs ) )
50908     {}
50909 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
50910 
50911     PhysicalDeviceGroupProperties &
50912       operator=( PhysicalDeviceGroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50913 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties50914     PhysicalDeviceGroupProperties & operator=( VkPhysicalDeviceGroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT
50915     {
50916       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties const *>( &rhs );
50917       return *this;
50918     }
50919 
operator VkPhysicalDeviceGroupProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties50920     explicit operator VkPhysicalDeviceGroupProperties const &() const VULKAN_HPP_NOEXCEPT
50921     {
50922       return *reinterpret_cast<const VkPhysicalDeviceGroupProperties *>( this );
50923     }
50924 
operator VkPhysicalDeviceGroupProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties50925     explicit operator VkPhysicalDeviceGroupProperties &() VULKAN_HPP_NOEXCEPT
50926     {
50927       return *reinterpret_cast<VkPhysicalDeviceGroupProperties *>( this );
50928     }
50929 
50930 #if 14 <= VULKAN_HPP_CPP_VERSION
50931     auto
50932 #else
50933     std::tuple<
50934       VULKAN_HPP_NAMESPACE::StructureType const &,
50935       void * const &,
50936       uint32_t const &,
50937       VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::PhysicalDevice, VK_MAX_DEVICE_GROUP_SIZE> const &,
50938       VULKAN_HPP_NAMESPACE::Bool32 const &>
50939 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties50940       reflect() const VULKAN_HPP_NOEXCEPT
50941     {
50942       return std::tie( sType, pNext, physicalDeviceCount, physicalDevices, subsetAllocation );
50943     }
50944 
50945 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
50946     auto operator<=>( PhysicalDeviceGroupProperties const & ) const = default;
50947 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties50948     bool operator==( PhysicalDeviceGroupProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
50949     {
50950       return this->reflect() == rhs.reflect();
50951     }
50952 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties50953     bool operator!=( PhysicalDeviceGroupProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
50954     {
50955       return this->reflect() != rhs.reflect();
50956     }
50957 #endif
50958 
50959   public:
50960     VULKAN_HPP_NAMESPACE::StructureType sType               = StructureType::ePhysicalDeviceGroupProperties;
50961     void *                              pNext               = {};
50962     uint32_t                            physicalDeviceCount = {};
50963     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::PhysicalDevice, VK_MAX_DEVICE_GROUP_SIZE>
50964                                  physicalDevices  = {};
50965     VULKAN_HPP_NAMESPACE::Bool32 subsetAllocation = {};
50966   };
50967   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties ) ==
50968                               sizeof( VkPhysicalDeviceGroupProperties ),
50969                             "struct and wrapper have different size!" );
50970   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties>::value,
50971                             "struct wrapper is not a standard layout!" );
50972   VULKAN_HPP_STATIC_ASSERT(
50973     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties>::value,
50974     "PhysicalDeviceGroupProperties is not nothrow_move_constructible!" );
50975 
50976   template <>
50977   struct CppType<StructureType, StructureType::ePhysicalDeviceGroupProperties>
50978   {
50979     using Type = PhysicalDeviceGroupProperties;
50980   };
50981   using PhysicalDeviceGroupPropertiesKHR = PhysicalDeviceGroupProperties;
50982 
50983   struct PhysicalDeviceHostQueryResetFeatures
50984   {
50985     using NativeType = VkPhysicalDeviceHostQueryResetFeatures;
50986 
50987     static const bool                                  allowDuplicate = false;
50988     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
50989       StructureType::ePhysicalDeviceHostQueryResetFeatures;
50990 
50991 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
50992     VULKAN_HPP_CONSTEXPR
PhysicalDeviceHostQueryResetFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures50993       PhysicalDeviceHostQueryResetFeatures( VULKAN_HPP_NAMESPACE::Bool32 hostQueryReset_ = {} ) VULKAN_HPP_NOEXCEPT
50994       : hostQueryReset( hostQueryReset_ )
50995     {}
50996 
50997     VULKAN_HPP_CONSTEXPR PhysicalDeviceHostQueryResetFeatures( PhysicalDeviceHostQueryResetFeatures const & rhs )
50998       VULKAN_HPP_NOEXCEPT = default;
50999 
PhysicalDeviceHostQueryResetFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures51000     PhysicalDeviceHostQueryResetFeatures( VkPhysicalDeviceHostQueryResetFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
51001       : PhysicalDeviceHostQueryResetFeatures( *reinterpret_cast<PhysicalDeviceHostQueryResetFeatures const *>( &rhs ) )
51002     {}
51003 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
51004 
51005     PhysicalDeviceHostQueryResetFeatures &
51006       operator=( PhysicalDeviceHostQueryResetFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51007 
51008     PhysicalDeviceHostQueryResetFeatures &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures51009       operator=( VkPhysicalDeviceHostQueryResetFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
51010     {
51011       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures const *>( &rhs );
51012       return *this;
51013     }
51014 
51015 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures51016     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostQueryResetFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
51017     {
51018       pNext = pNext_;
51019       return *this;
51020     }
51021 
51022     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostQueryResetFeatures &
setHostQueryResetVULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures51023                             setHostQueryReset( VULKAN_HPP_NAMESPACE::Bool32 hostQueryReset_ ) VULKAN_HPP_NOEXCEPT
51024     {
51025       hostQueryReset = hostQueryReset_;
51026       return *this;
51027     }
51028 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
51029 
operator VkPhysicalDeviceHostQueryResetFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures51030     explicit operator VkPhysicalDeviceHostQueryResetFeatures const &() const VULKAN_HPP_NOEXCEPT
51031     {
51032       return *reinterpret_cast<const VkPhysicalDeviceHostQueryResetFeatures *>( this );
51033     }
51034 
operator VkPhysicalDeviceHostQueryResetFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures51035     explicit operator VkPhysicalDeviceHostQueryResetFeatures &() VULKAN_HPP_NOEXCEPT
51036     {
51037       return *reinterpret_cast<VkPhysicalDeviceHostQueryResetFeatures *>( this );
51038     }
51039 
51040 #if 14 <= VULKAN_HPP_CPP_VERSION
51041     auto
51042 #else
51043     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
51044 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures51045       reflect() const VULKAN_HPP_NOEXCEPT
51046     {
51047       return std::tie( sType, pNext, hostQueryReset );
51048     }
51049 
51050 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
51051     auto operator<=>( PhysicalDeviceHostQueryResetFeatures const & ) const = default;
51052 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures51053     bool operator==( PhysicalDeviceHostQueryResetFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
51054     {
51055       return this->reflect() == rhs.reflect();
51056     }
51057 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures51058     bool operator!=( PhysicalDeviceHostQueryResetFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
51059     {
51060       return this->reflect() != rhs.reflect();
51061     }
51062 #endif
51063 
51064   public:
51065     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::ePhysicalDeviceHostQueryResetFeatures;
51066     void *                              pNext          = {};
51067     VULKAN_HPP_NAMESPACE::Bool32        hostQueryReset = {};
51068   };
51069   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures ) ==
51070                               sizeof( VkPhysicalDeviceHostQueryResetFeatures ),
51071                             "struct and wrapper have different size!" );
51072   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures>::value,
51073                             "struct wrapper is not a standard layout!" );
51074   VULKAN_HPP_STATIC_ASSERT(
51075     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures>::value,
51076     "PhysicalDeviceHostQueryResetFeatures is not nothrow_move_constructible!" );
51077 
51078   template <>
51079   struct CppType<StructureType, StructureType::ePhysicalDeviceHostQueryResetFeatures>
51080   {
51081     using Type = PhysicalDeviceHostQueryResetFeatures;
51082   };
51083   using PhysicalDeviceHostQueryResetFeaturesEXT = PhysicalDeviceHostQueryResetFeatures;
51084 
51085   struct PhysicalDeviceIDProperties
51086   {
51087     using NativeType = VkPhysicalDeviceIDProperties;
51088 
51089     static const bool                                  allowDuplicate = false;
51090     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceIdProperties;
51091 
51092 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
51093     VULKAN_HPP_CONSTEXPR_14
PhysicalDeviceIDPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties51094       PhysicalDeviceIDProperties( std::array<uint8_t, VK_UUID_SIZE> const & deviceUUID_      = {},
51095                                   std::array<uint8_t, VK_UUID_SIZE> const & driverUUID_      = {},
51096                                   std::array<uint8_t, VK_LUID_SIZE> const & deviceLUID_      = {},
51097                                   uint32_t                                  deviceNodeMask_  = {},
51098                                   VULKAN_HPP_NAMESPACE::Bool32              deviceLUIDValid_ = {} ) VULKAN_HPP_NOEXCEPT
51099       : deviceUUID( deviceUUID_ )
51100       , driverUUID( driverUUID_ )
51101       , deviceLUID( deviceLUID_ )
51102       , deviceNodeMask( deviceNodeMask_ )
51103       , deviceLUIDValid( deviceLUIDValid_ )
51104     {}
51105 
51106     VULKAN_HPP_CONSTEXPR_14
51107       PhysicalDeviceIDProperties( PhysicalDeviceIDProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51108 
PhysicalDeviceIDPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties51109     PhysicalDeviceIDProperties( VkPhysicalDeviceIDProperties const & rhs ) VULKAN_HPP_NOEXCEPT
51110       : PhysicalDeviceIDProperties( *reinterpret_cast<PhysicalDeviceIDProperties const *>( &rhs ) )
51111     {}
51112 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
51113 
51114     PhysicalDeviceIDProperties & operator=( PhysicalDeviceIDProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51115 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties51116     PhysicalDeviceIDProperties & operator=( VkPhysicalDeviceIDProperties const & rhs ) VULKAN_HPP_NOEXCEPT
51117     {
51118       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties const *>( &rhs );
51119       return *this;
51120     }
51121 
operator VkPhysicalDeviceIDProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties51122     explicit operator VkPhysicalDeviceIDProperties const &() const VULKAN_HPP_NOEXCEPT
51123     {
51124       return *reinterpret_cast<const VkPhysicalDeviceIDProperties *>( this );
51125     }
51126 
operator VkPhysicalDeviceIDProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties51127     explicit operator VkPhysicalDeviceIDProperties &() VULKAN_HPP_NOEXCEPT
51128     {
51129       return *reinterpret_cast<VkPhysicalDeviceIDProperties *>( this );
51130     }
51131 
51132 #if 14 <= VULKAN_HPP_CPP_VERSION
51133     auto
51134 #else
51135     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
51136                void * const &,
51137                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &,
51138                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &,
51139                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_LUID_SIZE> const &,
51140                uint32_t const &,
51141                VULKAN_HPP_NAMESPACE::Bool32 const &>
51142 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties51143       reflect() const VULKAN_HPP_NOEXCEPT
51144     {
51145       return std::tie( sType, pNext, deviceUUID, driverUUID, deviceLUID, deviceNodeMask, deviceLUIDValid );
51146     }
51147 
51148 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
51149     auto operator<=>( PhysicalDeviceIDProperties const & ) const = default;
51150 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties51151     bool operator==( PhysicalDeviceIDProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
51152     {
51153       return this->reflect() == rhs.reflect();
51154     }
51155 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties51156     bool operator!=( PhysicalDeviceIDProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
51157     {
51158       return this->reflect() != rhs.reflect();
51159     }
51160 #endif
51161 
51162   public:
51163     VULKAN_HPP_NAMESPACE::StructureType                         sType      = StructureType::ePhysicalDeviceIdProperties;
51164     void *                                                      pNext      = {};
51165     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> deviceUUID = {};
51166     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> driverUUID = {};
51167     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_LUID_SIZE> deviceLUID = {};
51168     uint32_t                                                    deviceNodeMask  = {};
51169     VULKAN_HPP_NAMESPACE::Bool32                                deviceLUIDValid = {};
51170   };
51171   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties ) ==
51172                               sizeof( VkPhysicalDeviceIDProperties ),
51173                             "struct and wrapper have different size!" );
51174   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties>::value,
51175                             "struct wrapper is not a standard layout!" );
51176   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties>::value,
51177                             "PhysicalDeviceIDProperties is not nothrow_move_constructible!" );
51178 
51179   template <>
51180   struct CppType<StructureType, StructureType::ePhysicalDeviceIdProperties>
51181   {
51182     using Type = PhysicalDeviceIDProperties;
51183   };
51184   using PhysicalDeviceIDPropertiesKHR = PhysicalDeviceIDProperties;
51185 
51186   struct PhysicalDeviceImageDrmFormatModifierInfoEXT
51187   {
51188     using NativeType = VkPhysicalDeviceImageDrmFormatModifierInfoEXT;
51189 
51190     static const bool                                  allowDuplicate = false;
51191     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
51192       StructureType::ePhysicalDeviceImageDrmFormatModifierInfoEXT;
51193 
51194 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceImageDrmFormatModifierInfoEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT51195     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageDrmFormatModifierInfoEXT(
51196       uint64_t                          drmFormatModifier_     = {},
51197       VULKAN_HPP_NAMESPACE::SharingMode sharingMode_           = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive,
51198       uint32_t                          queueFamilyIndexCount_ = {},
51199       const uint32_t *                  pQueueFamilyIndices_   = {} ) VULKAN_HPP_NOEXCEPT
51200       : drmFormatModifier( drmFormatModifier_ )
51201       , sharingMode( sharingMode_ )
51202       , queueFamilyIndexCount( queueFamilyIndexCount_ )
51203       , pQueueFamilyIndices( pQueueFamilyIndices_ )
51204     {}
51205 
51206     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageDrmFormatModifierInfoEXT(
51207       PhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51208 
PhysicalDeviceImageDrmFormatModifierInfoEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT51209     PhysicalDeviceImageDrmFormatModifierInfoEXT( VkPhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs )
51210       VULKAN_HPP_NOEXCEPT
51211       : PhysicalDeviceImageDrmFormatModifierInfoEXT(
51212           *reinterpret_cast<PhysicalDeviceImageDrmFormatModifierInfoEXT const *>( &rhs ) )
51213     {}
51214 
51215 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PhysicalDeviceImageDrmFormatModifierInfoEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT51216     PhysicalDeviceImageDrmFormatModifierInfoEXT(
51217       uint64_t                                                              drmFormatModifier_,
51218       VULKAN_HPP_NAMESPACE::SharingMode                                     sharingMode_,
51219       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & queueFamilyIndices_ )
51220       : drmFormatModifier( drmFormatModifier_ )
51221       , sharingMode( sharingMode_ )
51222       , queueFamilyIndexCount( static_cast<uint32_t>( queueFamilyIndices_.size() ) )
51223       , pQueueFamilyIndices( queueFamilyIndices_.data() )
51224     {}
51225 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
51226 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
51227 
51228     PhysicalDeviceImageDrmFormatModifierInfoEXT &
51229       operator=( PhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51230 
51231     PhysicalDeviceImageDrmFormatModifierInfoEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT51232       operator=( VkPhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
51233     {
51234       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT const *>( &rhs );
51235       return *this;
51236     }
51237 
51238 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
51239     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageDrmFormatModifierInfoEXT &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT51240                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
51241     {
51242       pNext = pNext_;
51243       return *this;
51244     }
51245 
51246     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageDrmFormatModifierInfoEXT &
setDrmFormatModifierVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT51247                             setDrmFormatModifier( uint64_t drmFormatModifier_ ) VULKAN_HPP_NOEXCEPT
51248     {
51249       drmFormatModifier = drmFormatModifier_;
51250       return *this;
51251     }
51252 
51253     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageDrmFormatModifierInfoEXT &
setSharingModeVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT51254                             setSharingMode( VULKAN_HPP_NAMESPACE::SharingMode sharingMode_ ) VULKAN_HPP_NOEXCEPT
51255     {
51256       sharingMode = sharingMode_;
51257       return *this;
51258     }
51259 
51260     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageDrmFormatModifierInfoEXT &
setQueueFamilyIndexCountVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT51261                             setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) VULKAN_HPP_NOEXCEPT
51262     {
51263       queueFamilyIndexCount = queueFamilyIndexCount_;
51264       return *this;
51265     }
51266 
51267     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageDrmFormatModifierInfoEXT &
setPQueueFamilyIndicesVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT51268                             setPQueueFamilyIndices( const uint32_t * pQueueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT
51269     {
51270       pQueueFamilyIndices = pQueueFamilyIndices_;
51271       return *this;
51272     }
51273 
51274 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setQueueFamilyIndicesVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT51275     PhysicalDeviceImageDrmFormatModifierInfoEXT & setQueueFamilyIndices(
51276       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & queueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT
51277     {
51278       queueFamilyIndexCount = static_cast<uint32_t>( queueFamilyIndices_.size() );
51279       pQueueFamilyIndices   = queueFamilyIndices_.data();
51280       return *this;
51281     }
51282 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
51283 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
51284 
operator VkPhysicalDeviceImageDrmFormatModifierInfoEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT51285     explicit operator VkPhysicalDeviceImageDrmFormatModifierInfoEXT const &() const VULKAN_HPP_NOEXCEPT
51286     {
51287       return *reinterpret_cast<const VkPhysicalDeviceImageDrmFormatModifierInfoEXT *>( this );
51288     }
51289 
operator VkPhysicalDeviceImageDrmFormatModifierInfoEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT51290     explicit operator VkPhysicalDeviceImageDrmFormatModifierInfoEXT &() VULKAN_HPP_NOEXCEPT
51291     {
51292       return *reinterpret_cast<VkPhysicalDeviceImageDrmFormatModifierInfoEXT *>( this );
51293     }
51294 
51295 #if 14 <= VULKAN_HPP_CPP_VERSION
51296     auto
51297 #else
51298     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
51299                const void * const &,
51300                uint64_t const &,
51301                VULKAN_HPP_NAMESPACE::SharingMode const &,
51302                uint32_t const &,
51303                const uint32_t * const &>
51304 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT51305       reflect() const VULKAN_HPP_NOEXCEPT
51306     {
51307       return std::tie( sType, pNext, drmFormatModifier, sharingMode, queueFamilyIndexCount, pQueueFamilyIndices );
51308     }
51309 
51310 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
51311     auto operator<=>( PhysicalDeviceImageDrmFormatModifierInfoEXT const & ) const = default;
51312 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT51313     bool operator==( PhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
51314     {
51315       return this->reflect() == rhs.reflect();
51316     }
51317 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT51318     bool operator!=( PhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
51319     {
51320       return this->reflect() != rhs.reflect();
51321     }
51322 #endif
51323 
51324   public:
51325     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::ePhysicalDeviceImageDrmFormatModifierInfoEXT;
51326     const void *                        pNext             = {};
51327     uint64_t                            drmFormatModifier = {};
51328     VULKAN_HPP_NAMESPACE::SharingMode   sharingMode       = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive;
51329     uint32_t                            queueFamilyIndexCount = {};
51330     const uint32_t *                    pQueueFamilyIndices   = {};
51331   };
51332   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT ) ==
51333                               sizeof( VkPhysicalDeviceImageDrmFormatModifierInfoEXT ),
51334                             "struct and wrapper have different size!" );
51335   VULKAN_HPP_STATIC_ASSERT(
51336     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT>::value,
51337     "struct wrapper is not a standard layout!" );
51338   VULKAN_HPP_STATIC_ASSERT(
51339     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT>::value,
51340     "PhysicalDeviceImageDrmFormatModifierInfoEXT is not nothrow_move_constructible!" );
51341 
51342   template <>
51343   struct CppType<StructureType, StructureType::ePhysicalDeviceImageDrmFormatModifierInfoEXT>
51344   {
51345     using Type = PhysicalDeviceImageDrmFormatModifierInfoEXT;
51346   };
51347 
51348   struct PhysicalDeviceImageFormatInfo2
51349   {
51350     using NativeType = VkPhysicalDeviceImageFormatInfo2;
51351 
51352     static const bool                                  allowDuplicate = false;
51353     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceImageFormatInfo2;
51354 
51355 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceImageFormatInfo2VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo251356     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageFormatInfo2(
51357       VULKAN_HPP_NAMESPACE::Format           format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined,
51358       VULKAN_HPP_NAMESPACE::ImageType        type_   = VULKAN_HPP_NAMESPACE::ImageType::e1D,
51359       VULKAN_HPP_NAMESPACE::ImageTiling      tiling_ = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal,
51360       VULKAN_HPP_NAMESPACE::ImageUsageFlags  usage_  = {},
51361       VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_  = {} ) VULKAN_HPP_NOEXCEPT
51362       : format( format_ )
51363       , type( type_ )
51364       , tiling( tiling_ )
51365       , usage( usage_ )
51366       , flags( flags_ )
51367     {}
51368 
51369     VULKAN_HPP_CONSTEXPR
51370       PhysicalDeviceImageFormatInfo2( PhysicalDeviceImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51371 
PhysicalDeviceImageFormatInfo2VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo251372     PhysicalDeviceImageFormatInfo2( VkPhysicalDeviceImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
51373       : PhysicalDeviceImageFormatInfo2( *reinterpret_cast<PhysicalDeviceImageFormatInfo2 const *>( &rhs ) )
51374     {}
51375 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
51376 
51377     PhysicalDeviceImageFormatInfo2 &
51378       operator=( PhysicalDeviceImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51379 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo251380     PhysicalDeviceImageFormatInfo2 & operator=( VkPhysicalDeviceImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
51381     {
51382       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 const *>( &rhs );
51383       return *this;
51384     }
51385 
51386 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo251387     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
51388     {
51389       pNext = pNext_;
51390       return *this;
51391     }
51392 
51393     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 &
setFormatVULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo251394                             setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
51395     {
51396       format = format_;
51397       return *this;
51398     }
51399 
51400     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 &
setTypeVULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo251401                             setType( VULKAN_HPP_NAMESPACE::ImageType type_ ) VULKAN_HPP_NOEXCEPT
51402     {
51403       type = type_;
51404       return *this;
51405     }
51406 
51407     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 &
setTilingVULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo251408                             setTiling( VULKAN_HPP_NAMESPACE::ImageTiling tiling_ ) VULKAN_HPP_NOEXCEPT
51409     {
51410       tiling = tiling_;
51411       return *this;
51412     }
51413 
51414     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 &
setUsageVULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo251415                             setUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT
51416     {
51417       usage = usage_;
51418       return *this;
51419     }
51420 
51421     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 &
setFlagsVULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo251422                             setFlags( VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
51423     {
51424       flags = flags_;
51425       return *this;
51426     }
51427 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
51428 
operator VkPhysicalDeviceImageFormatInfo2 const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo251429     explicit operator VkPhysicalDeviceImageFormatInfo2 const &() const VULKAN_HPP_NOEXCEPT
51430     {
51431       return *reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2 *>( this );
51432     }
51433 
operator VkPhysicalDeviceImageFormatInfo2&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo251434     explicit operator VkPhysicalDeviceImageFormatInfo2 &() VULKAN_HPP_NOEXCEPT
51435     {
51436       return *reinterpret_cast<VkPhysicalDeviceImageFormatInfo2 *>( this );
51437     }
51438 
51439 #if 14 <= VULKAN_HPP_CPP_VERSION
51440     auto
51441 #else
51442     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
51443                const void * const &,
51444                VULKAN_HPP_NAMESPACE::Format const &,
51445                VULKAN_HPP_NAMESPACE::ImageType const &,
51446                VULKAN_HPP_NAMESPACE::ImageTiling const &,
51447                VULKAN_HPP_NAMESPACE::ImageUsageFlags const &,
51448                VULKAN_HPP_NAMESPACE::ImageCreateFlags const &>
51449 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo251450       reflect() const VULKAN_HPP_NOEXCEPT
51451     {
51452       return std::tie( sType, pNext, format, type, tiling, usage, flags );
51453     }
51454 
51455 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
51456     auto operator<=>( PhysicalDeviceImageFormatInfo2 const & ) const = default;
51457 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo251458     bool operator==( PhysicalDeviceImageFormatInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
51459     {
51460       return this->reflect() == rhs.reflect();
51461     }
51462 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo251463     bool operator!=( PhysicalDeviceImageFormatInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
51464     {
51465       return this->reflect() != rhs.reflect();
51466     }
51467 #endif
51468 
51469   public:
51470     VULKAN_HPP_NAMESPACE::StructureType    sType  = StructureType::ePhysicalDeviceImageFormatInfo2;
51471     const void *                           pNext  = {};
51472     VULKAN_HPP_NAMESPACE::Format           format = VULKAN_HPP_NAMESPACE::Format::eUndefined;
51473     VULKAN_HPP_NAMESPACE::ImageType        type   = VULKAN_HPP_NAMESPACE::ImageType::e1D;
51474     VULKAN_HPP_NAMESPACE::ImageTiling      tiling = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal;
51475     VULKAN_HPP_NAMESPACE::ImageUsageFlags  usage  = {};
51476     VULKAN_HPP_NAMESPACE::ImageCreateFlags flags  = {};
51477   };
51478   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 ) ==
51479                               sizeof( VkPhysicalDeviceImageFormatInfo2 ),
51480                             "struct and wrapper have different size!" );
51481   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2>::value,
51482                             "struct wrapper is not a standard layout!" );
51483   VULKAN_HPP_STATIC_ASSERT(
51484     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2>::value,
51485     "PhysicalDeviceImageFormatInfo2 is not nothrow_move_constructible!" );
51486 
51487   template <>
51488   struct CppType<StructureType, StructureType::ePhysicalDeviceImageFormatInfo2>
51489   {
51490     using Type = PhysicalDeviceImageFormatInfo2;
51491   };
51492   using PhysicalDeviceImageFormatInfo2KHR = PhysicalDeviceImageFormatInfo2;
51493 
51494   struct PhysicalDeviceImageRobustnessFeaturesEXT
51495   {
51496     using NativeType = VkPhysicalDeviceImageRobustnessFeaturesEXT;
51497 
51498     static const bool                                  allowDuplicate = false;
51499     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
51500       StructureType::ePhysicalDeviceImageRobustnessFeaturesEXT;
51501 
51502 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceImageRobustnessFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeaturesEXT51503     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageRobustnessFeaturesEXT(
51504       VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess_ = {} ) VULKAN_HPP_NOEXCEPT
51505       : robustImageAccess( robustImageAccess_ )
51506     {}
51507 
51508     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageRobustnessFeaturesEXT(
51509       PhysicalDeviceImageRobustnessFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51510 
PhysicalDeviceImageRobustnessFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeaturesEXT51511     PhysicalDeviceImageRobustnessFeaturesEXT( VkPhysicalDeviceImageRobustnessFeaturesEXT const & rhs )
51512       VULKAN_HPP_NOEXCEPT
51513       : PhysicalDeviceImageRobustnessFeaturesEXT(
51514           *reinterpret_cast<PhysicalDeviceImageRobustnessFeaturesEXT const *>( &rhs ) )
51515     {}
51516 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
51517 
51518     PhysicalDeviceImageRobustnessFeaturesEXT &
51519       operator=( PhysicalDeviceImageRobustnessFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51520 
51521     PhysicalDeviceImageRobustnessFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeaturesEXT51522       operator=( VkPhysicalDeviceImageRobustnessFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
51523     {
51524       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeaturesEXT const *>( &rhs );
51525       return *this;
51526     }
51527 
51528 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeaturesEXT51529     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageRobustnessFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
51530     {
51531       pNext = pNext_;
51532       return *this;
51533     }
51534 
51535     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageRobustnessFeaturesEXT &
setRobustImageAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeaturesEXT51536                             setRobustImageAccess( VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess_ ) VULKAN_HPP_NOEXCEPT
51537     {
51538       robustImageAccess = robustImageAccess_;
51539       return *this;
51540     }
51541 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
51542 
operator VkPhysicalDeviceImageRobustnessFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeaturesEXT51543     explicit operator VkPhysicalDeviceImageRobustnessFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
51544     {
51545       return *reinterpret_cast<const VkPhysicalDeviceImageRobustnessFeaturesEXT *>( this );
51546     }
51547 
operator VkPhysicalDeviceImageRobustnessFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeaturesEXT51548     explicit operator VkPhysicalDeviceImageRobustnessFeaturesEXT &() VULKAN_HPP_NOEXCEPT
51549     {
51550       return *reinterpret_cast<VkPhysicalDeviceImageRobustnessFeaturesEXT *>( this );
51551     }
51552 
51553 #if 14 <= VULKAN_HPP_CPP_VERSION
51554     auto
51555 #else
51556     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
51557 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeaturesEXT51558       reflect() const VULKAN_HPP_NOEXCEPT
51559     {
51560       return std::tie( sType, pNext, robustImageAccess );
51561     }
51562 
51563 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
51564     auto operator<=>( PhysicalDeviceImageRobustnessFeaturesEXT const & ) const = default;
51565 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeaturesEXT51566     bool operator==( PhysicalDeviceImageRobustnessFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
51567     {
51568       return this->reflect() == rhs.reflect();
51569     }
51570 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeaturesEXT51571     bool operator!=( PhysicalDeviceImageRobustnessFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
51572     {
51573       return this->reflect() != rhs.reflect();
51574     }
51575 #endif
51576 
51577   public:
51578     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::ePhysicalDeviceImageRobustnessFeaturesEXT;
51579     void *                              pNext             = {};
51580     VULKAN_HPP_NAMESPACE::Bool32        robustImageAccess = {};
51581   };
51582   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeaturesEXT ) ==
51583                               sizeof( VkPhysicalDeviceImageRobustnessFeaturesEXT ),
51584                             "struct and wrapper have different size!" );
51585   VULKAN_HPP_STATIC_ASSERT(
51586     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeaturesEXT>::value,
51587     "struct wrapper is not a standard layout!" );
51588   VULKAN_HPP_STATIC_ASSERT(
51589     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeaturesEXT>::value,
51590     "PhysicalDeviceImageRobustnessFeaturesEXT is not nothrow_move_constructible!" );
51591 
51592   template <>
51593   struct CppType<StructureType, StructureType::ePhysicalDeviceImageRobustnessFeaturesEXT>
51594   {
51595     using Type = PhysicalDeviceImageRobustnessFeaturesEXT;
51596   };
51597 
51598   struct PhysicalDeviceImageViewImageFormatInfoEXT
51599   {
51600     using NativeType = VkPhysicalDeviceImageViewImageFormatInfoEXT;
51601 
51602     static const bool                                  allowDuplicate = false;
51603     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
51604       StructureType::ePhysicalDeviceImageViewImageFormatInfoEXT;
51605 
51606 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
51607     VULKAN_HPP_CONSTEXPR
PhysicalDeviceImageViewImageFormatInfoEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT51608       PhysicalDeviceImageViewImageFormatInfoEXT( VULKAN_HPP_NAMESPACE::ImageViewType imageViewType_ =
51609                                                    VULKAN_HPP_NAMESPACE::ImageViewType::e1D ) VULKAN_HPP_NOEXCEPT
51610       : imageViewType( imageViewType_ )
51611     {}
51612 
51613     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageViewImageFormatInfoEXT(
51614       PhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51615 
PhysicalDeviceImageViewImageFormatInfoEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT51616     PhysicalDeviceImageViewImageFormatInfoEXT( VkPhysicalDeviceImageViewImageFormatInfoEXT const & rhs )
51617       VULKAN_HPP_NOEXCEPT
51618       : PhysicalDeviceImageViewImageFormatInfoEXT(
51619           *reinterpret_cast<PhysicalDeviceImageViewImageFormatInfoEXT const *>( &rhs ) )
51620     {}
51621 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
51622 
51623     PhysicalDeviceImageViewImageFormatInfoEXT &
51624       operator=( PhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51625 
51626     PhysicalDeviceImageViewImageFormatInfoEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT51627       operator=( VkPhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
51628     {
51629       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT const *>( &rhs );
51630       return *this;
51631     }
51632 
51633 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT51634     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageViewImageFormatInfoEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
51635     {
51636       pNext = pNext_;
51637       return *this;
51638     }
51639 
51640     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageViewImageFormatInfoEXT &
setImageViewTypeVULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT51641                             setImageViewType( VULKAN_HPP_NAMESPACE::ImageViewType imageViewType_ ) VULKAN_HPP_NOEXCEPT
51642     {
51643       imageViewType = imageViewType_;
51644       return *this;
51645     }
51646 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
51647 
operator VkPhysicalDeviceImageViewImageFormatInfoEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT51648     explicit operator VkPhysicalDeviceImageViewImageFormatInfoEXT const &() const VULKAN_HPP_NOEXCEPT
51649     {
51650       return *reinterpret_cast<const VkPhysicalDeviceImageViewImageFormatInfoEXT *>( this );
51651     }
51652 
operator VkPhysicalDeviceImageViewImageFormatInfoEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT51653     explicit operator VkPhysicalDeviceImageViewImageFormatInfoEXT &() VULKAN_HPP_NOEXCEPT
51654     {
51655       return *reinterpret_cast<VkPhysicalDeviceImageViewImageFormatInfoEXT *>( this );
51656     }
51657 
51658 #if 14 <= VULKAN_HPP_CPP_VERSION
51659     auto
51660 #else
51661     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ImageViewType const &>
51662 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT51663       reflect() const VULKAN_HPP_NOEXCEPT
51664     {
51665       return std::tie( sType, pNext, imageViewType );
51666     }
51667 
51668 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
51669     auto operator<=>( PhysicalDeviceImageViewImageFormatInfoEXT const & ) const = default;
51670 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT51671     bool operator==( PhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
51672     {
51673       return this->reflect() == rhs.reflect();
51674     }
51675 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT51676     bool operator!=( PhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
51677     {
51678       return this->reflect() != rhs.reflect();
51679     }
51680 #endif
51681 
51682   public:
51683     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::ePhysicalDeviceImageViewImageFormatInfoEXT;
51684     void *                              pNext         = {};
51685     VULKAN_HPP_NAMESPACE::ImageViewType imageViewType = VULKAN_HPP_NAMESPACE::ImageViewType::e1D;
51686   };
51687   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT ) ==
51688                               sizeof( VkPhysicalDeviceImageViewImageFormatInfoEXT ),
51689                             "struct and wrapper have different size!" );
51690   VULKAN_HPP_STATIC_ASSERT(
51691     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT>::value,
51692     "struct wrapper is not a standard layout!" );
51693   VULKAN_HPP_STATIC_ASSERT(
51694     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT>::value,
51695     "PhysicalDeviceImageViewImageFormatInfoEXT is not nothrow_move_constructible!" );
51696 
51697   template <>
51698   struct CppType<StructureType, StructureType::ePhysicalDeviceImageViewImageFormatInfoEXT>
51699   {
51700     using Type = PhysicalDeviceImageViewImageFormatInfoEXT;
51701   };
51702 
51703   struct PhysicalDeviceImageViewMinLodFeaturesEXT
51704   {
51705     using NativeType = VkPhysicalDeviceImageViewMinLodFeaturesEXT;
51706 
51707     static const bool                                  allowDuplicate = false;
51708     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
51709       StructureType::ePhysicalDeviceImageViewMinLodFeaturesEXT;
51710 
51711 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
51712     VULKAN_HPP_CONSTEXPR
PhysicalDeviceImageViewMinLodFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT51713       PhysicalDeviceImageViewMinLodFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 minLod_ = {} ) VULKAN_HPP_NOEXCEPT
51714       : minLod( minLod_ )
51715     {}
51716 
51717     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageViewMinLodFeaturesEXT(
51718       PhysicalDeviceImageViewMinLodFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51719 
PhysicalDeviceImageViewMinLodFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT51720     PhysicalDeviceImageViewMinLodFeaturesEXT( VkPhysicalDeviceImageViewMinLodFeaturesEXT const & rhs )
51721       VULKAN_HPP_NOEXCEPT
51722       : PhysicalDeviceImageViewMinLodFeaturesEXT(
51723           *reinterpret_cast<PhysicalDeviceImageViewMinLodFeaturesEXT const *>( &rhs ) )
51724     {}
51725 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
51726 
51727     PhysicalDeviceImageViewMinLodFeaturesEXT &
51728       operator=( PhysicalDeviceImageViewMinLodFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51729 
51730     PhysicalDeviceImageViewMinLodFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT51731       operator=( VkPhysicalDeviceImageViewMinLodFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
51732     {
51733       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT const *>( &rhs );
51734       return *this;
51735     }
51736 
51737 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT51738     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageViewMinLodFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
51739     {
51740       pNext = pNext_;
51741       return *this;
51742     }
51743 
51744     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageViewMinLodFeaturesEXT &
setMinLodVULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT51745                             setMinLod( VULKAN_HPP_NAMESPACE::Bool32 minLod_ ) VULKAN_HPP_NOEXCEPT
51746     {
51747       minLod = minLod_;
51748       return *this;
51749     }
51750 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
51751 
operator VkPhysicalDeviceImageViewMinLodFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT51752     explicit operator VkPhysicalDeviceImageViewMinLodFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
51753     {
51754       return *reinterpret_cast<const VkPhysicalDeviceImageViewMinLodFeaturesEXT *>( this );
51755     }
51756 
operator VkPhysicalDeviceImageViewMinLodFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT51757     explicit operator VkPhysicalDeviceImageViewMinLodFeaturesEXT &() VULKAN_HPP_NOEXCEPT
51758     {
51759       return *reinterpret_cast<VkPhysicalDeviceImageViewMinLodFeaturesEXT *>( this );
51760     }
51761 
51762 #if 14 <= VULKAN_HPP_CPP_VERSION
51763     auto
51764 #else
51765     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
51766 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT51767       reflect() const VULKAN_HPP_NOEXCEPT
51768     {
51769       return std::tie( sType, pNext, minLod );
51770     }
51771 
51772 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
51773     auto operator<=>( PhysicalDeviceImageViewMinLodFeaturesEXT const & ) const = default;
51774 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT51775     bool operator==( PhysicalDeviceImageViewMinLodFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
51776     {
51777       return this->reflect() == rhs.reflect();
51778     }
51779 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT51780     bool operator!=( PhysicalDeviceImageViewMinLodFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
51781     {
51782       return this->reflect() != rhs.reflect();
51783     }
51784 #endif
51785 
51786   public:
51787     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::ePhysicalDeviceImageViewMinLodFeaturesEXT;
51788     void *                              pNext  = {};
51789     VULKAN_HPP_NAMESPACE::Bool32        minLod = {};
51790   };
51791   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT ) ==
51792                               sizeof( VkPhysicalDeviceImageViewMinLodFeaturesEXT ),
51793                             "struct and wrapper have different size!" );
51794   VULKAN_HPP_STATIC_ASSERT(
51795     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT>::value,
51796     "struct wrapper is not a standard layout!" );
51797   VULKAN_HPP_STATIC_ASSERT(
51798     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT>::value,
51799     "PhysicalDeviceImageViewMinLodFeaturesEXT is not nothrow_move_constructible!" );
51800 
51801   template <>
51802   struct CppType<StructureType, StructureType::ePhysicalDeviceImageViewMinLodFeaturesEXT>
51803   {
51804     using Type = PhysicalDeviceImageViewMinLodFeaturesEXT;
51805   };
51806 
51807   struct PhysicalDeviceImagelessFramebufferFeatures
51808   {
51809     using NativeType = VkPhysicalDeviceImagelessFramebufferFeatures;
51810 
51811     static const bool                                  allowDuplicate = false;
51812     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
51813       StructureType::ePhysicalDeviceImagelessFramebufferFeatures;
51814 
51815 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceImagelessFramebufferFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures51816     VULKAN_HPP_CONSTEXPR PhysicalDeviceImagelessFramebufferFeatures(
51817       VULKAN_HPP_NAMESPACE::Bool32 imagelessFramebuffer_ = {} ) VULKAN_HPP_NOEXCEPT
51818       : imagelessFramebuffer( imagelessFramebuffer_ )
51819     {}
51820 
51821     VULKAN_HPP_CONSTEXPR PhysicalDeviceImagelessFramebufferFeatures(
51822       PhysicalDeviceImagelessFramebufferFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51823 
PhysicalDeviceImagelessFramebufferFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures51824     PhysicalDeviceImagelessFramebufferFeatures( VkPhysicalDeviceImagelessFramebufferFeatures const & rhs )
51825       VULKAN_HPP_NOEXCEPT
51826       : PhysicalDeviceImagelessFramebufferFeatures(
51827           *reinterpret_cast<PhysicalDeviceImagelessFramebufferFeatures const *>( &rhs ) )
51828     {}
51829 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
51830 
51831     PhysicalDeviceImagelessFramebufferFeatures &
51832       operator=( PhysicalDeviceImagelessFramebufferFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51833 
51834     PhysicalDeviceImagelessFramebufferFeatures &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures51835       operator=( VkPhysicalDeviceImagelessFramebufferFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
51836     {
51837       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures const *>( &rhs );
51838       return *this;
51839     }
51840 
51841 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures51842     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImagelessFramebufferFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
51843     {
51844       pNext = pNext_;
51845       return *this;
51846     }
51847 
51848     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImagelessFramebufferFeatures &
setImagelessFramebufferVULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures51849       setImagelessFramebuffer( VULKAN_HPP_NAMESPACE::Bool32 imagelessFramebuffer_ ) VULKAN_HPP_NOEXCEPT
51850     {
51851       imagelessFramebuffer = imagelessFramebuffer_;
51852       return *this;
51853     }
51854 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
51855 
operator VkPhysicalDeviceImagelessFramebufferFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures51856     explicit operator VkPhysicalDeviceImagelessFramebufferFeatures const &() const VULKAN_HPP_NOEXCEPT
51857     {
51858       return *reinterpret_cast<const VkPhysicalDeviceImagelessFramebufferFeatures *>( this );
51859     }
51860 
operator VkPhysicalDeviceImagelessFramebufferFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures51861     explicit operator VkPhysicalDeviceImagelessFramebufferFeatures &() VULKAN_HPP_NOEXCEPT
51862     {
51863       return *reinterpret_cast<VkPhysicalDeviceImagelessFramebufferFeatures *>( this );
51864     }
51865 
51866 #if 14 <= VULKAN_HPP_CPP_VERSION
51867     auto
51868 #else
51869     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
51870 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures51871       reflect() const VULKAN_HPP_NOEXCEPT
51872     {
51873       return std::tie( sType, pNext, imagelessFramebuffer );
51874     }
51875 
51876 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
51877     auto operator<=>( PhysicalDeviceImagelessFramebufferFeatures const & ) const = default;
51878 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures51879     bool operator==( PhysicalDeviceImagelessFramebufferFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
51880     {
51881       return this->reflect() == rhs.reflect();
51882     }
51883 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures51884     bool operator!=( PhysicalDeviceImagelessFramebufferFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
51885     {
51886       return this->reflect() != rhs.reflect();
51887     }
51888 #endif
51889 
51890   public:
51891     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceImagelessFramebufferFeatures;
51892     void *                              pNext = {};
51893     VULKAN_HPP_NAMESPACE::Bool32        imagelessFramebuffer = {};
51894   };
51895   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures ) ==
51896                               sizeof( VkPhysicalDeviceImagelessFramebufferFeatures ),
51897                             "struct and wrapper have different size!" );
51898   VULKAN_HPP_STATIC_ASSERT(
51899     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures>::value,
51900     "struct wrapper is not a standard layout!" );
51901   VULKAN_HPP_STATIC_ASSERT(
51902     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures>::value,
51903     "PhysicalDeviceImagelessFramebufferFeatures is not nothrow_move_constructible!" );
51904 
51905   template <>
51906   struct CppType<StructureType, StructureType::ePhysicalDeviceImagelessFramebufferFeatures>
51907   {
51908     using Type = PhysicalDeviceImagelessFramebufferFeatures;
51909   };
51910   using PhysicalDeviceImagelessFramebufferFeaturesKHR = PhysicalDeviceImagelessFramebufferFeatures;
51911 
51912   struct PhysicalDeviceIndexTypeUint8FeaturesEXT
51913   {
51914     using NativeType = VkPhysicalDeviceIndexTypeUint8FeaturesEXT;
51915 
51916     static const bool                                  allowDuplicate = false;
51917     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
51918       StructureType::ePhysicalDeviceIndexTypeUint8FeaturesEXT;
51919 
51920 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
51921     VULKAN_HPP_CONSTEXPR
PhysicalDeviceIndexTypeUint8FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesEXT51922       PhysicalDeviceIndexTypeUint8FeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 indexTypeUint8_ = {} ) VULKAN_HPP_NOEXCEPT
51923       : indexTypeUint8( indexTypeUint8_ )
51924     {}
51925 
51926     VULKAN_HPP_CONSTEXPR PhysicalDeviceIndexTypeUint8FeaturesEXT( PhysicalDeviceIndexTypeUint8FeaturesEXT const & rhs )
51927       VULKAN_HPP_NOEXCEPT = default;
51928 
PhysicalDeviceIndexTypeUint8FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesEXT51929     PhysicalDeviceIndexTypeUint8FeaturesEXT( VkPhysicalDeviceIndexTypeUint8FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
51930       : PhysicalDeviceIndexTypeUint8FeaturesEXT(
51931           *reinterpret_cast<PhysicalDeviceIndexTypeUint8FeaturesEXT const *>( &rhs ) )
51932     {}
51933 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
51934 
51935     PhysicalDeviceIndexTypeUint8FeaturesEXT &
51936       operator=( PhysicalDeviceIndexTypeUint8FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51937 
51938     PhysicalDeviceIndexTypeUint8FeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesEXT51939       operator=( VkPhysicalDeviceIndexTypeUint8FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
51940     {
51941       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesEXT const *>( &rhs );
51942       return *this;
51943     }
51944 
51945 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesEXT51946     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceIndexTypeUint8FeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
51947     {
51948       pNext = pNext_;
51949       return *this;
51950     }
51951 
51952     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceIndexTypeUint8FeaturesEXT &
setIndexTypeUint8VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesEXT51953                             setIndexTypeUint8( VULKAN_HPP_NAMESPACE::Bool32 indexTypeUint8_ ) VULKAN_HPP_NOEXCEPT
51954     {
51955       indexTypeUint8 = indexTypeUint8_;
51956       return *this;
51957     }
51958 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
51959 
operator VkPhysicalDeviceIndexTypeUint8FeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesEXT51960     explicit operator VkPhysicalDeviceIndexTypeUint8FeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
51961     {
51962       return *reinterpret_cast<const VkPhysicalDeviceIndexTypeUint8FeaturesEXT *>( this );
51963     }
51964 
operator VkPhysicalDeviceIndexTypeUint8FeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesEXT51965     explicit operator VkPhysicalDeviceIndexTypeUint8FeaturesEXT &() VULKAN_HPP_NOEXCEPT
51966     {
51967       return *reinterpret_cast<VkPhysicalDeviceIndexTypeUint8FeaturesEXT *>( this );
51968     }
51969 
51970 #if 14 <= VULKAN_HPP_CPP_VERSION
51971     auto
51972 #else
51973     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
51974 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesEXT51975       reflect() const VULKAN_HPP_NOEXCEPT
51976     {
51977       return std::tie( sType, pNext, indexTypeUint8 );
51978     }
51979 
51980 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
51981     auto operator<=>( PhysicalDeviceIndexTypeUint8FeaturesEXT const & ) const = default;
51982 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesEXT51983     bool operator==( PhysicalDeviceIndexTypeUint8FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
51984     {
51985       return this->reflect() == rhs.reflect();
51986     }
51987 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesEXT51988     bool operator!=( PhysicalDeviceIndexTypeUint8FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
51989     {
51990       return this->reflect() != rhs.reflect();
51991     }
51992 #endif
51993 
51994   public:
51995     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::ePhysicalDeviceIndexTypeUint8FeaturesEXT;
51996     void *                              pNext          = {};
51997     VULKAN_HPP_NAMESPACE::Bool32        indexTypeUint8 = {};
51998   };
51999   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesEXT ) ==
52000                               sizeof( VkPhysicalDeviceIndexTypeUint8FeaturesEXT ),
52001                             "struct and wrapper have different size!" );
52002   VULKAN_HPP_STATIC_ASSERT(
52003     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesEXT>::value,
52004     "struct wrapper is not a standard layout!" );
52005   VULKAN_HPP_STATIC_ASSERT(
52006     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesEXT>::value,
52007     "PhysicalDeviceIndexTypeUint8FeaturesEXT is not nothrow_move_constructible!" );
52008 
52009   template <>
52010   struct CppType<StructureType, StructureType::ePhysicalDeviceIndexTypeUint8FeaturesEXT>
52011   {
52012     using Type = PhysicalDeviceIndexTypeUint8FeaturesEXT;
52013   };
52014 
52015   struct PhysicalDeviceInheritedViewportScissorFeaturesNV
52016   {
52017     using NativeType = VkPhysicalDeviceInheritedViewportScissorFeaturesNV;
52018 
52019     static const bool                                  allowDuplicate = false;
52020     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
52021       StructureType::ePhysicalDeviceInheritedViewportScissorFeaturesNV;
52022 
52023 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceInheritedViewportScissorFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV52024     VULKAN_HPP_CONSTEXPR PhysicalDeviceInheritedViewportScissorFeaturesNV(
52025       VULKAN_HPP_NAMESPACE::Bool32 inheritedViewportScissor2D_ = {} ) VULKAN_HPP_NOEXCEPT
52026       : inheritedViewportScissor2D( inheritedViewportScissor2D_ )
52027     {}
52028 
52029     VULKAN_HPP_CONSTEXPR PhysicalDeviceInheritedViewportScissorFeaturesNV(
52030       PhysicalDeviceInheritedViewportScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52031 
PhysicalDeviceInheritedViewportScissorFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV52032     PhysicalDeviceInheritedViewportScissorFeaturesNV( VkPhysicalDeviceInheritedViewportScissorFeaturesNV const & rhs )
52033       VULKAN_HPP_NOEXCEPT
52034       : PhysicalDeviceInheritedViewportScissorFeaturesNV(
52035           *reinterpret_cast<PhysicalDeviceInheritedViewportScissorFeaturesNV const *>( &rhs ) )
52036     {}
52037 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
52038 
52039     PhysicalDeviceInheritedViewportScissorFeaturesNV &
52040       operator=( PhysicalDeviceInheritedViewportScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52041 
52042     PhysicalDeviceInheritedViewportScissorFeaturesNV &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV52043       operator=( VkPhysicalDeviceInheritedViewportScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
52044     {
52045       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV const *>( &rhs );
52046       return *this;
52047     }
52048 
52049 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
52050     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInheritedViewportScissorFeaturesNV &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV52051                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
52052     {
52053       pNext = pNext_;
52054       return *this;
52055     }
52056 
52057     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInheritedViewportScissorFeaturesNV &
setInheritedViewportScissor2DVULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV52058       setInheritedViewportScissor2D( VULKAN_HPP_NAMESPACE::Bool32 inheritedViewportScissor2D_ ) VULKAN_HPP_NOEXCEPT
52059     {
52060       inheritedViewportScissor2D = inheritedViewportScissor2D_;
52061       return *this;
52062     }
52063 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
52064 
operator VkPhysicalDeviceInheritedViewportScissorFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV52065     explicit operator VkPhysicalDeviceInheritedViewportScissorFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
52066     {
52067       return *reinterpret_cast<const VkPhysicalDeviceInheritedViewportScissorFeaturesNV *>( this );
52068     }
52069 
operator VkPhysicalDeviceInheritedViewportScissorFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV52070     explicit operator VkPhysicalDeviceInheritedViewportScissorFeaturesNV &() VULKAN_HPP_NOEXCEPT
52071     {
52072       return *reinterpret_cast<VkPhysicalDeviceInheritedViewportScissorFeaturesNV *>( this );
52073     }
52074 
52075 #if 14 <= VULKAN_HPP_CPP_VERSION
52076     auto
52077 #else
52078     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
52079 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV52080       reflect() const VULKAN_HPP_NOEXCEPT
52081     {
52082       return std::tie( sType, pNext, inheritedViewportScissor2D );
52083     }
52084 
52085 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
52086     auto operator<=>( PhysicalDeviceInheritedViewportScissorFeaturesNV const & ) const = default;
52087 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV52088     bool operator==( PhysicalDeviceInheritedViewportScissorFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
52089     {
52090       return this->reflect() == rhs.reflect();
52091     }
52092 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV52093     bool operator!=( PhysicalDeviceInheritedViewportScissorFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
52094     {
52095       return this->reflect() != rhs.reflect();
52096     }
52097 #endif
52098 
52099   public:
52100     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceInheritedViewportScissorFeaturesNV;
52101     void *                              pNext = {};
52102     VULKAN_HPP_NAMESPACE::Bool32        inheritedViewportScissor2D = {};
52103   };
52104   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV ) ==
52105                               sizeof( VkPhysicalDeviceInheritedViewportScissorFeaturesNV ),
52106                             "struct and wrapper have different size!" );
52107   VULKAN_HPP_STATIC_ASSERT(
52108     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV>::value,
52109     "struct wrapper is not a standard layout!" );
52110   VULKAN_HPP_STATIC_ASSERT(
52111     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV>::value,
52112     "PhysicalDeviceInheritedViewportScissorFeaturesNV is not nothrow_move_constructible!" );
52113 
52114   template <>
52115   struct CppType<StructureType, StructureType::ePhysicalDeviceInheritedViewportScissorFeaturesNV>
52116   {
52117     using Type = PhysicalDeviceInheritedViewportScissorFeaturesNV;
52118   };
52119 
52120   struct PhysicalDeviceInlineUniformBlockFeaturesEXT
52121   {
52122     using NativeType = VkPhysicalDeviceInlineUniformBlockFeaturesEXT;
52123 
52124     static const bool                                  allowDuplicate = false;
52125     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
52126       StructureType::ePhysicalDeviceInlineUniformBlockFeaturesEXT;
52127 
52128 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceInlineUniformBlockFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeaturesEXT52129     VULKAN_HPP_CONSTEXPR PhysicalDeviceInlineUniformBlockFeaturesEXT(
52130       VULKAN_HPP_NAMESPACE::Bool32 inlineUniformBlock_                                 = {},
52131       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind_ = {} ) VULKAN_HPP_NOEXCEPT
52132       : inlineUniformBlock( inlineUniformBlock_ )
52133       , descriptorBindingInlineUniformBlockUpdateAfterBind( descriptorBindingInlineUniformBlockUpdateAfterBind_ )
52134     {}
52135 
52136     VULKAN_HPP_CONSTEXPR PhysicalDeviceInlineUniformBlockFeaturesEXT(
52137       PhysicalDeviceInlineUniformBlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52138 
PhysicalDeviceInlineUniformBlockFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeaturesEXT52139     PhysicalDeviceInlineUniformBlockFeaturesEXT( VkPhysicalDeviceInlineUniformBlockFeaturesEXT const & rhs )
52140       VULKAN_HPP_NOEXCEPT
52141       : PhysicalDeviceInlineUniformBlockFeaturesEXT(
52142           *reinterpret_cast<PhysicalDeviceInlineUniformBlockFeaturesEXT const *>( &rhs ) )
52143     {}
52144 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
52145 
52146     PhysicalDeviceInlineUniformBlockFeaturesEXT &
52147       operator=( PhysicalDeviceInlineUniformBlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52148 
52149     PhysicalDeviceInlineUniformBlockFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeaturesEXT52150       operator=( VkPhysicalDeviceInlineUniformBlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
52151     {
52152       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeaturesEXT const *>( &rhs );
52153       return *this;
52154     }
52155 
52156 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeaturesEXT52157     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInlineUniformBlockFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
52158     {
52159       pNext = pNext_;
52160       return *this;
52161     }
52162 
52163     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInlineUniformBlockFeaturesEXT &
setInlineUniformBlockVULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeaturesEXT52164       setInlineUniformBlock( VULKAN_HPP_NAMESPACE::Bool32 inlineUniformBlock_ ) VULKAN_HPP_NOEXCEPT
52165     {
52166       inlineUniformBlock = inlineUniformBlock_;
52167       return *this;
52168     }
52169 
52170     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInlineUniformBlockFeaturesEXT &
setDescriptorBindingInlineUniformBlockUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeaturesEXT52171                             setDescriptorBindingInlineUniformBlockUpdateAfterBind(
52172                               VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
52173     {
52174       descriptorBindingInlineUniformBlockUpdateAfterBind = descriptorBindingInlineUniformBlockUpdateAfterBind_;
52175       return *this;
52176     }
52177 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
52178 
operator VkPhysicalDeviceInlineUniformBlockFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeaturesEXT52179     explicit operator VkPhysicalDeviceInlineUniformBlockFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
52180     {
52181       return *reinterpret_cast<const VkPhysicalDeviceInlineUniformBlockFeaturesEXT *>( this );
52182     }
52183 
operator VkPhysicalDeviceInlineUniformBlockFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeaturesEXT52184     explicit operator VkPhysicalDeviceInlineUniformBlockFeaturesEXT &() VULKAN_HPP_NOEXCEPT
52185     {
52186       return *reinterpret_cast<VkPhysicalDeviceInlineUniformBlockFeaturesEXT *>( this );
52187     }
52188 
52189 #if 14 <= VULKAN_HPP_CPP_VERSION
52190     auto
52191 #else
52192     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
52193                void * const &,
52194                VULKAN_HPP_NAMESPACE::Bool32 const &,
52195                VULKAN_HPP_NAMESPACE::Bool32 const &>
52196 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeaturesEXT52197       reflect() const VULKAN_HPP_NOEXCEPT
52198     {
52199       return std::tie( sType, pNext, inlineUniformBlock, descriptorBindingInlineUniformBlockUpdateAfterBind );
52200     }
52201 
52202 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
52203     auto operator<=>( PhysicalDeviceInlineUniformBlockFeaturesEXT const & ) const = default;
52204 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeaturesEXT52205     bool operator==( PhysicalDeviceInlineUniformBlockFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
52206     {
52207       return this->reflect() == rhs.reflect();
52208     }
52209 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeaturesEXT52210     bool operator!=( PhysicalDeviceInlineUniformBlockFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
52211     {
52212       return this->reflect() != rhs.reflect();
52213     }
52214 #endif
52215 
52216   public:
52217     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceInlineUniformBlockFeaturesEXT;
52218     void *                              pNext = {};
52219     VULKAN_HPP_NAMESPACE::Bool32        inlineUniformBlock                                 = {};
52220     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingInlineUniformBlockUpdateAfterBind = {};
52221   };
52222   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeaturesEXT ) ==
52223                               sizeof( VkPhysicalDeviceInlineUniformBlockFeaturesEXT ),
52224                             "struct and wrapper have different size!" );
52225   VULKAN_HPP_STATIC_ASSERT(
52226     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeaturesEXT>::value,
52227     "struct wrapper is not a standard layout!" );
52228   VULKAN_HPP_STATIC_ASSERT(
52229     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeaturesEXT>::value,
52230     "PhysicalDeviceInlineUniformBlockFeaturesEXT is not nothrow_move_constructible!" );
52231 
52232   template <>
52233   struct CppType<StructureType, StructureType::ePhysicalDeviceInlineUniformBlockFeaturesEXT>
52234   {
52235     using Type = PhysicalDeviceInlineUniformBlockFeaturesEXT;
52236   };
52237 
52238   struct PhysicalDeviceInlineUniformBlockPropertiesEXT
52239   {
52240     using NativeType = VkPhysicalDeviceInlineUniformBlockPropertiesEXT;
52241 
52242     static const bool                                  allowDuplicate = false;
52243     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
52244       StructureType::ePhysicalDeviceInlineUniformBlockPropertiesEXT;
52245 
52246 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceInlineUniformBlockPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockPropertiesEXT52247     VULKAN_HPP_CONSTEXPR PhysicalDeviceInlineUniformBlockPropertiesEXT(
52248       uint32_t maxInlineUniformBlockSize_                               = {},
52249       uint32_t maxPerStageDescriptorInlineUniformBlocks_                = {},
52250       uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks_ = {},
52251       uint32_t maxDescriptorSetInlineUniformBlocks_                     = {},
52252       uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks_      = {} ) VULKAN_HPP_NOEXCEPT
52253       : maxInlineUniformBlockSize( maxInlineUniformBlockSize_ )
52254       , maxPerStageDescriptorInlineUniformBlocks( maxPerStageDescriptorInlineUniformBlocks_ )
52255       , maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks(
52256           maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks_ )
52257       , maxDescriptorSetInlineUniformBlocks( maxDescriptorSetInlineUniformBlocks_ )
52258       , maxDescriptorSetUpdateAfterBindInlineUniformBlocks( maxDescriptorSetUpdateAfterBindInlineUniformBlocks_ )
52259     {}
52260 
52261     VULKAN_HPP_CONSTEXPR PhysicalDeviceInlineUniformBlockPropertiesEXT(
52262       PhysicalDeviceInlineUniformBlockPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52263 
PhysicalDeviceInlineUniformBlockPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockPropertiesEXT52264     PhysicalDeviceInlineUniformBlockPropertiesEXT( VkPhysicalDeviceInlineUniformBlockPropertiesEXT const & rhs )
52265       VULKAN_HPP_NOEXCEPT
52266       : PhysicalDeviceInlineUniformBlockPropertiesEXT(
52267           *reinterpret_cast<PhysicalDeviceInlineUniformBlockPropertiesEXT const *>( &rhs ) )
52268     {}
52269 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
52270 
52271     PhysicalDeviceInlineUniformBlockPropertiesEXT &
52272       operator=( PhysicalDeviceInlineUniformBlockPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52273 
52274     PhysicalDeviceInlineUniformBlockPropertiesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockPropertiesEXT52275       operator=( VkPhysicalDeviceInlineUniformBlockPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
52276     {
52277       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockPropertiesEXT const *>( &rhs );
52278       return *this;
52279     }
52280 
operator VkPhysicalDeviceInlineUniformBlockPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockPropertiesEXT52281     explicit operator VkPhysicalDeviceInlineUniformBlockPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
52282     {
52283       return *reinterpret_cast<const VkPhysicalDeviceInlineUniformBlockPropertiesEXT *>( this );
52284     }
52285 
operator VkPhysicalDeviceInlineUniformBlockPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockPropertiesEXT52286     explicit operator VkPhysicalDeviceInlineUniformBlockPropertiesEXT &() VULKAN_HPP_NOEXCEPT
52287     {
52288       return *reinterpret_cast<VkPhysicalDeviceInlineUniformBlockPropertiesEXT *>( this );
52289     }
52290 
52291 #if 14 <= VULKAN_HPP_CPP_VERSION
52292     auto
52293 #else
52294     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
52295                void * const &,
52296                uint32_t const &,
52297                uint32_t const &,
52298                uint32_t const &,
52299                uint32_t const &,
52300                uint32_t const &>
52301 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockPropertiesEXT52302       reflect() const VULKAN_HPP_NOEXCEPT
52303     {
52304       return std::tie( sType,
52305                        pNext,
52306                        maxInlineUniformBlockSize,
52307                        maxPerStageDescriptorInlineUniformBlocks,
52308                        maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks,
52309                        maxDescriptorSetInlineUniformBlocks,
52310                        maxDescriptorSetUpdateAfterBindInlineUniformBlocks );
52311     }
52312 
52313 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
52314     auto operator<=>( PhysicalDeviceInlineUniformBlockPropertiesEXT const & ) const = default;
52315 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockPropertiesEXT52316     bool operator==( PhysicalDeviceInlineUniformBlockPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
52317     {
52318       return this->reflect() == rhs.reflect();
52319     }
52320 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockPropertiesEXT52321     bool operator!=( PhysicalDeviceInlineUniformBlockPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
52322     {
52323       return this->reflect() != rhs.reflect();
52324     }
52325 #endif
52326 
52327   public:
52328     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceInlineUniformBlockPropertiesEXT;
52329     void *                              pNext = {};
52330     uint32_t                            maxInlineUniformBlockSize                               = {};
52331     uint32_t                            maxPerStageDescriptorInlineUniformBlocks                = {};
52332     uint32_t                            maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks = {};
52333     uint32_t                            maxDescriptorSetInlineUniformBlocks                     = {};
52334     uint32_t                            maxDescriptorSetUpdateAfterBindInlineUniformBlocks      = {};
52335   };
52336   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockPropertiesEXT ) ==
52337                               sizeof( VkPhysicalDeviceInlineUniformBlockPropertiesEXT ),
52338                             "struct and wrapper have different size!" );
52339   VULKAN_HPP_STATIC_ASSERT(
52340     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockPropertiesEXT>::value,
52341     "struct wrapper is not a standard layout!" );
52342   VULKAN_HPP_STATIC_ASSERT(
52343     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockPropertiesEXT>::value,
52344     "PhysicalDeviceInlineUniformBlockPropertiesEXT is not nothrow_move_constructible!" );
52345 
52346   template <>
52347   struct CppType<StructureType, StructureType::ePhysicalDeviceInlineUniformBlockPropertiesEXT>
52348   {
52349     using Type = PhysicalDeviceInlineUniformBlockPropertiesEXT;
52350   };
52351 
52352   struct PhysicalDeviceInvocationMaskFeaturesHUAWEI
52353   {
52354     using NativeType = VkPhysicalDeviceInvocationMaskFeaturesHUAWEI;
52355 
52356     static const bool                                  allowDuplicate = false;
52357     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
52358       StructureType::ePhysicalDeviceInvocationMaskFeaturesHUAWEI;
52359 
52360 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceInvocationMaskFeaturesHUAWEIVULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI52361     VULKAN_HPP_CONSTEXPR PhysicalDeviceInvocationMaskFeaturesHUAWEI( VULKAN_HPP_NAMESPACE::Bool32 invocationMask_ = {} )
52362       VULKAN_HPP_NOEXCEPT : invocationMask( invocationMask_ )
52363     {}
52364 
52365     VULKAN_HPP_CONSTEXPR PhysicalDeviceInvocationMaskFeaturesHUAWEI(
52366       PhysicalDeviceInvocationMaskFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52367 
PhysicalDeviceInvocationMaskFeaturesHUAWEIVULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI52368     PhysicalDeviceInvocationMaskFeaturesHUAWEI( VkPhysicalDeviceInvocationMaskFeaturesHUAWEI const & rhs )
52369       VULKAN_HPP_NOEXCEPT
52370       : PhysicalDeviceInvocationMaskFeaturesHUAWEI(
52371           *reinterpret_cast<PhysicalDeviceInvocationMaskFeaturesHUAWEI const *>( &rhs ) )
52372     {}
52373 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
52374 
52375     PhysicalDeviceInvocationMaskFeaturesHUAWEI &
52376       operator=( PhysicalDeviceInvocationMaskFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52377 
52378     PhysicalDeviceInvocationMaskFeaturesHUAWEI &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI52379       operator=( VkPhysicalDeviceInvocationMaskFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT
52380     {
52381       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI const *>( &rhs );
52382       return *this;
52383     }
52384 
52385 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI52386     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInvocationMaskFeaturesHUAWEI & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
52387     {
52388       pNext = pNext_;
52389       return *this;
52390     }
52391 
52392     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInvocationMaskFeaturesHUAWEI &
setInvocationMaskVULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI52393                             setInvocationMask( VULKAN_HPP_NAMESPACE::Bool32 invocationMask_ ) VULKAN_HPP_NOEXCEPT
52394     {
52395       invocationMask = invocationMask_;
52396       return *this;
52397     }
52398 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
52399 
operator VkPhysicalDeviceInvocationMaskFeaturesHUAWEI const&VULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI52400     explicit operator VkPhysicalDeviceInvocationMaskFeaturesHUAWEI const &() const VULKAN_HPP_NOEXCEPT
52401     {
52402       return *reinterpret_cast<const VkPhysicalDeviceInvocationMaskFeaturesHUAWEI *>( this );
52403     }
52404 
operator VkPhysicalDeviceInvocationMaskFeaturesHUAWEI&VULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI52405     explicit operator VkPhysicalDeviceInvocationMaskFeaturesHUAWEI &() VULKAN_HPP_NOEXCEPT
52406     {
52407       return *reinterpret_cast<VkPhysicalDeviceInvocationMaskFeaturesHUAWEI *>( this );
52408     }
52409 
52410 #if 14 <= VULKAN_HPP_CPP_VERSION
52411     auto
52412 #else
52413     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
52414 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI52415       reflect() const VULKAN_HPP_NOEXCEPT
52416     {
52417       return std::tie( sType, pNext, invocationMask );
52418     }
52419 
52420 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
52421     auto operator<=>( PhysicalDeviceInvocationMaskFeaturesHUAWEI const & ) const = default;
52422 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI52423     bool operator==( PhysicalDeviceInvocationMaskFeaturesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
52424     {
52425       return this->reflect() == rhs.reflect();
52426     }
52427 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI52428     bool operator!=( PhysicalDeviceInvocationMaskFeaturesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
52429     {
52430       return this->reflect() != rhs.reflect();
52431     }
52432 #endif
52433 
52434   public:
52435     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::ePhysicalDeviceInvocationMaskFeaturesHUAWEI;
52436     void *                              pNext          = {};
52437     VULKAN_HPP_NAMESPACE::Bool32        invocationMask = {};
52438   };
52439   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI ) ==
52440                               sizeof( VkPhysicalDeviceInvocationMaskFeaturesHUAWEI ),
52441                             "struct and wrapper have different size!" );
52442   VULKAN_HPP_STATIC_ASSERT(
52443     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI>::value,
52444     "struct wrapper is not a standard layout!" );
52445   VULKAN_HPP_STATIC_ASSERT(
52446     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI>::value,
52447     "PhysicalDeviceInvocationMaskFeaturesHUAWEI is not nothrow_move_constructible!" );
52448 
52449   template <>
52450   struct CppType<StructureType, StructureType::ePhysicalDeviceInvocationMaskFeaturesHUAWEI>
52451   {
52452     using Type = PhysicalDeviceInvocationMaskFeaturesHUAWEI;
52453   };
52454 
52455   struct PhysicalDeviceLimits
52456   {
52457     using NativeType = VkPhysicalDeviceLimits;
52458 
52459 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
52460     VULKAN_HPP_CONSTEXPR_14
PhysicalDeviceLimitsVULKAN_HPP_NAMESPACE::PhysicalDeviceLimits52461       PhysicalDeviceLimits( uint32_t                         maxImageDimension1D_                             = {},
52462                             uint32_t                         maxImageDimension2D_                             = {},
52463                             uint32_t                         maxImageDimension3D_                             = {},
52464                             uint32_t                         maxImageDimensionCube_                           = {},
52465                             uint32_t                         maxImageArrayLayers_                             = {},
52466                             uint32_t                         maxTexelBufferElements_                          = {},
52467                             uint32_t                         maxUniformBufferRange_                           = {},
52468                             uint32_t                         maxStorageBufferRange_                           = {},
52469                             uint32_t                         maxPushConstantsSize_                            = {},
52470                             uint32_t                         maxMemoryAllocationCount_                        = {},
52471                             uint32_t                         maxSamplerAllocationCount_                       = {},
52472                             VULKAN_HPP_NAMESPACE::DeviceSize bufferImageGranularity_                          = {},
52473                             VULKAN_HPP_NAMESPACE::DeviceSize sparseAddressSpaceSize_                          = {},
52474                             uint32_t                         maxBoundDescriptorSets_                          = {},
52475                             uint32_t                         maxPerStageDescriptorSamplers_                   = {},
52476                             uint32_t                         maxPerStageDescriptorUniformBuffers_             = {},
52477                             uint32_t                         maxPerStageDescriptorStorageBuffers_             = {},
52478                             uint32_t                         maxPerStageDescriptorSampledImages_              = {},
52479                             uint32_t                         maxPerStageDescriptorStorageImages_              = {},
52480                             uint32_t                         maxPerStageDescriptorInputAttachments_           = {},
52481                             uint32_t                         maxPerStageResources_                            = {},
52482                             uint32_t                         maxDescriptorSetSamplers_                        = {},
52483                             uint32_t                         maxDescriptorSetUniformBuffers_                  = {},
52484                             uint32_t                         maxDescriptorSetUniformBuffersDynamic_           = {},
52485                             uint32_t                         maxDescriptorSetStorageBuffers_                  = {},
52486                             uint32_t                         maxDescriptorSetStorageBuffersDynamic_           = {},
52487                             uint32_t                         maxDescriptorSetSampledImages_                   = {},
52488                             uint32_t                         maxDescriptorSetStorageImages_                   = {},
52489                             uint32_t                         maxDescriptorSetInputAttachments_                = {},
52490                             uint32_t                         maxVertexInputAttributes_                        = {},
52491                             uint32_t                         maxVertexInputBindings_                          = {},
52492                             uint32_t                         maxVertexInputAttributeOffset_                   = {},
52493                             uint32_t                         maxVertexInputBindingStride_                     = {},
52494                             uint32_t                         maxVertexOutputComponents_                       = {},
52495                             uint32_t                         maxTessellationGenerationLevel_                  = {},
52496                             uint32_t                         maxTessellationPatchSize_                        = {},
52497                             uint32_t                         maxTessellationControlPerVertexInputComponents_  = {},
52498                             uint32_t                         maxTessellationControlPerVertexOutputComponents_ = {},
52499                             uint32_t                         maxTessellationControlPerPatchOutputComponents_  = {},
52500                             uint32_t                         maxTessellationControlTotalOutputComponents_     = {},
52501                             uint32_t                         maxTessellationEvaluationInputComponents_        = {},
52502                             uint32_t                         maxTessellationEvaluationOutputComponents_       = {},
52503                             uint32_t                         maxGeometryShaderInvocations_                    = {},
52504                             uint32_t                         maxGeometryInputComponents_                      = {},
52505                             uint32_t                         maxGeometryOutputComponents_                     = {},
52506                             uint32_t                         maxGeometryOutputVertices_                       = {},
52507                             uint32_t                         maxGeometryTotalOutputComponents_                = {},
52508                             uint32_t                         maxFragmentInputComponents_                      = {},
52509                             uint32_t                         maxFragmentOutputAttachments_                    = {},
52510                             uint32_t                         maxFragmentDualSrcAttachments_                   = {},
52511                             uint32_t                         maxFragmentCombinedOutputResources_              = {},
52512                             uint32_t                         maxComputeSharedMemorySize_                      = {},
52513                             std::array<uint32_t, 3> const &  maxComputeWorkGroupCount_                        = {},
52514                             uint32_t                         maxComputeWorkGroupInvocations_                  = {},
52515                             std::array<uint32_t, 3> const &  maxComputeWorkGroupSize_                         = {},
52516                             uint32_t                         subPixelPrecisionBits_                           = {},
52517                             uint32_t                         subTexelPrecisionBits_                           = {},
52518                             uint32_t                         mipmapPrecisionBits_                             = {},
52519                             uint32_t                         maxDrawIndexedIndexValue_                        = {},
52520                             uint32_t                         maxDrawIndirectCount_                            = {},
52521                             float                            maxSamplerLodBias_                               = {},
52522                             float                            maxSamplerAnisotropy_                            = {},
52523                             uint32_t                         maxViewports_                                    = {},
52524                             std::array<uint32_t, 2> const &  maxViewportDimensions_                           = {},
52525                             std::array<float, 2> const &     viewportBoundsRange_                             = {},
52526                             uint32_t                         viewportSubPixelBits_                            = {},
52527                             size_t                           minMemoryMapAlignment_                           = {},
52528                             VULKAN_HPP_NAMESPACE::DeviceSize minTexelBufferOffsetAlignment_                   = {},
52529                             VULKAN_HPP_NAMESPACE::DeviceSize minUniformBufferOffsetAlignment_                 = {},
52530                             VULKAN_HPP_NAMESPACE::DeviceSize minStorageBufferOffsetAlignment_                 = {},
52531                             int32_t                          minTexelOffset_                                  = {},
52532                             uint32_t                         maxTexelOffset_                                  = {},
52533                             int32_t                          minTexelGatherOffset_                            = {},
52534                             uint32_t                         maxTexelGatherOffset_                            = {},
52535                             float                            minInterpolationOffset_                          = {},
52536                             float                            maxInterpolationOffset_                          = {},
52537                             uint32_t                         subPixelInterpolationOffsetBits_                 = {},
52538                             uint32_t                         maxFramebufferWidth_                             = {},
52539                             uint32_t                         maxFramebufferHeight_                            = {},
52540                             uint32_t                         maxFramebufferLayers_                            = {},
52541                             VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferColorSampleCounts_              = {},
52542                             VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferDepthSampleCounts_              = {},
52543                             VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferStencilSampleCounts_            = {},
52544                             VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferNoAttachmentsSampleCounts_      = {},
52545                             uint32_t                               maxColorAttachments_                       = {},
52546                             VULKAN_HPP_NAMESPACE::SampleCountFlags sampledImageColorSampleCounts_             = {},
52547                             VULKAN_HPP_NAMESPACE::SampleCountFlags sampledImageIntegerSampleCounts_           = {},
52548                             VULKAN_HPP_NAMESPACE::SampleCountFlags sampledImageDepthSampleCounts_             = {},
52549                             VULKAN_HPP_NAMESPACE::SampleCountFlags sampledImageStencilSampleCounts_           = {},
52550                             VULKAN_HPP_NAMESPACE::SampleCountFlags storageImageSampleCounts_                  = {},
52551                             uint32_t                               maxSampleMaskWords_                        = {},
52552                             VULKAN_HPP_NAMESPACE::Bool32           timestampComputeAndGraphics_               = {},
52553                             float                                  timestampPeriod_                           = {},
52554                             uint32_t                               maxClipDistances_                          = {},
52555                             uint32_t                               maxCullDistances_                          = {},
52556                             uint32_t                               maxCombinedClipAndCullDistances_           = {},
52557                             uint32_t                               discreteQueuePriorities_                   = {},
52558                             std::array<float, 2> const &           pointSizeRange_                            = {},
52559                             std::array<float, 2> const &           lineWidthRange_                            = {},
52560                             float                                  pointSizeGranularity_                      = {},
52561                             float                                  lineWidthGranularity_                      = {},
52562                             VULKAN_HPP_NAMESPACE::Bool32           strictLines_                               = {},
52563                             VULKAN_HPP_NAMESPACE::Bool32           standardSampleLocations_                   = {},
52564                             VULKAN_HPP_NAMESPACE::DeviceSize       optimalBufferCopyOffsetAlignment_          = {},
52565                             VULKAN_HPP_NAMESPACE::DeviceSize       optimalBufferCopyRowPitchAlignment_        = {},
52566                             VULKAN_HPP_NAMESPACE::DeviceSize       nonCoherentAtomSize_ = {} ) VULKAN_HPP_NOEXCEPT
52567       : maxImageDimension1D( maxImageDimension1D_ )
52568       , maxImageDimension2D( maxImageDimension2D_ )
52569       , maxImageDimension3D( maxImageDimension3D_ )
52570       , maxImageDimensionCube( maxImageDimensionCube_ )
52571       , maxImageArrayLayers( maxImageArrayLayers_ )
52572       , maxTexelBufferElements( maxTexelBufferElements_ )
52573       , maxUniformBufferRange( maxUniformBufferRange_ )
52574       , maxStorageBufferRange( maxStorageBufferRange_ )
52575       , maxPushConstantsSize( maxPushConstantsSize_ )
52576       , maxMemoryAllocationCount( maxMemoryAllocationCount_ )
52577       , maxSamplerAllocationCount( maxSamplerAllocationCount_ )
52578       , bufferImageGranularity( bufferImageGranularity_ )
52579       , sparseAddressSpaceSize( sparseAddressSpaceSize_ )
52580       , maxBoundDescriptorSets( maxBoundDescriptorSets_ )
52581       , maxPerStageDescriptorSamplers( maxPerStageDescriptorSamplers_ )
52582       , maxPerStageDescriptorUniformBuffers( maxPerStageDescriptorUniformBuffers_ )
52583       , maxPerStageDescriptorStorageBuffers( maxPerStageDescriptorStorageBuffers_ )
52584       , maxPerStageDescriptorSampledImages( maxPerStageDescriptorSampledImages_ )
52585       , maxPerStageDescriptorStorageImages( maxPerStageDescriptorStorageImages_ )
52586       , maxPerStageDescriptorInputAttachments( maxPerStageDescriptorInputAttachments_ )
52587       , maxPerStageResources( maxPerStageResources_ )
52588       , maxDescriptorSetSamplers( maxDescriptorSetSamplers_ )
52589       , maxDescriptorSetUniformBuffers( maxDescriptorSetUniformBuffers_ )
52590       , maxDescriptorSetUniformBuffersDynamic( maxDescriptorSetUniformBuffersDynamic_ )
52591       , maxDescriptorSetStorageBuffers( maxDescriptorSetStorageBuffers_ )
52592       , maxDescriptorSetStorageBuffersDynamic( maxDescriptorSetStorageBuffersDynamic_ )
52593       , maxDescriptorSetSampledImages( maxDescriptorSetSampledImages_ )
52594       , maxDescriptorSetStorageImages( maxDescriptorSetStorageImages_ )
52595       , maxDescriptorSetInputAttachments( maxDescriptorSetInputAttachments_ )
52596       , maxVertexInputAttributes( maxVertexInputAttributes_ )
52597       , maxVertexInputBindings( maxVertexInputBindings_ )
52598       , maxVertexInputAttributeOffset( maxVertexInputAttributeOffset_ )
52599       , maxVertexInputBindingStride( maxVertexInputBindingStride_ )
52600       , maxVertexOutputComponents( maxVertexOutputComponents_ )
52601       , maxTessellationGenerationLevel( maxTessellationGenerationLevel_ )
52602       , maxTessellationPatchSize( maxTessellationPatchSize_ )
52603       , maxTessellationControlPerVertexInputComponents( maxTessellationControlPerVertexInputComponents_ )
52604       , maxTessellationControlPerVertexOutputComponents( maxTessellationControlPerVertexOutputComponents_ )
52605       , maxTessellationControlPerPatchOutputComponents( maxTessellationControlPerPatchOutputComponents_ )
52606       , maxTessellationControlTotalOutputComponents( maxTessellationControlTotalOutputComponents_ )
52607       , maxTessellationEvaluationInputComponents( maxTessellationEvaluationInputComponents_ )
52608       , maxTessellationEvaluationOutputComponents( maxTessellationEvaluationOutputComponents_ )
52609       , maxGeometryShaderInvocations( maxGeometryShaderInvocations_ )
52610       , maxGeometryInputComponents( maxGeometryInputComponents_ )
52611       , maxGeometryOutputComponents( maxGeometryOutputComponents_ )
52612       , maxGeometryOutputVertices( maxGeometryOutputVertices_ )
52613       , maxGeometryTotalOutputComponents( maxGeometryTotalOutputComponents_ )
52614       , maxFragmentInputComponents( maxFragmentInputComponents_ )
52615       , maxFragmentOutputAttachments( maxFragmentOutputAttachments_ )
52616       , maxFragmentDualSrcAttachments( maxFragmentDualSrcAttachments_ )
52617       , maxFragmentCombinedOutputResources( maxFragmentCombinedOutputResources_ )
52618       , maxComputeSharedMemorySize( maxComputeSharedMemorySize_ )
52619       , maxComputeWorkGroupCount( maxComputeWorkGroupCount_ )
52620       , maxComputeWorkGroupInvocations( maxComputeWorkGroupInvocations_ )
52621       , maxComputeWorkGroupSize( maxComputeWorkGroupSize_ )
52622       , subPixelPrecisionBits( subPixelPrecisionBits_ )
52623       , subTexelPrecisionBits( subTexelPrecisionBits_ )
52624       , mipmapPrecisionBits( mipmapPrecisionBits_ )
52625       , maxDrawIndexedIndexValue( maxDrawIndexedIndexValue_ )
52626       , maxDrawIndirectCount( maxDrawIndirectCount_ )
52627       , maxSamplerLodBias( maxSamplerLodBias_ )
52628       , maxSamplerAnisotropy( maxSamplerAnisotropy_ )
52629       , maxViewports( maxViewports_ )
52630       , maxViewportDimensions( maxViewportDimensions_ )
52631       , viewportBoundsRange( viewportBoundsRange_ )
52632       , viewportSubPixelBits( viewportSubPixelBits_ )
52633       , minMemoryMapAlignment( minMemoryMapAlignment_ )
52634       , minTexelBufferOffsetAlignment( minTexelBufferOffsetAlignment_ )
52635       , minUniformBufferOffsetAlignment( minUniformBufferOffsetAlignment_ )
52636       , minStorageBufferOffsetAlignment( minStorageBufferOffsetAlignment_ )
52637       , minTexelOffset( minTexelOffset_ )
52638       , maxTexelOffset( maxTexelOffset_ )
52639       , minTexelGatherOffset( minTexelGatherOffset_ )
52640       , maxTexelGatherOffset( maxTexelGatherOffset_ )
52641       , minInterpolationOffset( minInterpolationOffset_ )
52642       , maxInterpolationOffset( maxInterpolationOffset_ )
52643       , subPixelInterpolationOffsetBits( subPixelInterpolationOffsetBits_ )
52644       , maxFramebufferWidth( maxFramebufferWidth_ )
52645       , maxFramebufferHeight( maxFramebufferHeight_ )
52646       , maxFramebufferLayers( maxFramebufferLayers_ )
52647       , framebufferColorSampleCounts( framebufferColorSampleCounts_ )
52648       , framebufferDepthSampleCounts( framebufferDepthSampleCounts_ )
52649       , framebufferStencilSampleCounts( framebufferStencilSampleCounts_ )
52650       , framebufferNoAttachmentsSampleCounts( framebufferNoAttachmentsSampleCounts_ )
52651       , maxColorAttachments( maxColorAttachments_ )
52652       , sampledImageColorSampleCounts( sampledImageColorSampleCounts_ )
52653       , sampledImageIntegerSampleCounts( sampledImageIntegerSampleCounts_ )
52654       , sampledImageDepthSampleCounts( sampledImageDepthSampleCounts_ )
52655       , sampledImageStencilSampleCounts( sampledImageStencilSampleCounts_ )
52656       , storageImageSampleCounts( storageImageSampleCounts_ )
52657       , maxSampleMaskWords( maxSampleMaskWords_ )
52658       , timestampComputeAndGraphics( timestampComputeAndGraphics_ )
52659       , timestampPeriod( timestampPeriod_ )
52660       , maxClipDistances( maxClipDistances_ )
52661       , maxCullDistances( maxCullDistances_ )
52662       , maxCombinedClipAndCullDistances( maxCombinedClipAndCullDistances_ )
52663       , discreteQueuePriorities( discreteQueuePriorities_ )
52664       , pointSizeRange( pointSizeRange_ )
52665       , lineWidthRange( lineWidthRange_ )
52666       , pointSizeGranularity( pointSizeGranularity_ )
52667       , lineWidthGranularity( lineWidthGranularity_ )
52668       , strictLines( strictLines_ )
52669       , standardSampleLocations( standardSampleLocations_ )
52670       , optimalBufferCopyOffsetAlignment( optimalBufferCopyOffsetAlignment_ )
52671       , optimalBufferCopyRowPitchAlignment( optimalBufferCopyRowPitchAlignment_ )
52672       , nonCoherentAtomSize( nonCoherentAtomSize_ )
52673     {}
52674 
52675     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLimits( PhysicalDeviceLimits const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52676 
PhysicalDeviceLimitsVULKAN_HPP_NAMESPACE::PhysicalDeviceLimits52677     PhysicalDeviceLimits( VkPhysicalDeviceLimits const & rhs ) VULKAN_HPP_NOEXCEPT
52678       : PhysicalDeviceLimits( *reinterpret_cast<PhysicalDeviceLimits const *>( &rhs ) )
52679     {}
52680 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
52681 
52682     PhysicalDeviceLimits & operator=( PhysicalDeviceLimits const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52683 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits52684     PhysicalDeviceLimits & operator=( VkPhysicalDeviceLimits const & rhs ) VULKAN_HPP_NOEXCEPT
52685     {
52686       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits const *>( &rhs );
52687       return *this;
52688     }
52689 
operator VkPhysicalDeviceLimits const&VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits52690     explicit operator VkPhysicalDeviceLimits const &() const VULKAN_HPP_NOEXCEPT
52691     {
52692       return *reinterpret_cast<const VkPhysicalDeviceLimits *>( this );
52693     }
52694 
operator VkPhysicalDeviceLimits&VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits52695     explicit operator VkPhysicalDeviceLimits &() VULKAN_HPP_NOEXCEPT
52696     {
52697       return *reinterpret_cast<VkPhysicalDeviceLimits *>( this );
52698     }
52699 
52700 #if 14 <= VULKAN_HPP_CPP_VERSION
52701     auto
52702 #else
52703     std::tuple<uint32_t const &,
52704                uint32_t const &,
52705                uint32_t const &,
52706                uint32_t const &,
52707                uint32_t const &,
52708                uint32_t const &,
52709                uint32_t const &,
52710                uint32_t const &,
52711                uint32_t const &,
52712                uint32_t const &,
52713                uint32_t const &,
52714                VULKAN_HPP_NAMESPACE::DeviceSize const &,
52715                VULKAN_HPP_NAMESPACE::DeviceSize const &,
52716                uint32_t const &,
52717                uint32_t const &,
52718                uint32_t const &,
52719                uint32_t const &,
52720                uint32_t const &,
52721                uint32_t const &,
52722                uint32_t const &,
52723                uint32_t const &,
52724                uint32_t const &,
52725                uint32_t const &,
52726                uint32_t const &,
52727                uint32_t const &,
52728                uint32_t const &,
52729                uint32_t const &,
52730                uint32_t const &,
52731                uint32_t const &,
52732                uint32_t const &,
52733                uint32_t const &,
52734                uint32_t const &,
52735                uint32_t const &,
52736                uint32_t const &,
52737                uint32_t const &,
52738                uint32_t const &,
52739                uint32_t const &,
52740                uint32_t const &,
52741                uint32_t const &,
52742                uint32_t const &,
52743                uint32_t const &,
52744                uint32_t const &,
52745                uint32_t const &,
52746                uint32_t const &,
52747                uint32_t const &,
52748                uint32_t const &,
52749                uint32_t const &,
52750                uint32_t const &,
52751                uint32_t const &,
52752                uint32_t const &,
52753                uint32_t const &,
52754                uint32_t const &,
52755                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> const &,
52756                uint32_t const &,
52757                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> const &,
52758                uint32_t const &,
52759                uint32_t const &,
52760                uint32_t const &,
52761                uint32_t const &,
52762                uint32_t const &,
52763                float const &,
52764                float const &,
52765                uint32_t const &,
52766                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 2> const &,
52767                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 2> const &,
52768                uint32_t const &,
52769                size_t const &,
52770                VULKAN_HPP_NAMESPACE::DeviceSize const &,
52771                VULKAN_HPP_NAMESPACE::DeviceSize const &,
52772                VULKAN_HPP_NAMESPACE::DeviceSize const &,
52773                int32_t const &,
52774                uint32_t const &,
52775                int32_t const &,
52776                uint32_t const &,
52777                float const &,
52778                float const &,
52779                uint32_t const &,
52780                uint32_t const &,
52781                uint32_t const &,
52782                uint32_t const &,
52783                VULKAN_HPP_NAMESPACE::SampleCountFlags const &,
52784                VULKAN_HPP_NAMESPACE::SampleCountFlags const &,
52785                VULKAN_HPP_NAMESPACE::SampleCountFlags const &,
52786                VULKAN_HPP_NAMESPACE::SampleCountFlags const &,
52787                uint32_t const &,
52788                VULKAN_HPP_NAMESPACE::SampleCountFlags const &,
52789                VULKAN_HPP_NAMESPACE::SampleCountFlags const &,
52790                VULKAN_HPP_NAMESPACE::SampleCountFlags const &,
52791                VULKAN_HPP_NAMESPACE::SampleCountFlags const &,
52792                VULKAN_HPP_NAMESPACE::SampleCountFlags const &,
52793                uint32_t const &,
52794                VULKAN_HPP_NAMESPACE::Bool32 const &,
52795                float const &,
52796                uint32_t const &,
52797                uint32_t const &,
52798                uint32_t const &,
52799                uint32_t const &,
52800                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 2> const &,
52801                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 2> const &,
52802                float const &,
52803                float const &,
52804                VULKAN_HPP_NAMESPACE::Bool32 const &,
52805                VULKAN_HPP_NAMESPACE::Bool32 const &,
52806                VULKAN_HPP_NAMESPACE::DeviceSize const &,
52807                VULKAN_HPP_NAMESPACE::DeviceSize const &,
52808                VULKAN_HPP_NAMESPACE::DeviceSize const &>
52809 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceLimits52810       reflect() const VULKAN_HPP_NOEXCEPT
52811     {
52812       return std::tie( maxImageDimension1D,
52813                        maxImageDimension2D,
52814                        maxImageDimension3D,
52815                        maxImageDimensionCube,
52816                        maxImageArrayLayers,
52817                        maxTexelBufferElements,
52818                        maxUniformBufferRange,
52819                        maxStorageBufferRange,
52820                        maxPushConstantsSize,
52821                        maxMemoryAllocationCount,
52822                        maxSamplerAllocationCount,
52823                        bufferImageGranularity,
52824                        sparseAddressSpaceSize,
52825                        maxBoundDescriptorSets,
52826                        maxPerStageDescriptorSamplers,
52827                        maxPerStageDescriptorUniformBuffers,
52828                        maxPerStageDescriptorStorageBuffers,
52829                        maxPerStageDescriptorSampledImages,
52830                        maxPerStageDescriptorStorageImages,
52831                        maxPerStageDescriptorInputAttachments,
52832                        maxPerStageResources,
52833                        maxDescriptorSetSamplers,
52834                        maxDescriptorSetUniformBuffers,
52835                        maxDescriptorSetUniformBuffersDynamic,
52836                        maxDescriptorSetStorageBuffers,
52837                        maxDescriptorSetStorageBuffersDynamic,
52838                        maxDescriptorSetSampledImages,
52839                        maxDescriptorSetStorageImages,
52840                        maxDescriptorSetInputAttachments,
52841                        maxVertexInputAttributes,
52842                        maxVertexInputBindings,
52843                        maxVertexInputAttributeOffset,
52844                        maxVertexInputBindingStride,
52845                        maxVertexOutputComponents,
52846                        maxTessellationGenerationLevel,
52847                        maxTessellationPatchSize,
52848                        maxTessellationControlPerVertexInputComponents,
52849                        maxTessellationControlPerVertexOutputComponents,
52850                        maxTessellationControlPerPatchOutputComponents,
52851                        maxTessellationControlTotalOutputComponents,
52852                        maxTessellationEvaluationInputComponents,
52853                        maxTessellationEvaluationOutputComponents,
52854                        maxGeometryShaderInvocations,
52855                        maxGeometryInputComponents,
52856                        maxGeometryOutputComponents,
52857                        maxGeometryOutputVertices,
52858                        maxGeometryTotalOutputComponents,
52859                        maxFragmentInputComponents,
52860                        maxFragmentOutputAttachments,
52861                        maxFragmentDualSrcAttachments,
52862                        maxFragmentCombinedOutputResources,
52863                        maxComputeSharedMemorySize,
52864                        maxComputeWorkGroupCount,
52865                        maxComputeWorkGroupInvocations,
52866                        maxComputeWorkGroupSize,
52867                        subPixelPrecisionBits,
52868                        subTexelPrecisionBits,
52869                        mipmapPrecisionBits,
52870                        maxDrawIndexedIndexValue,
52871                        maxDrawIndirectCount,
52872                        maxSamplerLodBias,
52873                        maxSamplerAnisotropy,
52874                        maxViewports,
52875                        maxViewportDimensions,
52876                        viewportBoundsRange,
52877                        viewportSubPixelBits,
52878                        minMemoryMapAlignment,
52879                        minTexelBufferOffsetAlignment,
52880                        minUniformBufferOffsetAlignment,
52881                        minStorageBufferOffsetAlignment,
52882                        minTexelOffset,
52883                        maxTexelOffset,
52884                        minTexelGatherOffset,
52885                        maxTexelGatherOffset,
52886                        minInterpolationOffset,
52887                        maxInterpolationOffset,
52888                        subPixelInterpolationOffsetBits,
52889                        maxFramebufferWidth,
52890                        maxFramebufferHeight,
52891                        maxFramebufferLayers,
52892                        framebufferColorSampleCounts,
52893                        framebufferDepthSampleCounts,
52894                        framebufferStencilSampleCounts,
52895                        framebufferNoAttachmentsSampleCounts,
52896                        maxColorAttachments,
52897                        sampledImageColorSampleCounts,
52898                        sampledImageIntegerSampleCounts,
52899                        sampledImageDepthSampleCounts,
52900                        sampledImageStencilSampleCounts,
52901                        storageImageSampleCounts,
52902                        maxSampleMaskWords,
52903                        timestampComputeAndGraphics,
52904                        timestampPeriod,
52905                        maxClipDistances,
52906                        maxCullDistances,
52907                        maxCombinedClipAndCullDistances,
52908                        discreteQueuePriorities,
52909                        pointSizeRange,
52910                        lineWidthRange,
52911                        pointSizeGranularity,
52912                        lineWidthGranularity,
52913                        strictLines,
52914                        standardSampleLocations,
52915                        optimalBufferCopyOffsetAlignment,
52916                        optimalBufferCopyRowPitchAlignment,
52917                        nonCoherentAtomSize );
52918     }
52919 
52920 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
52921     auto operator<=>( PhysicalDeviceLimits const & ) const = default;
52922 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits52923     bool operator==( PhysicalDeviceLimits const & rhs ) const VULKAN_HPP_NOEXCEPT
52924     {
52925       return this->reflect() == rhs.reflect();
52926     }
52927 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits52928     bool operator!=( PhysicalDeviceLimits const & rhs ) const VULKAN_HPP_NOEXCEPT
52929     {
52930       return this->reflect() != rhs.reflect();
52931     }
52932 #endif
52933 
52934   public:
52935     uint32_t                                          maxImageDimension1D                             = {};
52936     uint32_t                                          maxImageDimension2D                             = {};
52937     uint32_t                                          maxImageDimension3D                             = {};
52938     uint32_t                                          maxImageDimensionCube                           = {};
52939     uint32_t                                          maxImageArrayLayers                             = {};
52940     uint32_t                                          maxTexelBufferElements                          = {};
52941     uint32_t                                          maxUniformBufferRange                           = {};
52942     uint32_t                                          maxStorageBufferRange                           = {};
52943     uint32_t                                          maxPushConstantsSize                            = {};
52944     uint32_t                                          maxMemoryAllocationCount                        = {};
52945     uint32_t                                          maxSamplerAllocationCount                       = {};
52946     VULKAN_HPP_NAMESPACE::DeviceSize                  bufferImageGranularity                          = {};
52947     VULKAN_HPP_NAMESPACE::DeviceSize                  sparseAddressSpaceSize                          = {};
52948     uint32_t                                          maxBoundDescriptorSets                          = {};
52949     uint32_t                                          maxPerStageDescriptorSamplers                   = {};
52950     uint32_t                                          maxPerStageDescriptorUniformBuffers             = {};
52951     uint32_t                                          maxPerStageDescriptorStorageBuffers             = {};
52952     uint32_t                                          maxPerStageDescriptorSampledImages              = {};
52953     uint32_t                                          maxPerStageDescriptorStorageImages              = {};
52954     uint32_t                                          maxPerStageDescriptorInputAttachments           = {};
52955     uint32_t                                          maxPerStageResources                            = {};
52956     uint32_t                                          maxDescriptorSetSamplers                        = {};
52957     uint32_t                                          maxDescriptorSetUniformBuffers                  = {};
52958     uint32_t                                          maxDescriptorSetUniformBuffersDynamic           = {};
52959     uint32_t                                          maxDescriptorSetStorageBuffers                  = {};
52960     uint32_t                                          maxDescriptorSetStorageBuffersDynamic           = {};
52961     uint32_t                                          maxDescriptorSetSampledImages                   = {};
52962     uint32_t                                          maxDescriptorSetStorageImages                   = {};
52963     uint32_t                                          maxDescriptorSetInputAttachments                = {};
52964     uint32_t                                          maxVertexInputAttributes                        = {};
52965     uint32_t                                          maxVertexInputBindings                          = {};
52966     uint32_t                                          maxVertexInputAttributeOffset                   = {};
52967     uint32_t                                          maxVertexInputBindingStride                     = {};
52968     uint32_t                                          maxVertexOutputComponents                       = {};
52969     uint32_t                                          maxTessellationGenerationLevel                  = {};
52970     uint32_t                                          maxTessellationPatchSize                        = {};
52971     uint32_t                                          maxTessellationControlPerVertexInputComponents  = {};
52972     uint32_t                                          maxTessellationControlPerVertexOutputComponents = {};
52973     uint32_t                                          maxTessellationControlPerPatchOutputComponents  = {};
52974     uint32_t                                          maxTessellationControlTotalOutputComponents     = {};
52975     uint32_t                                          maxTessellationEvaluationInputComponents        = {};
52976     uint32_t                                          maxTessellationEvaluationOutputComponents       = {};
52977     uint32_t                                          maxGeometryShaderInvocations                    = {};
52978     uint32_t                                          maxGeometryInputComponents                      = {};
52979     uint32_t                                          maxGeometryOutputComponents                     = {};
52980     uint32_t                                          maxGeometryOutputVertices                       = {};
52981     uint32_t                                          maxGeometryTotalOutputComponents                = {};
52982     uint32_t                                          maxFragmentInputComponents                      = {};
52983     uint32_t                                          maxFragmentOutputAttachments                    = {};
52984     uint32_t                                          maxFragmentDualSrcAttachments                   = {};
52985     uint32_t                                          maxFragmentCombinedOutputResources              = {};
52986     uint32_t                                          maxComputeSharedMemorySize                      = {};
52987     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> maxComputeWorkGroupCount                        = {};
52988     uint32_t                                          maxComputeWorkGroupInvocations                  = {};
52989     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> maxComputeWorkGroupSize                         = {};
52990     uint32_t                                          subPixelPrecisionBits                           = {};
52991     uint32_t                                          subTexelPrecisionBits                           = {};
52992     uint32_t                                          mipmapPrecisionBits                             = {};
52993     uint32_t                                          maxDrawIndexedIndexValue                        = {};
52994     uint32_t                                          maxDrawIndirectCount                            = {};
52995     float                                             maxSamplerLodBias                               = {};
52996     float                                             maxSamplerAnisotropy                            = {};
52997     uint32_t                                          maxViewports                                    = {};
52998     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 2> maxViewportDimensions                           = {};
52999     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 2>    viewportBoundsRange                             = {};
53000     uint32_t                                          viewportSubPixelBits                            = {};
53001     size_t                                            minMemoryMapAlignment                           = {};
53002     VULKAN_HPP_NAMESPACE::DeviceSize                  minTexelBufferOffsetAlignment                   = {};
53003     VULKAN_HPP_NAMESPACE::DeviceSize                  minUniformBufferOffsetAlignment                 = {};
53004     VULKAN_HPP_NAMESPACE::DeviceSize                  minStorageBufferOffsetAlignment                 = {};
53005     int32_t                                           minTexelOffset                                  = {};
53006     uint32_t                                          maxTexelOffset                                  = {};
53007     int32_t                                           minTexelGatherOffset                            = {};
53008     uint32_t                                          maxTexelGatherOffset                            = {};
53009     float                                             minInterpolationOffset                          = {};
53010     float                                             maxInterpolationOffset                          = {};
53011     uint32_t                                          subPixelInterpolationOffsetBits                 = {};
53012     uint32_t                                          maxFramebufferWidth                             = {};
53013     uint32_t                                          maxFramebufferHeight                            = {};
53014     uint32_t                                          maxFramebufferLayers                            = {};
53015     VULKAN_HPP_NAMESPACE::SampleCountFlags            framebufferColorSampleCounts                    = {};
53016     VULKAN_HPP_NAMESPACE::SampleCountFlags            framebufferDepthSampleCounts                    = {};
53017     VULKAN_HPP_NAMESPACE::SampleCountFlags            framebufferStencilSampleCounts                  = {};
53018     VULKAN_HPP_NAMESPACE::SampleCountFlags            framebufferNoAttachmentsSampleCounts            = {};
53019     uint32_t                                          maxColorAttachments                             = {};
53020     VULKAN_HPP_NAMESPACE::SampleCountFlags            sampledImageColorSampleCounts                   = {};
53021     VULKAN_HPP_NAMESPACE::SampleCountFlags            sampledImageIntegerSampleCounts                 = {};
53022     VULKAN_HPP_NAMESPACE::SampleCountFlags            sampledImageDepthSampleCounts                   = {};
53023     VULKAN_HPP_NAMESPACE::SampleCountFlags            sampledImageStencilSampleCounts                 = {};
53024     VULKAN_HPP_NAMESPACE::SampleCountFlags            storageImageSampleCounts                        = {};
53025     uint32_t                                          maxSampleMaskWords                              = {};
53026     VULKAN_HPP_NAMESPACE::Bool32                      timestampComputeAndGraphics                     = {};
53027     float                                             timestampPeriod                                 = {};
53028     uint32_t                                          maxClipDistances                                = {};
53029     uint32_t                                          maxCullDistances                                = {};
53030     uint32_t                                          maxCombinedClipAndCullDistances                 = {};
53031     uint32_t                                          discreteQueuePriorities                         = {};
53032     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 2>    pointSizeRange                                  = {};
53033     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 2>    lineWidthRange                                  = {};
53034     float                                             pointSizeGranularity                            = {};
53035     float                                             lineWidthGranularity                            = {};
53036     VULKAN_HPP_NAMESPACE::Bool32                      strictLines                                     = {};
53037     VULKAN_HPP_NAMESPACE::Bool32                      standardSampleLocations                         = {};
53038     VULKAN_HPP_NAMESPACE::DeviceSize                  optimalBufferCopyOffsetAlignment                = {};
53039     VULKAN_HPP_NAMESPACE::DeviceSize                  optimalBufferCopyRowPitchAlignment              = {};
53040     VULKAN_HPP_NAMESPACE::DeviceSize                  nonCoherentAtomSize                             = {};
53041   };
53042   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits ) == sizeof( VkPhysicalDeviceLimits ),
53043                             "struct and wrapper have different size!" );
53044   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits>::value,
53045                             "struct wrapper is not a standard layout!" );
53046   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits>::value,
53047                             "PhysicalDeviceLimits is not nothrow_move_constructible!" );
53048 
53049   struct PhysicalDeviceLineRasterizationFeaturesEXT
53050   {
53051     using NativeType = VkPhysicalDeviceLineRasterizationFeaturesEXT;
53052 
53053     static const bool                                  allowDuplicate = false;
53054     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
53055       StructureType::ePhysicalDeviceLineRasterizationFeaturesEXT;
53056 
53057 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceLineRasterizationFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT53058     VULKAN_HPP_CONSTEXPR PhysicalDeviceLineRasterizationFeaturesEXT(
53059       VULKAN_HPP_NAMESPACE::Bool32 rectangularLines_         = {},
53060       VULKAN_HPP_NAMESPACE::Bool32 bresenhamLines_           = {},
53061       VULKAN_HPP_NAMESPACE::Bool32 smoothLines_              = {},
53062       VULKAN_HPP_NAMESPACE::Bool32 stippledRectangularLines_ = {},
53063       VULKAN_HPP_NAMESPACE::Bool32 stippledBresenhamLines_   = {},
53064       VULKAN_HPP_NAMESPACE::Bool32 stippledSmoothLines_      = {} ) VULKAN_HPP_NOEXCEPT
53065       : rectangularLines( rectangularLines_ )
53066       , bresenhamLines( bresenhamLines_ )
53067       , smoothLines( smoothLines_ )
53068       , stippledRectangularLines( stippledRectangularLines_ )
53069       , stippledBresenhamLines( stippledBresenhamLines_ )
53070       , stippledSmoothLines( stippledSmoothLines_ )
53071     {}
53072 
53073     VULKAN_HPP_CONSTEXPR PhysicalDeviceLineRasterizationFeaturesEXT(
53074       PhysicalDeviceLineRasterizationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53075 
PhysicalDeviceLineRasterizationFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT53076     PhysicalDeviceLineRasterizationFeaturesEXT( VkPhysicalDeviceLineRasterizationFeaturesEXT const & rhs )
53077       VULKAN_HPP_NOEXCEPT
53078       : PhysicalDeviceLineRasterizationFeaturesEXT(
53079           *reinterpret_cast<PhysicalDeviceLineRasterizationFeaturesEXT const *>( &rhs ) )
53080     {}
53081 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
53082 
53083     PhysicalDeviceLineRasterizationFeaturesEXT &
53084       operator=( PhysicalDeviceLineRasterizationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53085 
53086     PhysicalDeviceLineRasterizationFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT53087       operator=( VkPhysicalDeviceLineRasterizationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
53088     {
53089       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT const *>( &rhs );
53090       return *this;
53091     }
53092 
53093 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT53094     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
53095     {
53096       pNext = pNext_;
53097       return *this;
53098     }
53099 
53100     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeaturesEXT &
setRectangularLinesVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT53101                             setRectangularLines( VULKAN_HPP_NAMESPACE::Bool32 rectangularLines_ ) VULKAN_HPP_NOEXCEPT
53102     {
53103       rectangularLines = rectangularLines_;
53104       return *this;
53105     }
53106 
53107     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeaturesEXT &
setBresenhamLinesVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT53108                             setBresenhamLines( VULKAN_HPP_NAMESPACE::Bool32 bresenhamLines_ ) VULKAN_HPP_NOEXCEPT
53109     {
53110       bresenhamLines = bresenhamLines_;
53111       return *this;
53112     }
53113 
53114     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeaturesEXT &
setSmoothLinesVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT53115                             setSmoothLines( VULKAN_HPP_NAMESPACE::Bool32 smoothLines_ ) VULKAN_HPP_NOEXCEPT
53116     {
53117       smoothLines = smoothLines_;
53118       return *this;
53119     }
53120 
53121     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeaturesEXT &
setStippledRectangularLinesVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT53122       setStippledRectangularLines( VULKAN_HPP_NAMESPACE::Bool32 stippledRectangularLines_ ) VULKAN_HPP_NOEXCEPT
53123     {
53124       stippledRectangularLines = stippledRectangularLines_;
53125       return *this;
53126     }
53127 
53128     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeaturesEXT &
setStippledBresenhamLinesVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT53129       setStippledBresenhamLines( VULKAN_HPP_NAMESPACE::Bool32 stippledBresenhamLines_ ) VULKAN_HPP_NOEXCEPT
53130     {
53131       stippledBresenhamLines = stippledBresenhamLines_;
53132       return *this;
53133     }
53134 
53135     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeaturesEXT &
setStippledSmoothLinesVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT53136       setStippledSmoothLines( VULKAN_HPP_NAMESPACE::Bool32 stippledSmoothLines_ ) VULKAN_HPP_NOEXCEPT
53137     {
53138       stippledSmoothLines = stippledSmoothLines_;
53139       return *this;
53140     }
53141 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
53142 
operator VkPhysicalDeviceLineRasterizationFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT53143     explicit operator VkPhysicalDeviceLineRasterizationFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
53144     {
53145       return *reinterpret_cast<const VkPhysicalDeviceLineRasterizationFeaturesEXT *>( this );
53146     }
53147 
operator VkPhysicalDeviceLineRasterizationFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT53148     explicit operator VkPhysicalDeviceLineRasterizationFeaturesEXT &() VULKAN_HPP_NOEXCEPT
53149     {
53150       return *reinterpret_cast<VkPhysicalDeviceLineRasterizationFeaturesEXT *>( this );
53151     }
53152 
53153 #if 14 <= VULKAN_HPP_CPP_VERSION
53154     auto
53155 #else
53156     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
53157                void * const &,
53158                VULKAN_HPP_NAMESPACE::Bool32 const &,
53159                VULKAN_HPP_NAMESPACE::Bool32 const &,
53160                VULKAN_HPP_NAMESPACE::Bool32 const &,
53161                VULKAN_HPP_NAMESPACE::Bool32 const &,
53162                VULKAN_HPP_NAMESPACE::Bool32 const &,
53163                VULKAN_HPP_NAMESPACE::Bool32 const &>
53164 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT53165       reflect() const VULKAN_HPP_NOEXCEPT
53166     {
53167       return std::tie( sType,
53168                        pNext,
53169                        rectangularLines,
53170                        bresenhamLines,
53171                        smoothLines,
53172                        stippledRectangularLines,
53173                        stippledBresenhamLines,
53174                        stippledSmoothLines );
53175     }
53176 
53177 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
53178     auto operator<=>( PhysicalDeviceLineRasterizationFeaturesEXT const & ) const = default;
53179 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT53180     bool operator==( PhysicalDeviceLineRasterizationFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53181     {
53182       return this->reflect() == rhs.reflect();
53183     }
53184 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT53185     bool operator!=( PhysicalDeviceLineRasterizationFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53186     {
53187       return this->reflect() != rhs.reflect();
53188     }
53189 #endif
53190 
53191   public:
53192     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::ePhysicalDeviceLineRasterizationFeaturesEXT;
53193     void *                              pNext            = {};
53194     VULKAN_HPP_NAMESPACE::Bool32        rectangularLines = {};
53195     VULKAN_HPP_NAMESPACE::Bool32        bresenhamLines   = {};
53196     VULKAN_HPP_NAMESPACE::Bool32        smoothLines      = {};
53197     VULKAN_HPP_NAMESPACE::Bool32        stippledRectangularLines = {};
53198     VULKAN_HPP_NAMESPACE::Bool32        stippledBresenhamLines   = {};
53199     VULKAN_HPP_NAMESPACE::Bool32        stippledSmoothLines      = {};
53200   };
53201   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT ) ==
53202                               sizeof( VkPhysicalDeviceLineRasterizationFeaturesEXT ),
53203                             "struct and wrapper have different size!" );
53204   VULKAN_HPP_STATIC_ASSERT(
53205     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT>::value,
53206     "struct wrapper is not a standard layout!" );
53207   VULKAN_HPP_STATIC_ASSERT(
53208     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT>::value,
53209     "PhysicalDeviceLineRasterizationFeaturesEXT is not nothrow_move_constructible!" );
53210 
53211   template <>
53212   struct CppType<StructureType, StructureType::ePhysicalDeviceLineRasterizationFeaturesEXT>
53213   {
53214     using Type = PhysicalDeviceLineRasterizationFeaturesEXT;
53215   };
53216 
53217   struct PhysicalDeviceLineRasterizationPropertiesEXT
53218   {
53219     using NativeType = VkPhysicalDeviceLineRasterizationPropertiesEXT;
53220 
53221     static const bool                                  allowDuplicate = false;
53222     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
53223       StructureType::ePhysicalDeviceLineRasterizationPropertiesEXT;
53224 
53225 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
53226     VULKAN_HPP_CONSTEXPR
PhysicalDeviceLineRasterizationPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationPropertiesEXT53227       PhysicalDeviceLineRasterizationPropertiesEXT( uint32_t lineSubPixelPrecisionBits_ = {} ) VULKAN_HPP_NOEXCEPT
53228       : lineSubPixelPrecisionBits( lineSubPixelPrecisionBits_ )
53229     {}
53230 
53231     VULKAN_HPP_CONSTEXPR PhysicalDeviceLineRasterizationPropertiesEXT(
53232       PhysicalDeviceLineRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53233 
PhysicalDeviceLineRasterizationPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationPropertiesEXT53234     PhysicalDeviceLineRasterizationPropertiesEXT( VkPhysicalDeviceLineRasterizationPropertiesEXT const & rhs )
53235       VULKAN_HPP_NOEXCEPT
53236       : PhysicalDeviceLineRasterizationPropertiesEXT(
53237           *reinterpret_cast<PhysicalDeviceLineRasterizationPropertiesEXT const *>( &rhs ) )
53238     {}
53239 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
53240 
53241     PhysicalDeviceLineRasterizationPropertiesEXT &
53242       operator=( PhysicalDeviceLineRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53243 
53244     PhysicalDeviceLineRasterizationPropertiesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationPropertiesEXT53245       operator=( VkPhysicalDeviceLineRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
53246     {
53247       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationPropertiesEXT const *>( &rhs );
53248       return *this;
53249     }
53250 
operator VkPhysicalDeviceLineRasterizationPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationPropertiesEXT53251     explicit operator VkPhysicalDeviceLineRasterizationPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
53252     {
53253       return *reinterpret_cast<const VkPhysicalDeviceLineRasterizationPropertiesEXT *>( this );
53254     }
53255 
operator VkPhysicalDeviceLineRasterizationPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationPropertiesEXT53256     explicit operator VkPhysicalDeviceLineRasterizationPropertiesEXT &() VULKAN_HPP_NOEXCEPT
53257     {
53258       return *reinterpret_cast<VkPhysicalDeviceLineRasterizationPropertiesEXT *>( this );
53259     }
53260 
53261 #if 14 <= VULKAN_HPP_CPP_VERSION
53262     auto
53263 #else
53264     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
53265 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationPropertiesEXT53266       reflect() const VULKAN_HPP_NOEXCEPT
53267     {
53268       return std::tie( sType, pNext, lineSubPixelPrecisionBits );
53269     }
53270 
53271 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
53272     auto operator<=>( PhysicalDeviceLineRasterizationPropertiesEXT const & ) const = default;
53273 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationPropertiesEXT53274     bool operator==( PhysicalDeviceLineRasterizationPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53275     {
53276       return this->reflect() == rhs.reflect();
53277     }
53278 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationPropertiesEXT53279     bool operator!=( PhysicalDeviceLineRasterizationPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53280     {
53281       return this->reflect() != rhs.reflect();
53282     }
53283 #endif
53284 
53285   public:
53286     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceLineRasterizationPropertiesEXT;
53287     void *                              pNext = {};
53288     uint32_t                            lineSubPixelPrecisionBits = {};
53289   };
53290   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationPropertiesEXT ) ==
53291                               sizeof( VkPhysicalDeviceLineRasterizationPropertiesEXT ),
53292                             "struct and wrapper have different size!" );
53293   VULKAN_HPP_STATIC_ASSERT(
53294     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationPropertiesEXT>::value,
53295     "struct wrapper is not a standard layout!" );
53296   VULKAN_HPP_STATIC_ASSERT(
53297     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationPropertiesEXT>::value,
53298     "PhysicalDeviceLineRasterizationPropertiesEXT is not nothrow_move_constructible!" );
53299 
53300   template <>
53301   struct CppType<StructureType, StructureType::ePhysicalDeviceLineRasterizationPropertiesEXT>
53302   {
53303     using Type = PhysicalDeviceLineRasterizationPropertiesEXT;
53304   };
53305 
53306   struct PhysicalDeviceLinearColorAttachmentFeaturesNV
53307   {
53308     using NativeType = VkPhysicalDeviceLinearColorAttachmentFeaturesNV;
53309 
53310     static const bool                                  allowDuplicate = false;
53311     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
53312       StructureType::ePhysicalDeviceLinearColorAttachmentFeaturesNV;
53313 
53314 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceLinearColorAttachmentFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV53315     VULKAN_HPP_CONSTEXPR PhysicalDeviceLinearColorAttachmentFeaturesNV(
53316       VULKAN_HPP_NAMESPACE::Bool32 linearColorAttachment_ = {} ) VULKAN_HPP_NOEXCEPT
53317       : linearColorAttachment( linearColorAttachment_ )
53318     {}
53319 
53320     VULKAN_HPP_CONSTEXPR PhysicalDeviceLinearColorAttachmentFeaturesNV(
53321       PhysicalDeviceLinearColorAttachmentFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53322 
PhysicalDeviceLinearColorAttachmentFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV53323     PhysicalDeviceLinearColorAttachmentFeaturesNV( VkPhysicalDeviceLinearColorAttachmentFeaturesNV const & rhs )
53324       VULKAN_HPP_NOEXCEPT
53325       : PhysicalDeviceLinearColorAttachmentFeaturesNV(
53326           *reinterpret_cast<PhysicalDeviceLinearColorAttachmentFeaturesNV const *>( &rhs ) )
53327     {}
53328 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
53329 
53330     PhysicalDeviceLinearColorAttachmentFeaturesNV &
53331       operator=( PhysicalDeviceLinearColorAttachmentFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53332 
53333     PhysicalDeviceLinearColorAttachmentFeaturesNV &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV53334       operator=( VkPhysicalDeviceLinearColorAttachmentFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
53335     {
53336       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV const *>( &rhs );
53337       return *this;
53338     }
53339 
53340 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
53341     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLinearColorAttachmentFeaturesNV &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV53342                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
53343     {
53344       pNext = pNext_;
53345       return *this;
53346     }
53347 
53348     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLinearColorAttachmentFeaturesNV &
setLinearColorAttachmentVULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV53349       setLinearColorAttachment( VULKAN_HPP_NAMESPACE::Bool32 linearColorAttachment_ ) VULKAN_HPP_NOEXCEPT
53350     {
53351       linearColorAttachment = linearColorAttachment_;
53352       return *this;
53353     }
53354 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
53355 
operator VkPhysicalDeviceLinearColorAttachmentFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV53356     explicit operator VkPhysicalDeviceLinearColorAttachmentFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
53357     {
53358       return *reinterpret_cast<const VkPhysicalDeviceLinearColorAttachmentFeaturesNV *>( this );
53359     }
53360 
operator VkPhysicalDeviceLinearColorAttachmentFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV53361     explicit operator VkPhysicalDeviceLinearColorAttachmentFeaturesNV &() VULKAN_HPP_NOEXCEPT
53362     {
53363       return *reinterpret_cast<VkPhysicalDeviceLinearColorAttachmentFeaturesNV *>( this );
53364     }
53365 
53366 #if 14 <= VULKAN_HPP_CPP_VERSION
53367     auto
53368 #else
53369     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
53370 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV53371       reflect() const VULKAN_HPP_NOEXCEPT
53372     {
53373       return std::tie( sType, pNext, linearColorAttachment );
53374     }
53375 
53376 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
53377     auto operator<=>( PhysicalDeviceLinearColorAttachmentFeaturesNV const & ) const = default;
53378 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV53379     bool operator==( PhysicalDeviceLinearColorAttachmentFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
53380     {
53381       return this->reflect() == rhs.reflect();
53382     }
53383 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV53384     bool operator!=( PhysicalDeviceLinearColorAttachmentFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
53385     {
53386       return this->reflect() != rhs.reflect();
53387     }
53388 #endif
53389 
53390   public:
53391     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceLinearColorAttachmentFeaturesNV;
53392     void *                              pNext = {};
53393     VULKAN_HPP_NAMESPACE::Bool32        linearColorAttachment = {};
53394   };
53395   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV ) ==
53396                               sizeof( VkPhysicalDeviceLinearColorAttachmentFeaturesNV ),
53397                             "struct and wrapper have different size!" );
53398   VULKAN_HPP_STATIC_ASSERT(
53399     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV>::value,
53400     "struct wrapper is not a standard layout!" );
53401   VULKAN_HPP_STATIC_ASSERT(
53402     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV>::value,
53403     "PhysicalDeviceLinearColorAttachmentFeaturesNV is not nothrow_move_constructible!" );
53404 
53405   template <>
53406   struct CppType<StructureType, StructureType::ePhysicalDeviceLinearColorAttachmentFeaturesNV>
53407   {
53408     using Type = PhysicalDeviceLinearColorAttachmentFeaturesNV;
53409   };
53410 
53411   struct PhysicalDeviceMaintenance3Properties
53412   {
53413     using NativeType = VkPhysicalDeviceMaintenance3Properties;
53414 
53415     static const bool                                  allowDuplicate = false;
53416     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
53417       StructureType::ePhysicalDeviceMaintenance3Properties;
53418 
53419 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMaintenance3PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties53420     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance3Properties(
53421       uint32_t                         maxPerSetDescriptors_    = {},
53422       VULKAN_HPP_NAMESPACE::DeviceSize maxMemoryAllocationSize_ = {} ) VULKAN_HPP_NOEXCEPT
53423       : maxPerSetDescriptors( maxPerSetDescriptors_ )
53424       , maxMemoryAllocationSize( maxMemoryAllocationSize_ )
53425     {}
53426 
53427     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance3Properties( PhysicalDeviceMaintenance3Properties const & rhs )
53428       VULKAN_HPP_NOEXCEPT = default;
53429 
PhysicalDeviceMaintenance3PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties53430     PhysicalDeviceMaintenance3Properties( VkPhysicalDeviceMaintenance3Properties const & rhs ) VULKAN_HPP_NOEXCEPT
53431       : PhysicalDeviceMaintenance3Properties( *reinterpret_cast<PhysicalDeviceMaintenance3Properties const *>( &rhs ) )
53432     {}
53433 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
53434 
53435     PhysicalDeviceMaintenance3Properties &
53436       operator=( PhysicalDeviceMaintenance3Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53437 
53438     PhysicalDeviceMaintenance3Properties &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties53439       operator=( VkPhysicalDeviceMaintenance3Properties const & rhs ) VULKAN_HPP_NOEXCEPT
53440     {
53441       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties const *>( &rhs );
53442       return *this;
53443     }
53444 
operator VkPhysicalDeviceMaintenance3Properties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties53445     explicit operator VkPhysicalDeviceMaintenance3Properties const &() const VULKAN_HPP_NOEXCEPT
53446     {
53447       return *reinterpret_cast<const VkPhysicalDeviceMaintenance3Properties *>( this );
53448     }
53449 
operator VkPhysicalDeviceMaintenance3Properties&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties53450     explicit operator VkPhysicalDeviceMaintenance3Properties &() VULKAN_HPP_NOEXCEPT
53451     {
53452       return *reinterpret_cast<VkPhysicalDeviceMaintenance3Properties *>( this );
53453     }
53454 
53455 #if 14 <= VULKAN_HPP_CPP_VERSION
53456     auto
53457 #else
53458     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
53459                void * const &,
53460                uint32_t const &,
53461                VULKAN_HPP_NAMESPACE::DeviceSize const &>
53462 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties53463       reflect() const VULKAN_HPP_NOEXCEPT
53464     {
53465       return std::tie( sType, pNext, maxPerSetDescriptors, maxMemoryAllocationSize );
53466     }
53467 
53468 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
53469     auto operator<=>( PhysicalDeviceMaintenance3Properties const & ) const = default;
53470 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties53471     bool operator==( PhysicalDeviceMaintenance3Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
53472     {
53473       return this->reflect() == rhs.reflect();
53474     }
53475 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties53476     bool operator!=( PhysicalDeviceMaintenance3Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
53477     {
53478       return this->reflect() != rhs.reflect();
53479     }
53480 #endif
53481 
53482   public:
53483     VULKAN_HPP_NAMESPACE::StructureType sType                   = StructureType::ePhysicalDeviceMaintenance3Properties;
53484     void *                              pNext                   = {};
53485     uint32_t                            maxPerSetDescriptors    = {};
53486     VULKAN_HPP_NAMESPACE::DeviceSize    maxMemoryAllocationSize = {};
53487   };
53488   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties ) ==
53489                               sizeof( VkPhysicalDeviceMaintenance3Properties ),
53490                             "struct and wrapper have different size!" );
53491   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties>::value,
53492                             "struct wrapper is not a standard layout!" );
53493   VULKAN_HPP_STATIC_ASSERT(
53494     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties>::value,
53495     "PhysicalDeviceMaintenance3Properties is not nothrow_move_constructible!" );
53496 
53497   template <>
53498   struct CppType<StructureType, StructureType::ePhysicalDeviceMaintenance3Properties>
53499   {
53500     using Type = PhysicalDeviceMaintenance3Properties;
53501   };
53502   using PhysicalDeviceMaintenance3PropertiesKHR = PhysicalDeviceMaintenance3Properties;
53503 
53504   struct PhysicalDeviceMaintenance4FeaturesKHR
53505   {
53506     using NativeType = VkPhysicalDeviceMaintenance4FeaturesKHR;
53507 
53508     static const bool                                  allowDuplicate = false;
53509     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
53510       StructureType::ePhysicalDeviceMaintenance4FeaturesKHR;
53511 
53512 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
53513     VULKAN_HPP_CONSTEXPR
PhysicalDeviceMaintenance4FeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4FeaturesKHR53514       PhysicalDeviceMaintenance4FeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 maintenance4_ = {} ) VULKAN_HPP_NOEXCEPT
53515       : maintenance4( maintenance4_ )
53516     {}
53517 
53518     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance4FeaturesKHR( PhysicalDeviceMaintenance4FeaturesKHR const & rhs )
53519       VULKAN_HPP_NOEXCEPT = default;
53520 
PhysicalDeviceMaintenance4FeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4FeaturesKHR53521     PhysicalDeviceMaintenance4FeaturesKHR( VkPhysicalDeviceMaintenance4FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
53522       : PhysicalDeviceMaintenance4FeaturesKHR(
53523           *reinterpret_cast<PhysicalDeviceMaintenance4FeaturesKHR const *>( &rhs ) )
53524     {}
53525 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
53526 
53527     PhysicalDeviceMaintenance4FeaturesKHR &
53528       operator=( PhysicalDeviceMaintenance4FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53529 
53530     PhysicalDeviceMaintenance4FeaturesKHR &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4FeaturesKHR53531       operator=( VkPhysicalDeviceMaintenance4FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
53532     {
53533       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4FeaturesKHR const *>( &rhs );
53534       return *this;
53535     }
53536 
53537 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4FeaturesKHR53538     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance4FeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
53539     {
53540       pNext = pNext_;
53541       return *this;
53542     }
53543 
53544     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance4FeaturesKHR &
setMaintenance4VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4FeaturesKHR53545                             setMaintenance4( VULKAN_HPP_NAMESPACE::Bool32 maintenance4_ ) VULKAN_HPP_NOEXCEPT
53546     {
53547       maintenance4 = maintenance4_;
53548       return *this;
53549     }
53550 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
53551 
operator VkPhysicalDeviceMaintenance4FeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4FeaturesKHR53552     explicit operator VkPhysicalDeviceMaintenance4FeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
53553     {
53554       return *reinterpret_cast<const VkPhysicalDeviceMaintenance4FeaturesKHR *>( this );
53555     }
53556 
operator VkPhysicalDeviceMaintenance4FeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4FeaturesKHR53557     explicit operator VkPhysicalDeviceMaintenance4FeaturesKHR &() VULKAN_HPP_NOEXCEPT
53558     {
53559       return *reinterpret_cast<VkPhysicalDeviceMaintenance4FeaturesKHR *>( this );
53560     }
53561 
53562 #if 14 <= VULKAN_HPP_CPP_VERSION
53563     auto
53564 #else
53565     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
53566 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4FeaturesKHR53567       reflect() const VULKAN_HPP_NOEXCEPT
53568     {
53569       return std::tie( sType, pNext, maintenance4 );
53570     }
53571 
53572 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
53573     auto operator<=>( PhysicalDeviceMaintenance4FeaturesKHR const & ) const = default;
53574 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4FeaturesKHR53575     bool operator==( PhysicalDeviceMaintenance4FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
53576     {
53577       return this->reflect() == rhs.reflect();
53578     }
53579 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4FeaturesKHR53580     bool operator!=( PhysicalDeviceMaintenance4FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
53581     {
53582       return this->reflect() != rhs.reflect();
53583     }
53584 #endif
53585 
53586   public:
53587     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::ePhysicalDeviceMaintenance4FeaturesKHR;
53588     void *                              pNext        = {};
53589     VULKAN_HPP_NAMESPACE::Bool32        maintenance4 = {};
53590   };
53591   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4FeaturesKHR ) ==
53592                               sizeof( VkPhysicalDeviceMaintenance4FeaturesKHR ),
53593                             "struct and wrapper have different size!" );
53594   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4FeaturesKHR>::value,
53595                             "struct wrapper is not a standard layout!" );
53596   VULKAN_HPP_STATIC_ASSERT(
53597     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4FeaturesKHR>::value,
53598     "PhysicalDeviceMaintenance4FeaturesKHR is not nothrow_move_constructible!" );
53599 
53600   template <>
53601   struct CppType<StructureType, StructureType::ePhysicalDeviceMaintenance4FeaturesKHR>
53602   {
53603     using Type = PhysicalDeviceMaintenance4FeaturesKHR;
53604   };
53605 
53606   struct PhysicalDeviceMaintenance4PropertiesKHR
53607   {
53608     using NativeType = VkPhysicalDeviceMaintenance4PropertiesKHR;
53609 
53610     static const bool                                  allowDuplicate = false;
53611     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
53612       StructureType::ePhysicalDeviceMaintenance4PropertiesKHR;
53613 
53614 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMaintenance4PropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4PropertiesKHR53615     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance4PropertiesKHR( VULKAN_HPP_NAMESPACE::DeviceSize maxBufferSize_ = {} )
53616       VULKAN_HPP_NOEXCEPT : maxBufferSize( maxBufferSize_ )
53617     {}
53618 
53619     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance4PropertiesKHR( PhysicalDeviceMaintenance4PropertiesKHR const & rhs )
53620       VULKAN_HPP_NOEXCEPT = default;
53621 
PhysicalDeviceMaintenance4PropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4PropertiesKHR53622     PhysicalDeviceMaintenance4PropertiesKHR( VkPhysicalDeviceMaintenance4PropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
53623       : PhysicalDeviceMaintenance4PropertiesKHR(
53624           *reinterpret_cast<PhysicalDeviceMaintenance4PropertiesKHR const *>( &rhs ) )
53625     {}
53626 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
53627 
53628     PhysicalDeviceMaintenance4PropertiesKHR &
53629       operator=( PhysicalDeviceMaintenance4PropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53630 
53631     PhysicalDeviceMaintenance4PropertiesKHR &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4PropertiesKHR53632       operator=( VkPhysicalDeviceMaintenance4PropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
53633     {
53634       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4PropertiesKHR const *>( &rhs );
53635       return *this;
53636     }
53637 
operator VkPhysicalDeviceMaintenance4PropertiesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4PropertiesKHR53638     explicit operator VkPhysicalDeviceMaintenance4PropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
53639     {
53640       return *reinterpret_cast<const VkPhysicalDeviceMaintenance4PropertiesKHR *>( this );
53641     }
53642 
operator VkPhysicalDeviceMaintenance4PropertiesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4PropertiesKHR53643     explicit operator VkPhysicalDeviceMaintenance4PropertiesKHR &() VULKAN_HPP_NOEXCEPT
53644     {
53645       return *reinterpret_cast<VkPhysicalDeviceMaintenance4PropertiesKHR *>( this );
53646     }
53647 
53648 #if 14 <= VULKAN_HPP_CPP_VERSION
53649     auto
53650 #else
53651     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
53652 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4PropertiesKHR53653       reflect() const VULKAN_HPP_NOEXCEPT
53654     {
53655       return std::tie( sType, pNext, maxBufferSize );
53656     }
53657 
53658 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
53659     auto operator<=>( PhysicalDeviceMaintenance4PropertiesKHR const & ) const = default;
53660 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4PropertiesKHR53661     bool operator==( PhysicalDeviceMaintenance4PropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
53662     {
53663       return this->reflect() == rhs.reflect();
53664     }
53665 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4PropertiesKHR53666     bool operator!=( PhysicalDeviceMaintenance4PropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
53667     {
53668       return this->reflect() != rhs.reflect();
53669     }
53670 #endif
53671 
53672   public:
53673     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::ePhysicalDeviceMaintenance4PropertiesKHR;
53674     void *                              pNext         = {};
53675     VULKAN_HPP_NAMESPACE::DeviceSize    maxBufferSize = {};
53676   };
53677   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4PropertiesKHR ) ==
53678                               sizeof( VkPhysicalDeviceMaintenance4PropertiesKHR ),
53679                             "struct and wrapper have different size!" );
53680   VULKAN_HPP_STATIC_ASSERT(
53681     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4PropertiesKHR>::value,
53682     "struct wrapper is not a standard layout!" );
53683   VULKAN_HPP_STATIC_ASSERT(
53684     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4PropertiesKHR>::value,
53685     "PhysicalDeviceMaintenance4PropertiesKHR is not nothrow_move_constructible!" );
53686 
53687   template <>
53688   struct CppType<StructureType, StructureType::ePhysicalDeviceMaintenance4PropertiesKHR>
53689   {
53690     using Type = PhysicalDeviceMaintenance4PropertiesKHR;
53691   };
53692 
53693   struct PhysicalDeviceMemoryBudgetPropertiesEXT
53694   {
53695     using NativeType = VkPhysicalDeviceMemoryBudgetPropertiesEXT;
53696 
53697     static const bool                                  allowDuplicate = false;
53698     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
53699       StructureType::ePhysicalDeviceMemoryBudgetPropertiesEXT;
53700 
53701 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMemoryBudgetPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT53702     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryBudgetPropertiesEXT(
53703       std::array<VULKAN_HPP_NAMESPACE::DeviceSize, VK_MAX_MEMORY_HEAPS> const & heapBudget_ = {},
53704       std::array<VULKAN_HPP_NAMESPACE::DeviceSize, VK_MAX_MEMORY_HEAPS> const & heapUsage_  = {} ) VULKAN_HPP_NOEXCEPT
53705       : heapBudget( heapBudget_ )
53706       , heapUsage( heapUsage_ )
53707     {}
53708 
53709     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryBudgetPropertiesEXT(
53710       PhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53711 
PhysicalDeviceMemoryBudgetPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT53712     PhysicalDeviceMemoryBudgetPropertiesEXT( VkPhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
53713       : PhysicalDeviceMemoryBudgetPropertiesEXT(
53714           *reinterpret_cast<PhysicalDeviceMemoryBudgetPropertiesEXT const *>( &rhs ) )
53715     {}
53716 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
53717 
53718     PhysicalDeviceMemoryBudgetPropertiesEXT &
53719       operator=( PhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53720 
53721     PhysicalDeviceMemoryBudgetPropertiesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT53722       operator=( VkPhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
53723     {
53724       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT const *>( &rhs );
53725       return *this;
53726     }
53727 
operator VkPhysicalDeviceMemoryBudgetPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT53728     explicit operator VkPhysicalDeviceMemoryBudgetPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
53729     {
53730       return *reinterpret_cast<const VkPhysicalDeviceMemoryBudgetPropertiesEXT *>( this );
53731     }
53732 
operator VkPhysicalDeviceMemoryBudgetPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT53733     explicit operator VkPhysicalDeviceMemoryBudgetPropertiesEXT &() VULKAN_HPP_NOEXCEPT
53734     {
53735       return *reinterpret_cast<VkPhysicalDeviceMemoryBudgetPropertiesEXT *>( this );
53736     }
53737 
53738 #if 14 <= VULKAN_HPP_CPP_VERSION
53739     auto
53740 #else
53741     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
53742                void * const &,
53743                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::DeviceSize, VK_MAX_MEMORY_HEAPS> const &,
53744                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::DeviceSize, VK_MAX_MEMORY_HEAPS> const &>
53745 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT53746       reflect() const VULKAN_HPP_NOEXCEPT
53747     {
53748       return std::tie( sType, pNext, heapBudget, heapUsage );
53749     }
53750 
53751 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
53752     auto operator<=>( PhysicalDeviceMemoryBudgetPropertiesEXT const & ) const = default;
53753 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT53754     bool operator==( PhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53755     {
53756       return this->reflect() == rhs.reflect();
53757     }
53758 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT53759     bool operator!=( PhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53760     {
53761       return this->reflect() != rhs.reflect();
53762     }
53763 #endif
53764 
53765   public:
53766     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMemoryBudgetPropertiesEXT;
53767     void *                              pNext = {};
53768     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::DeviceSize, VK_MAX_MEMORY_HEAPS> heapBudget = {};
53769     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::DeviceSize, VK_MAX_MEMORY_HEAPS> heapUsage  = {};
53770   };
53771   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT ) ==
53772                               sizeof( VkPhysicalDeviceMemoryBudgetPropertiesEXT ),
53773                             "struct and wrapper have different size!" );
53774   VULKAN_HPP_STATIC_ASSERT(
53775     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT>::value,
53776     "struct wrapper is not a standard layout!" );
53777   VULKAN_HPP_STATIC_ASSERT(
53778     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT>::value,
53779     "PhysicalDeviceMemoryBudgetPropertiesEXT is not nothrow_move_constructible!" );
53780 
53781   template <>
53782   struct CppType<StructureType, StructureType::ePhysicalDeviceMemoryBudgetPropertiesEXT>
53783   {
53784     using Type = PhysicalDeviceMemoryBudgetPropertiesEXT;
53785   };
53786 
53787   struct PhysicalDeviceMemoryPriorityFeaturesEXT
53788   {
53789     using NativeType = VkPhysicalDeviceMemoryPriorityFeaturesEXT;
53790 
53791     static const bool                                  allowDuplicate = false;
53792     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
53793       StructureType::ePhysicalDeviceMemoryPriorityFeaturesEXT;
53794 
53795 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
53796     VULKAN_HPP_CONSTEXPR
PhysicalDeviceMemoryPriorityFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT53797       PhysicalDeviceMemoryPriorityFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 memoryPriority_ = {} ) VULKAN_HPP_NOEXCEPT
53798       : memoryPriority( memoryPriority_ )
53799     {}
53800 
53801     VULKAN_HPP_CONSTEXPR PhysicalDeviceMemoryPriorityFeaturesEXT( PhysicalDeviceMemoryPriorityFeaturesEXT const & rhs )
53802       VULKAN_HPP_NOEXCEPT = default;
53803 
PhysicalDeviceMemoryPriorityFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT53804     PhysicalDeviceMemoryPriorityFeaturesEXT( VkPhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
53805       : PhysicalDeviceMemoryPriorityFeaturesEXT(
53806           *reinterpret_cast<PhysicalDeviceMemoryPriorityFeaturesEXT const *>( &rhs ) )
53807     {}
53808 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
53809 
53810     PhysicalDeviceMemoryPriorityFeaturesEXT &
53811       operator=( PhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53812 
53813     PhysicalDeviceMemoryPriorityFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT53814       operator=( VkPhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
53815     {
53816       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT const *>( &rhs );
53817       return *this;
53818     }
53819 
53820 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT53821     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryPriorityFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
53822     {
53823       pNext = pNext_;
53824       return *this;
53825     }
53826 
53827     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryPriorityFeaturesEXT &
setMemoryPriorityVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT53828                             setMemoryPriority( VULKAN_HPP_NAMESPACE::Bool32 memoryPriority_ ) VULKAN_HPP_NOEXCEPT
53829     {
53830       memoryPriority = memoryPriority_;
53831       return *this;
53832     }
53833 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
53834 
operator VkPhysicalDeviceMemoryPriorityFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT53835     explicit operator VkPhysicalDeviceMemoryPriorityFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
53836     {
53837       return *reinterpret_cast<const VkPhysicalDeviceMemoryPriorityFeaturesEXT *>( this );
53838     }
53839 
operator VkPhysicalDeviceMemoryPriorityFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT53840     explicit operator VkPhysicalDeviceMemoryPriorityFeaturesEXT &() VULKAN_HPP_NOEXCEPT
53841     {
53842       return *reinterpret_cast<VkPhysicalDeviceMemoryPriorityFeaturesEXT *>( this );
53843     }
53844 
53845 #if 14 <= VULKAN_HPP_CPP_VERSION
53846     auto
53847 #else
53848     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
53849 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT53850       reflect() const VULKAN_HPP_NOEXCEPT
53851     {
53852       return std::tie( sType, pNext, memoryPriority );
53853     }
53854 
53855 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
53856     auto operator<=>( PhysicalDeviceMemoryPriorityFeaturesEXT const & ) const = default;
53857 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT53858     bool operator==( PhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53859     {
53860       return this->reflect() == rhs.reflect();
53861     }
53862 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT53863     bool operator!=( PhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53864     {
53865       return this->reflect() != rhs.reflect();
53866     }
53867 #endif
53868 
53869   public:
53870     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::ePhysicalDeviceMemoryPriorityFeaturesEXT;
53871     void *                              pNext          = {};
53872     VULKAN_HPP_NAMESPACE::Bool32        memoryPriority = {};
53873   };
53874   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT ) ==
53875                               sizeof( VkPhysicalDeviceMemoryPriorityFeaturesEXT ),
53876                             "struct and wrapper have different size!" );
53877   VULKAN_HPP_STATIC_ASSERT(
53878     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT>::value,
53879     "struct wrapper is not a standard layout!" );
53880   VULKAN_HPP_STATIC_ASSERT(
53881     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT>::value,
53882     "PhysicalDeviceMemoryPriorityFeaturesEXT is not nothrow_move_constructible!" );
53883 
53884   template <>
53885   struct CppType<StructureType, StructureType::ePhysicalDeviceMemoryPriorityFeaturesEXT>
53886   {
53887     using Type = PhysicalDeviceMemoryPriorityFeaturesEXT;
53888   };
53889 
53890   struct PhysicalDeviceMemoryProperties
53891   {
53892     using NativeType = VkPhysicalDeviceMemoryProperties;
53893 
53894 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMemoryPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties53895     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryProperties(
53896       uint32_t                                                                  memoryTypeCount_ = {},
53897       std::array<VULKAN_HPP_NAMESPACE::MemoryType, VK_MAX_MEMORY_TYPES> const & memoryTypes_     = {},
53898       uint32_t                                                                  memoryHeapCount_ = {},
53899       std::array<VULKAN_HPP_NAMESPACE::MemoryHeap, VK_MAX_MEMORY_HEAPS> const & memoryHeaps_ = {} ) VULKAN_HPP_NOEXCEPT
53900       : memoryTypeCount( memoryTypeCount_ )
53901       , memoryTypes( memoryTypes_ )
53902       , memoryHeapCount( memoryHeapCount_ )
53903       , memoryHeaps( memoryHeaps_ )
53904     {}
53905 
53906     VULKAN_HPP_CONSTEXPR_14
53907       PhysicalDeviceMemoryProperties( PhysicalDeviceMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53908 
PhysicalDeviceMemoryPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties53909     PhysicalDeviceMemoryProperties( VkPhysicalDeviceMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT
53910       : PhysicalDeviceMemoryProperties( *reinterpret_cast<PhysicalDeviceMemoryProperties const *>( &rhs ) )
53911     {}
53912 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
53913 
53914     PhysicalDeviceMemoryProperties &
53915       operator=( PhysicalDeviceMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53916 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties53917     PhysicalDeviceMemoryProperties & operator=( VkPhysicalDeviceMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT
53918     {
53919       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties const *>( &rhs );
53920       return *this;
53921     }
53922 
operator VkPhysicalDeviceMemoryProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties53923     explicit operator VkPhysicalDeviceMemoryProperties const &() const VULKAN_HPP_NOEXCEPT
53924     {
53925       return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties *>( this );
53926     }
53927 
operator VkPhysicalDeviceMemoryProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties53928     explicit operator VkPhysicalDeviceMemoryProperties &() VULKAN_HPP_NOEXCEPT
53929     {
53930       return *reinterpret_cast<VkPhysicalDeviceMemoryProperties *>( this );
53931     }
53932 
53933 #if 14 <= VULKAN_HPP_CPP_VERSION
53934     auto
53935 #else
53936     std::tuple<uint32_t const &,
53937                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::MemoryType, VK_MAX_MEMORY_TYPES> const &,
53938                uint32_t const &,
53939                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::MemoryHeap, VK_MAX_MEMORY_HEAPS> const &>
53940 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties53941       reflect() const VULKAN_HPP_NOEXCEPT
53942     {
53943       return std::tie( memoryTypeCount, memoryTypes, memoryHeapCount, memoryHeaps );
53944     }
53945 
53946 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
53947     auto operator<=>( PhysicalDeviceMemoryProperties const & ) const = default;
53948 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties53949     bool operator==( PhysicalDeviceMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
53950     {
53951       return this->reflect() == rhs.reflect();
53952     }
53953 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties53954     bool operator!=( PhysicalDeviceMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
53955     {
53956       return this->reflect() != rhs.reflect();
53957     }
53958 #endif
53959 
53960   public:
53961     uint32_t                                                                                    memoryTypeCount = {};
53962     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::MemoryType, VK_MAX_MEMORY_TYPES> memoryTypes     = {};
53963     uint32_t                                                                                    memoryHeapCount = {};
53964     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::MemoryHeap, VK_MAX_MEMORY_HEAPS> memoryHeaps     = {};
53965   };
53966   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties ) ==
53967                               sizeof( VkPhysicalDeviceMemoryProperties ),
53968                             "struct and wrapper have different size!" );
53969   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties>::value,
53970                             "struct wrapper is not a standard layout!" );
53971   VULKAN_HPP_STATIC_ASSERT(
53972     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties>::value,
53973     "PhysicalDeviceMemoryProperties is not nothrow_move_constructible!" );
53974 
53975   struct PhysicalDeviceMemoryProperties2
53976   {
53977     using NativeType = VkPhysicalDeviceMemoryProperties2;
53978 
53979     static const bool                                  allowDuplicate = false;
53980     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMemoryProperties2;
53981 
53982 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMemoryProperties2VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties253983     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryProperties2(
53984       VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties memoryProperties_ = {} ) VULKAN_HPP_NOEXCEPT
53985       : memoryProperties( memoryProperties_ )
53986     {}
53987 
53988     VULKAN_HPP_CONSTEXPR_14
53989       PhysicalDeviceMemoryProperties2( PhysicalDeviceMemoryProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53990 
PhysicalDeviceMemoryProperties2VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties253991     PhysicalDeviceMemoryProperties2( VkPhysicalDeviceMemoryProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
53992       : PhysicalDeviceMemoryProperties2( *reinterpret_cast<PhysicalDeviceMemoryProperties2 const *>( &rhs ) )
53993     {}
53994 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
53995 
53996     PhysicalDeviceMemoryProperties2 &
53997       operator=( PhysicalDeviceMemoryProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53998 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties253999     PhysicalDeviceMemoryProperties2 & operator=( VkPhysicalDeviceMemoryProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
54000     {
54001       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 const *>( &rhs );
54002       return *this;
54003     }
54004 
operator VkPhysicalDeviceMemoryProperties2 const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties254005     explicit operator VkPhysicalDeviceMemoryProperties2 const &() const VULKAN_HPP_NOEXCEPT
54006     {
54007       return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties2 *>( this );
54008     }
54009 
operator VkPhysicalDeviceMemoryProperties2&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties254010     explicit operator VkPhysicalDeviceMemoryProperties2 &() VULKAN_HPP_NOEXCEPT
54011     {
54012       return *reinterpret_cast<VkPhysicalDeviceMemoryProperties2 *>( this );
54013     }
54014 
54015 #if 14 <= VULKAN_HPP_CPP_VERSION
54016     auto
54017 #else
54018     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
54019                void * const &,
54020                VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties const &>
54021 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties254022       reflect() const VULKAN_HPP_NOEXCEPT
54023     {
54024       return std::tie( sType, pNext, memoryProperties );
54025     }
54026 
54027 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
54028     auto operator<=>( PhysicalDeviceMemoryProperties2 const & ) const = default;
54029 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties254030     bool operator==( PhysicalDeviceMemoryProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
54031     {
54032       return this->reflect() == rhs.reflect();
54033     }
54034 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties254035     bool operator!=( PhysicalDeviceMemoryProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
54036     {
54037       return this->reflect() != rhs.reflect();
54038     }
54039 #endif
54040 
54041   public:
54042     VULKAN_HPP_NAMESPACE::StructureType                  sType = StructureType::ePhysicalDeviceMemoryProperties2;
54043     void *                                               pNext = {};
54044     VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties memoryProperties = {};
54045   };
54046   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 ) ==
54047                               sizeof( VkPhysicalDeviceMemoryProperties2 ),
54048                             "struct and wrapper have different size!" );
54049   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2>::value,
54050                             "struct wrapper is not a standard layout!" );
54051   VULKAN_HPP_STATIC_ASSERT(
54052     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2>::value,
54053     "PhysicalDeviceMemoryProperties2 is not nothrow_move_constructible!" );
54054 
54055   template <>
54056   struct CppType<StructureType, StructureType::ePhysicalDeviceMemoryProperties2>
54057   {
54058     using Type = PhysicalDeviceMemoryProperties2;
54059   };
54060   using PhysicalDeviceMemoryProperties2KHR = PhysicalDeviceMemoryProperties2;
54061 
54062   struct PhysicalDeviceMeshShaderFeaturesNV
54063   {
54064     using NativeType = VkPhysicalDeviceMeshShaderFeaturesNV;
54065 
54066     static const bool                                  allowDuplicate = false;
54067     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
54068       StructureType::ePhysicalDeviceMeshShaderFeaturesNV;
54069 
54070 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
54071     VULKAN_HPP_CONSTEXPR
PhysicalDeviceMeshShaderFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV54072       PhysicalDeviceMeshShaderFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 taskShader_ = {},
54073                                           VULKAN_HPP_NAMESPACE::Bool32 meshShader_ = {} ) VULKAN_HPP_NOEXCEPT
54074       : taskShader( taskShader_ )
54075       , meshShader( meshShader_ )
54076     {}
54077 
54078     VULKAN_HPP_CONSTEXPR PhysicalDeviceMeshShaderFeaturesNV( PhysicalDeviceMeshShaderFeaturesNV const & rhs )
54079       VULKAN_HPP_NOEXCEPT = default;
54080 
PhysicalDeviceMeshShaderFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV54081     PhysicalDeviceMeshShaderFeaturesNV( VkPhysicalDeviceMeshShaderFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
54082       : PhysicalDeviceMeshShaderFeaturesNV( *reinterpret_cast<PhysicalDeviceMeshShaderFeaturesNV const *>( &rhs ) )
54083     {}
54084 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
54085 
54086     PhysicalDeviceMeshShaderFeaturesNV &
54087       operator=( PhysicalDeviceMeshShaderFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54088 
54089     PhysicalDeviceMeshShaderFeaturesNV &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV54090       operator=( VkPhysicalDeviceMeshShaderFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
54091     {
54092       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV const *>( &rhs );
54093       return *this;
54094     }
54095 
54096 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV54097     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
54098     {
54099       pNext = pNext_;
54100       return *this;
54101     }
54102 
54103     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesNV &
setTaskShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV54104                             setTaskShader( VULKAN_HPP_NAMESPACE::Bool32 taskShader_ ) VULKAN_HPP_NOEXCEPT
54105     {
54106       taskShader = taskShader_;
54107       return *this;
54108     }
54109 
54110     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesNV &
setMeshShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV54111                             setMeshShader( VULKAN_HPP_NAMESPACE::Bool32 meshShader_ ) VULKAN_HPP_NOEXCEPT
54112     {
54113       meshShader = meshShader_;
54114       return *this;
54115     }
54116 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
54117 
operator VkPhysicalDeviceMeshShaderFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV54118     explicit operator VkPhysicalDeviceMeshShaderFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
54119     {
54120       return *reinterpret_cast<const VkPhysicalDeviceMeshShaderFeaturesNV *>( this );
54121     }
54122 
operator VkPhysicalDeviceMeshShaderFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV54123     explicit operator VkPhysicalDeviceMeshShaderFeaturesNV &() VULKAN_HPP_NOEXCEPT
54124     {
54125       return *reinterpret_cast<VkPhysicalDeviceMeshShaderFeaturesNV *>( this );
54126     }
54127 
54128 #if 14 <= VULKAN_HPP_CPP_VERSION
54129     auto
54130 #else
54131     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
54132                void * const &,
54133                VULKAN_HPP_NAMESPACE::Bool32 const &,
54134                VULKAN_HPP_NAMESPACE::Bool32 const &>
54135 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV54136       reflect() const VULKAN_HPP_NOEXCEPT
54137     {
54138       return std::tie( sType, pNext, taskShader, meshShader );
54139     }
54140 
54141 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
54142     auto operator<=>( PhysicalDeviceMeshShaderFeaturesNV const & ) const = default;
54143 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV54144     bool operator==( PhysicalDeviceMeshShaderFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
54145     {
54146       return this->reflect() == rhs.reflect();
54147     }
54148 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV54149     bool operator!=( PhysicalDeviceMeshShaderFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
54150     {
54151       return this->reflect() != rhs.reflect();
54152     }
54153 #endif
54154 
54155   public:
54156     VULKAN_HPP_NAMESPACE::StructureType sType      = StructureType::ePhysicalDeviceMeshShaderFeaturesNV;
54157     void *                              pNext      = {};
54158     VULKAN_HPP_NAMESPACE::Bool32        taskShader = {};
54159     VULKAN_HPP_NAMESPACE::Bool32        meshShader = {};
54160   };
54161   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV ) ==
54162                               sizeof( VkPhysicalDeviceMeshShaderFeaturesNV ),
54163                             "struct and wrapper have different size!" );
54164   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV>::value,
54165                             "struct wrapper is not a standard layout!" );
54166   VULKAN_HPP_STATIC_ASSERT(
54167     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV>::value,
54168     "PhysicalDeviceMeshShaderFeaturesNV is not nothrow_move_constructible!" );
54169 
54170   template <>
54171   struct CppType<StructureType, StructureType::ePhysicalDeviceMeshShaderFeaturesNV>
54172   {
54173     using Type = PhysicalDeviceMeshShaderFeaturesNV;
54174   };
54175 
54176   struct PhysicalDeviceMeshShaderPropertiesNV
54177   {
54178     using NativeType = VkPhysicalDeviceMeshShaderPropertiesNV;
54179 
54180     static const bool                                  allowDuplicate = false;
54181     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
54182       StructureType::ePhysicalDeviceMeshShaderPropertiesNV;
54183 
54184 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
54185     VULKAN_HPP_CONSTEXPR_14
PhysicalDeviceMeshShaderPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesNV54186       PhysicalDeviceMeshShaderPropertiesNV( uint32_t                        maxDrawMeshTasksCount_          = {},
54187                                             uint32_t                        maxTaskWorkGroupInvocations_    = {},
54188                                             std::array<uint32_t, 3> const & maxTaskWorkGroupSize_           = {},
54189                                             uint32_t                        maxTaskTotalMemorySize_         = {},
54190                                             uint32_t                        maxTaskOutputCount_             = {},
54191                                             uint32_t                        maxMeshWorkGroupInvocations_    = {},
54192                                             std::array<uint32_t, 3> const & maxMeshWorkGroupSize_           = {},
54193                                             uint32_t                        maxMeshTotalMemorySize_         = {},
54194                                             uint32_t                        maxMeshOutputVertices_          = {},
54195                                             uint32_t                        maxMeshOutputPrimitives_        = {},
54196                                             uint32_t                        maxMeshMultiviewViewCount_      = {},
54197                                             uint32_t                        meshOutputPerVertexGranularity_ = {},
54198                                             uint32_t meshOutputPerPrimitiveGranularity_ = {} ) VULKAN_HPP_NOEXCEPT
54199       : maxDrawMeshTasksCount( maxDrawMeshTasksCount_ )
54200       , maxTaskWorkGroupInvocations( maxTaskWorkGroupInvocations_ )
54201       , maxTaskWorkGroupSize( maxTaskWorkGroupSize_ )
54202       , maxTaskTotalMemorySize( maxTaskTotalMemorySize_ )
54203       , maxTaskOutputCount( maxTaskOutputCount_ )
54204       , maxMeshWorkGroupInvocations( maxMeshWorkGroupInvocations_ )
54205       , maxMeshWorkGroupSize( maxMeshWorkGroupSize_ )
54206       , maxMeshTotalMemorySize( maxMeshTotalMemorySize_ )
54207       , maxMeshOutputVertices( maxMeshOutputVertices_ )
54208       , maxMeshOutputPrimitives( maxMeshOutputPrimitives_ )
54209       , maxMeshMultiviewViewCount( maxMeshMultiviewViewCount_ )
54210       , meshOutputPerVertexGranularity( meshOutputPerVertexGranularity_ )
54211       , meshOutputPerPrimitiveGranularity( meshOutputPerPrimitiveGranularity_ )
54212     {}
54213 
54214     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderPropertiesNV( PhysicalDeviceMeshShaderPropertiesNV const & rhs )
54215       VULKAN_HPP_NOEXCEPT = default;
54216 
PhysicalDeviceMeshShaderPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesNV54217     PhysicalDeviceMeshShaderPropertiesNV( VkPhysicalDeviceMeshShaderPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
54218       : PhysicalDeviceMeshShaderPropertiesNV( *reinterpret_cast<PhysicalDeviceMeshShaderPropertiesNV const *>( &rhs ) )
54219     {}
54220 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
54221 
54222     PhysicalDeviceMeshShaderPropertiesNV &
54223       operator=( PhysicalDeviceMeshShaderPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54224 
54225     PhysicalDeviceMeshShaderPropertiesNV &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesNV54226       operator=( VkPhysicalDeviceMeshShaderPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
54227     {
54228       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesNV const *>( &rhs );
54229       return *this;
54230     }
54231 
operator VkPhysicalDeviceMeshShaderPropertiesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesNV54232     explicit operator VkPhysicalDeviceMeshShaderPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
54233     {
54234       return *reinterpret_cast<const VkPhysicalDeviceMeshShaderPropertiesNV *>( this );
54235     }
54236 
operator VkPhysicalDeviceMeshShaderPropertiesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesNV54237     explicit operator VkPhysicalDeviceMeshShaderPropertiesNV &() VULKAN_HPP_NOEXCEPT
54238     {
54239       return *reinterpret_cast<VkPhysicalDeviceMeshShaderPropertiesNV *>( this );
54240     }
54241 
54242 #if 14 <= VULKAN_HPP_CPP_VERSION
54243     auto
54244 #else
54245     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
54246                void * const &,
54247                uint32_t const &,
54248                uint32_t const &,
54249                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> const &,
54250                uint32_t const &,
54251                uint32_t const &,
54252                uint32_t const &,
54253                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> const &,
54254                uint32_t const &,
54255                uint32_t const &,
54256                uint32_t const &,
54257                uint32_t const &,
54258                uint32_t const &,
54259                uint32_t const &>
54260 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesNV54261       reflect() const VULKAN_HPP_NOEXCEPT
54262     {
54263       return std::tie( sType,
54264                        pNext,
54265                        maxDrawMeshTasksCount,
54266                        maxTaskWorkGroupInvocations,
54267                        maxTaskWorkGroupSize,
54268                        maxTaskTotalMemorySize,
54269                        maxTaskOutputCount,
54270                        maxMeshWorkGroupInvocations,
54271                        maxMeshWorkGroupSize,
54272                        maxMeshTotalMemorySize,
54273                        maxMeshOutputVertices,
54274                        maxMeshOutputPrimitives,
54275                        maxMeshMultiviewViewCount,
54276                        meshOutputPerVertexGranularity,
54277                        meshOutputPerPrimitiveGranularity );
54278     }
54279 
54280 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
54281     auto operator<=>( PhysicalDeviceMeshShaderPropertiesNV const & ) const = default;
54282 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesNV54283     bool operator==( PhysicalDeviceMeshShaderPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
54284     {
54285       return this->reflect() == rhs.reflect();
54286     }
54287 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesNV54288     bool operator!=( PhysicalDeviceMeshShaderPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
54289     {
54290       return this->reflect() != rhs.reflect();
54291     }
54292 #endif
54293 
54294   public:
54295     VULKAN_HPP_NAMESPACE::StructureType               sType = StructureType::ePhysicalDeviceMeshShaderPropertiesNV;
54296     void *                                            pNext = {};
54297     uint32_t                                          maxDrawMeshTasksCount             = {};
54298     uint32_t                                          maxTaskWorkGroupInvocations       = {};
54299     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> maxTaskWorkGroupSize              = {};
54300     uint32_t                                          maxTaskTotalMemorySize            = {};
54301     uint32_t                                          maxTaskOutputCount                = {};
54302     uint32_t                                          maxMeshWorkGroupInvocations       = {};
54303     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> maxMeshWorkGroupSize              = {};
54304     uint32_t                                          maxMeshTotalMemorySize            = {};
54305     uint32_t                                          maxMeshOutputVertices             = {};
54306     uint32_t                                          maxMeshOutputPrimitives           = {};
54307     uint32_t                                          maxMeshMultiviewViewCount         = {};
54308     uint32_t                                          meshOutputPerVertexGranularity    = {};
54309     uint32_t                                          meshOutputPerPrimitiveGranularity = {};
54310   };
54311   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesNV ) ==
54312                               sizeof( VkPhysicalDeviceMeshShaderPropertiesNV ),
54313                             "struct and wrapper have different size!" );
54314   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesNV>::value,
54315                             "struct wrapper is not a standard layout!" );
54316   VULKAN_HPP_STATIC_ASSERT(
54317     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesNV>::value,
54318     "PhysicalDeviceMeshShaderPropertiesNV is not nothrow_move_constructible!" );
54319 
54320   template <>
54321   struct CppType<StructureType, StructureType::ePhysicalDeviceMeshShaderPropertiesNV>
54322   {
54323     using Type = PhysicalDeviceMeshShaderPropertiesNV;
54324   };
54325 
54326   struct PhysicalDeviceMultiDrawFeaturesEXT
54327   {
54328     using NativeType = VkPhysicalDeviceMultiDrawFeaturesEXT;
54329 
54330     static const bool                                  allowDuplicate = false;
54331     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
54332       StructureType::ePhysicalDeviceMultiDrawFeaturesEXT;
54333 
54334 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
54335     VULKAN_HPP_CONSTEXPR
PhysicalDeviceMultiDrawFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT54336       PhysicalDeviceMultiDrawFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 multiDraw_ = {} ) VULKAN_HPP_NOEXCEPT
54337       : multiDraw( multiDraw_ )
54338     {}
54339 
54340     VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiDrawFeaturesEXT( PhysicalDeviceMultiDrawFeaturesEXT const & rhs )
54341       VULKAN_HPP_NOEXCEPT = default;
54342 
PhysicalDeviceMultiDrawFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT54343     PhysicalDeviceMultiDrawFeaturesEXT( VkPhysicalDeviceMultiDrawFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
54344       : PhysicalDeviceMultiDrawFeaturesEXT( *reinterpret_cast<PhysicalDeviceMultiDrawFeaturesEXT const *>( &rhs ) )
54345     {}
54346 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
54347 
54348     PhysicalDeviceMultiDrawFeaturesEXT &
54349       operator=( PhysicalDeviceMultiDrawFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54350 
54351     PhysicalDeviceMultiDrawFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT54352       operator=( VkPhysicalDeviceMultiDrawFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
54353     {
54354       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT const *>( &rhs );
54355       return *this;
54356     }
54357 
54358 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT54359     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiDrawFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
54360     {
54361       pNext = pNext_;
54362       return *this;
54363     }
54364 
54365     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiDrawFeaturesEXT &
setMultiDrawVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT54366                             setMultiDraw( VULKAN_HPP_NAMESPACE::Bool32 multiDraw_ ) VULKAN_HPP_NOEXCEPT
54367     {
54368       multiDraw = multiDraw_;
54369       return *this;
54370     }
54371 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
54372 
operator VkPhysicalDeviceMultiDrawFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT54373     explicit operator VkPhysicalDeviceMultiDrawFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
54374     {
54375       return *reinterpret_cast<const VkPhysicalDeviceMultiDrawFeaturesEXT *>( this );
54376     }
54377 
operator VkPhysicalDeviceMultiDrawFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT54378     explicit operator VkPhysicalDeviceMultiDrawFeaturesEXT &() VULKAN_HPP_NOEXCEPT
54379     {
54380       return *reinterpret_cast<VkPhysicalDeviceMultiDrawFeaturesEXT *>( this );
54381     }
54382 
54383 #if 14 <= VULKAN_HPP_CPP_VERSION
54384     auto
54385 #else
54386     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
54387 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT54388       reflect() const VULKAN_HPP_NOEXCEPT
54389     {
54390       return std::tie( sType, pNext, multiDraw );
54391     }
54392 
54393 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
54394     auto operator<=>( PhysicalDeviceMultiDrawFeaturesEXT const & ) const = default;
54395 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT54396     bool operator==( PhysicalDeviceMultiDrawFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
54397     {
54398       return this->reflect() == rhs.reflect();
54399     }
54400 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT54401     bool operator!=( PhysicalDeviceMultiDrawFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
54402     {
54403       return this->reflect() != rhs.reflect();
54404     }
54405 #endif
54406 
54407   public:
54408     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::ePhysicalDeviceMultiDrawFeaturesEXT;
54409     void *                              pNext     = {};
54410     VULKAN_HPP_NAMESPACE::Bool32        multiDraw = {};
54411   };
54412   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT ) ==
54413                               sizeof( VkPhysicalDeviceMultiDrawFeaturesEXT ),
54414                             "struct and wrapper have different size!" );
54415   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT>::value,
54416                             "struct wrapper is not a standard layout!" );
54417   VULKAN_HPP_STATIC_ASSERT(
54418     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT>::value,
54419     "PhysicalDeviceMultiDrawFeaturesEXT is not nothrow_move_constructible!" );
54420 
54421   template <>
54422   struct CppType<StructureType, StructureType::ePhysicalDeviceMultiDrawFeaturesEXT>
54423   {
54424     using Type = PhysicalDeviceMultiDrawFeaturesEXT;
54425   };
54426 
54427   struct PhysicalDeviceMultiDrawPropertiesEXT
54428   {
54429     using NativeType = VkPhysicalDeviceMultiDrawPropertiesEXT;
54430 
54431     static const bool                                  allowDuplicate = false;
54432     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
54433       StructureType::ePhysicalDeviceMultiDrawPropertiesEXT;
54434 
54435 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMultiDrawPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawPropertiesEXT54436     VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiDrawPropertiesEXT( uint32_t maxMultiDrawCount_ = {} ) VULKAN_HPP_NOEXCEPT
54437       : maxMultiDrawCount( maxMultiDrawCount_ )
54438     {}
54439 
54440     VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiDrawPropertiesEXT( PhysicalDeviceMultiDrawPropertiesEXT const & rhs )
54441       VULKAN_HPP_NOEXCEPT = default;
54442 
PhysicalDeviceMultiDrawPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawPropertiesEXT54443     PhysicalDeviceMultiDrawPropertiesEXT( VkPhysicalDeviceMultiDrawPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
54444       : PhysicalDeviceMultiDrawPropertiesEXT( *reinterpret_cast<PhysicalDeviceMultiDrawPropertiesEXT const *>( &rhs ) )
54445     {}
54446 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
54447 
54448     PhysicalDeviceMultiDrawPropertiesEXT &
54449       operator=( PhysicalDeviceMultiDrawPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54450 
54451     PhysicalDeviceMultiDrawPropertiesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawPropertiesEXT54452       operator=( VkPhysicalDeviceMultiDrawPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
54453     {
54454       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawPropertiesEXT const *>( &rhs );
54455       return *this;
54456     }
54457 
operator VkPhysicalDeviceMultiDrawPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawPropertiesEXT54458     explicit operator VkPhysicalDeviceMultiDrawPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
54459     {
54460       return *reinterpret_cast<const VkPhysicalDeviceMultiDrawPropertiesEXT *>( this );
54461     }
54462 
operator VkPhysicalDeviceMultiDrawPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawPropertiesEXT54463     explicit operator VkPhysicalDeviceMultiDrawPropertiesEXT &() VULKAN_HPP_NOEXCEPT
54464     {
54465       return *reinterpret_cast<VkPhysicalDeviceMultiDrawPropertiesEXT *>( this );
54466     }
54467 
54468 #if 14 <= VULKAN_HPP_CPP_VERSION
54469     auto
54470 #else
54471     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
54472 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawPropertiesEXT54473       reflect() const VULKAN_HPP_NOEXCEPT
54474     {
54475       return std::tie( sType, pNext, maxMultiDrawCount );
54476     }
54477 
54478 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
54479     auto operator<=>( PhysicalDeviceMultiDrawPropertiesEXT const & ) const = default;
54480 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawPropertiesEXT54481     bool operator==( PhysicalDeviceMultiDrawPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
54482     {
54483       return this->reflect() == rhs.reflect();
54484     }
54485 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawPropertiesEXT54486     bool operator!=( PhysicalDeviceMultiDrawPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
54487     {
54488       return this->reflect() != rhs.reflect();
54489     }
54490 #endif
54491 
54492   public:
54493     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::ePhysicalDeviceMultiDrawPropertiesEXT;
54494     void *                              pNext             = {};
54495     uint32_t                            maxMultiDrawCount = {};
54496   };
54497   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawPropertiesEXT ) ==
54498                               sizeof( VkPhysicalDeviceMultiDrawPropertiesEXT ),
54499                             "struct and wrapper have different size!" );
54500   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawPropertiesEXT>::value,
54501                             "struct wrapper is not a standard layout!" );
54502   VULKAN_HPP_STATIC_ASSERT(
54503     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawPropertiesEXT>::value,
54504     "PhysicalDeviceMultiDrawPropertiesEXT is not nothrow_move_constructible!" );
54505 
54506   template <>
54507   struct CppType<StructureType, StructureType::ePhysicalDeviceMultiDrawPropertiesEXT>
54508   {
54509     using Type = PhysicalDeviceMultiDrawPropertiesEXT;
54510   };
54511 
54512   struct PhysicalDeviceMultiviewFeatures
54513   {
54514     using NativeType = VkPhysicalDeviceMultiviewFeatures;
54515 
54516     static const bool                                  allowDuplicate = false;
54517     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMultiviewFeatures;
54518 
54519 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMultiviewFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures54520     VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewFeatures(
54521       VULKAN_HPP_NAMESPACE::Bool32 multiview_                   = {},
54522       VULKAN_HPP_NAMESPACE::Bool32 multiviewGeometryShader_     = {},
54523       VULKAN_HPP_NAMESPACE::Bool32 multiviewTessellationShader_ = {} ) VULKAN_HPP_NOEXCEPT
54524       : multiview( multiview_ )
54525       , multiviewGeometryShader( multiviewGeometryShader_ )
54526       , multiviewTessellationShader( multiviewTessellationShader_ )
54527     {}
54528 
54529     VULKAN_HPP_CONSTEXPR
54530       PhysicalDeviceMultiviewFeatures( PhysicalDeviceMultiviewFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54531 
PhysicalDeviceMultiviewFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures54532     PhysicalDeviceMultiviewFeatures( VkPhysicalDeviceMultiviewFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
54533       : PhysicalDeviceMultiviewFeatures( *reinterpret_cast<PhysicalDeviceMultiviewFeatures const *>( &rhs ) )
54534     {}
54535 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
54536 
54537     PhysicalDeviceMultiviewFeatures &
54538       operator=( PhysicalDeviceMultiviewFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54539 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures54540     PhysicalDeviceMultiviewFeatures & operator=( VkPhysicalDeviceMultiviewFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
54541     {
54542       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures const *>( &rhs );
54543       return *this;
54544     }
54545 
54546 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures54547     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
54548     {
54549       pNext = pNext_;
54550       return *this;
54551     }
54552 
54553     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewFeatures &
setMultiviewVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures54554                             setMultiview( VULKAN_HPP_NAMESPACE::Bool32 multiview_ ) VULKAN_HPP_NOEXCEPT
54555     {
54556       multiview = multiview_;
54557       return *this;
54558     }
54559 
54560     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewFeatures &
setMultiviewGeometryShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures54561       setMultiviewGeometryShader( VULKAN_HPP_NAMESPACE::Bool32 multiviewGeometryShader_ ) VULKAN_HPP_NOEXCEPT
54562     {
54563       multiviewGeometryShader = multiviewGeometryShader_;
54564       return *this;
54565     }
54566 
54567     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewFeatures &
setMultiviewTessellationShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures54568       setMultiviewTessellationShader( VULKAN_HPP_NAMESPACE::Bool32 multiviewTessellationShader_ ) VULKAN_HPP_NOEXCEPT
54569     {
54570       multiviewTessellationShader = multiviewTessellationShader_;
54571       return *this;
54572     }
54573 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
54574 
operator VkPhysicalDeviceMultiviewFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures54575     explicit operator VkPhysicalDeviceMultiviewFeatures const &() const VULKAN_HPP_NOEXCEPT
54576     {
54577       return *reinterpret_cast<const VkPhysicalDeviceMultiviewFeatures *>( this );
54578     }
54579 
operator VkPhysicalDeviceMultiviewFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures54580     explicit operator VkPhysicalDeviceMultiviewFeatures &() VULKAN_HPP_NOEXCEPT
54581     {
54582       return *reinterpret_cast<VkPhysicalDeviceMultiviewFeatures *>( this );
54583     }
54584 
54585 #if 14 <= VULKAN_HPP_CPP_VERSION
54586     auto
54587 #else
54588     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
54589                void * const &,
54590                VULKAN_HPP_NAMESPACE::Bool32 const &,
54591                VULKAN_HPP_NAMESPACE::Bool32 const &,
54592                VULKAN_HPP_NAMESPACE::Bool32 const &>
54593 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures54594       reflect() const VULKAN_HPP_NOEXCEPT
54595     {
54596       return std::tie( sType, pNext, multiview, multiviewGeometryShader, multiviewTessellationShader );
54597     }
54598 
54599 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
54600     auto operator<=>( PhysicalDeviceMultiviewFeatures const & ) const = default;
54601 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures54602     bool operator==( PhysicalDeviceMultiviewFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
54603     {
54604       return this->reflect() == rhs.reflect();
54605     }
54606 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures54607     bool operator!=( PhysicalDeviceMultiviewFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
54608     {
54609       return this->reflect() != rhs.reflect();
54610     }
54611 #endif
54612 
54613   public:
54614     VULKAN_HPP_NAMESPACE::StructureType sType                       = StructureType::ePhysicalDeviceMultiviewFeatures;
54615     void *                              pNext                       = {};
54616     VULKAN_HPP_NAMESPACE::Bool32        multiview                   = {};
54617     VULKAN_HPP_NAMESPACE::Bool32        multiviewGeometryShader     = {};
54618     VULKAN_HPP_NAMESPACE::Bool32        multiviewTessellationShader = {};
54619   };
54620   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures ) ==
54621                               sizeof( VkPhysicalDeviceMultiviewFeatures ),
54622                             "struct and wrapper have different size!" );
54623   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures>::value,
54624                             "struct wrapper is not a standard layout!" );
54625   VULKAN_HPP_STATIC_ASSERT(
54626     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures>::value,
54627     "PhysicalDeviceMultiviewFeatures is not nothrow_move_constructible!" );
54628 
54629   template <>
54630   struct CppType<StructureType, StructureType::ePhysicalDeviceMultiviewFeatures>
54631   {
54632     using Type = PhysicalDeviceMultiviewFeatures;
54633   };
54634   using PhysicalDeviceMultiviewFeaturesKHR = PhysicalDeviceMultiviewFeatures;
54635 
54636   struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
54637   {
54638     using NativeType = VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
54639 
54640     static const bool                                  allowDuplicate = false;
54641     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
54642       StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
54643 
54644 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMultiviewPerViewAttributesPropertiesNVXVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX54645     VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX(
54646       VULKAN_HPP_NAMESPACE::Bool32 perViewPositionAllComponents_ = {} ) VULKAN_HPP_NOEXCEPT
54647       : perViewPositionAllComponents( perViewPositionAllComponents_ )
54648     {}
54649 
54650     VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX(
54651       PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54652 
PhysicalDeviceMultiviewPerViewAttributesPropertiesNVXVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX54653     PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX(
54654       VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT
54655       : PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX(
54656           *reinterpret_cast<PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const *>( &rhs ) )
54657     {}
54658 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
54659 
54660     PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX &
54661       operator=( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54662 
54663     PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX54664       operator=( VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT
54665     {
54666       *this =
54667         *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const *>( &rhs );
54668       return *this;
54669     }
54670 
operator VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX54671     explicit operator VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const &() const VULKAN_HPP_NOEXCEPT
54672     {
54673       return *reinterpret_cast<const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX *>( this );
54674     }
54675 
operator VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX54676     explicit operator VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX &() VULKAN_HPP_NOEXCEPT
54677     {
54678       return *reinterpret_cast<VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX *>( this );
54679     }
54680 
54681 #if 14 <= VULKAN_HPP_CPP_VERSION
54682     auto
54683 #else
54684     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
54685 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX54686       reflect() const VULKAN_HPP_NOEXCEPT
54687     {
54688       return std::tie( sType, pNext, perViewPositionAllComponents );
54689     }
54690 
54691 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
54692     auto operator<=>( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & ) const = default;
54693 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX54694     bool operator==( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
54695     {
54696       return this->reflect() == rhs.reflect();
54697     }
54698 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX54699     bool operator!=( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
54700     {
54701       return this->reflect() != rhs.reflect();
54702     }
54703 #endif
54704 
54705   public:
54706     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
54707     void *                              pNext = {};
54708     VULKAN_HPP_NAMESPACE::Bool32        perViewPositionAllComponents = {};
54709   };
54710   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ) ==
54711                               sizeof( VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ),
54712                             "struct and wrapper have different size!" );
54713   VULKAN_HPP_STATIC_ASSERT(
54714     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX>::value,
54715     "struct wrapper is not a standard layout!" );
54716   VULKAN_HPP_STATIC_ASSERT(
54717     std::is_nothrow_move_constructible<
54718       VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX>::value,
54719     "PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX is not nothrow_move_constructible!" );
54720 
54721   template <>
54722   struct CppType<StructureType, StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX>
54723   {
54724     using Type = PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
54725   };
54726 
54727   struct PhysicalDeviceMultiviewProperties
54728   {
54729     using NativeType = VkPhysicalDeviceMultiviewProperties;
54730 
54731     static const bool                                  allowDuplicate = false;
54732     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
54733       StructureType::ePhysicalDeviceMultiviewProperties;
54734 
54735 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
54736     VULKAN_HPP_CONSTEXPR
PhysicalDeviceMultiviewPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties54737       PhysicalDeviceMultiviewProperties( uint32_t maxMultiviewViewCount_     = {},
54738                                          uint32_t maxMultiviewInstanceIndex_ = {} ) VULKAN_HPP_NOEXCEPT
54739       : maxMultiviewViewCount( maxMultiviewViewCount_ )
54740       , maxMultiviewInstanceIndex( maxMultiviewInstanceIndex_ )
54741     {}
54742 
54743     VULKAN_HPP_CONSTEXPR
54744       PhysicalDeviceMultiviewProperties( PhysicalDeviceMultiviewProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54745 
PhysicalDeviceMultiviewPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties54746     PhysicalDeviceMultiviewProperties( VkPhysicalDeviceMultiviewProperties const & rhs ) VULKAN_HPP_NOEXCEPT
54747       : PhysicalDeviceMultiviewProperties( *reinterpret_cast<PhysicalDeviceMultiviewProperties const *>( &rhs ) )
54748     {}
54749 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
54750 
54751     PhysicalDeviceMultiviewProperties &
54752       operator=( PhysicalDeviceMultiviewProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54753 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties54754     PhysicalDeviceMultiviewProperties & operator=( VkPhysicalDeviceMultiviewProperties const & rhs ) VULKAN_HPP_NOEXCEPT
54755     {
54756       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties const *>( &rhs );
54757       return *this;
54758     }
54759 
operator VkPhysicalDeviceMultiviewProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties54760     explicit operator VkPhysicalDeviceMultiviewProperties const &() const VULKAN_HPP_NOEXCEPT
54761     {
54762       return *reinterpret_cast<const VkPhysicalDeviceMultiviewProperties *>( this );
54763     }
54764 
operator VkPhysicalDeviceMultiviewProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties54765     explicit operator VkPhysicalDeviceMultiviewProperties &() VULKAN_HPP_NOEXCEPT
54766     {
54767       return *reinterpret_cast<VkPhysicalDeviceMultiviewProperties *>( this );
54768     }
54769 
54770 #if 14 <= VULKAN_HPP_CPP_VERSION
54771     auto
54772 #else
54773     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, uint32_t const &>
54774 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties54775       reflect() const VULKAN_HPP_NOEXCEPT
54776     {
54777       return std::tie( sType, pNext, maxMultiviewViewCount, maxMultiviewInstanceIndex );
54778     }
54779 
54780 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
54781     auto operator<=>( PhysicalDeviceMultiviewProperties const & ) const = default;
54782 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties54783     bool operator==( PhysicalDeviceMultiviewProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
54784     {
54785       return this->reflect() == rhs.reflect();
54786     }
54787 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties54788     bool operator!=( PhysicalDeviceMultiviewProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
54789     {
54790       return this->reflect() != rhs.reflect();
54791     }
54792 #endif
54793 
54794   public:
54795     VULKAN_HPP_NAMESPACE::StructureType sType                     = StructureType::ePhysicalDeviceMultiviewProperties;
54796     void *                              pNext                     = {};
54797     uint32_t                            maxMultiviewViewCount     = {};
54798     uint32_t                            maxMultiviewInstanceIndex = {};
54799   };
54800   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties ) ==
54801                               sizeof( VkPhysicalDeviceMultiviewProperties ),
54802                             "struct and wrapper have different size!" );
54803   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties>::value,
54804                             "struct wrapper is not a standard layout!" );
54805   VULKAN_HPP_STATIC_ASSERT(
54806     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties>::value,
54807     "PhysicalDeviceMultiviewProperties is not nothrow_move_constructible!" );
54808 
54809   template <>
54810   struct CppType<StructureType, StructureType::ePhysicalDeviceMultiviewProperties>
54811   {
54812     using Type = PhysicalDeviceMultiviewProperties;
54813   };
54814   using PhysicalDeviceMultiviewPropertiesKHR = PhysicalDeviceMultiviewProperties;
54815 
54816   struct PhysicalDeviceMutableDescriptorTypeFeaturesVALVE
54817   {
54818     using NativeType = VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE;
54819 
54820     static const bool                                  allowDuplicate = false;
54821     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
54822       StructureType::ePhysicalDeviceMutableDescriptorTypeFeaturesVALVE;
54823 
54824 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMutableDescriptorTypeFeaturesVALVEVULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesVALVE54825     VULKAN_HPP_CONSTEXPR PhysicalDeviceMutableDescriptorTypeFeaturesVALVE(
54826       VULKAN_HPP_NAMESPACE::Bool32 mutableDescriptorType_ = {} ) VULKAN_HPP_NOEXCEPT
54827       : mutableDescriptorType( mutableDescriptorType_ )
54828     {}
54829 
54830     VULKAN_HPP_CONSTEXPR PhysicalDeviceMutableDescriptorTypeFeaturesVALVE(
54831       PhysicalDeviceMutableDescriptorTypeFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54832 
PhysicalDeviceMutableDescriptorTypeFeaturesVALVEVULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesVALVE54833     PhysicalDeviceMutableDescriptorTypeFeaturesVALVE( VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE const & rhs )
54834       VULKAN_HPP_NOEXCEPT
54835       : PhysicalDeviceMutableDescriptorTypeFeaturesVALVE(
54836           *reinterpret_cast<PhysicalDeviceMutableDescriptorTypeFeaturesVALVE const *>( &rhs ) )
54837     {}
54838 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
54839 
54840     PhysicalDeviceMutableDescriptorTypeFeaturesVALVE &
54841       operator=( PhysicalDeviceMutableDescriptorTypeFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54842 
54843     PhysicalDeviceMutableDescriptorTypeFeaturesVALVE &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesVALVE54844       operator=( VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT
54845     {
54846       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesVALVE const *>( &rhs );
54847       return *this;
54848     }
54849 
54850 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
54851     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMutableDescriptorTypeFeaturesVALVE &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesVALVE54852                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
54853     {
54854       pNext = pNext_;
54855       return *this;
54856     }
54857 
54858     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMutableDescriptorTypeFeaturesVALVE &
setMutableDescriptorTypeVULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesVALVE54859       setMutableDescriptorType( VULKAN_HPP_NAMESPACE::Bool32 mutableDescriptorType_ ) VULKAN_HPP_NOEXCEPT
54860     {
54861       mutableDescriptorType = mutableDescriptorType_;
54862       return *this;
54863     }
54864 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
54865 
operator VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesVALVE54866     explicit operator VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE const &() const VULKAN_HPP_NOEXCEPT
54867     {
54868       return *reinterpret_cast<const VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE *>( this );
54869     }
54870 
operator VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE&VULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesVALVE54871     explicit operator VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE &() VULKAN_HPP_NOEXCEPT
54872     {
54873       return *reinterpret_cast<VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE *>( this );
54874     }
54875 
54876 #if 14 <= VULKAN_HPP_CPP_VERSION
54877     auto
54878 #else
54879     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
54880 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesVALVE54881       reflect() const VULKAN_HPP_NOEXCEPT
54882     {
54883       return std::tie( sType, pNext, mutableDescriptorType );
54884     }
54885 
54886 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
54887     auto operator<=>( PhysicalDeviceMutableDescriptorTypeFeaturesVALVE const & ) const = default;
54888 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesVALVE54889     bool operator==( PhysicalDeviceMutableDescriptorTypeFeaturesVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT
54890     {
54891       return this->reflect() == rhs.reflect();
54892     }
54893 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesVALVE54894     bool operator!=( PhysicalDeviceMutableDescriptorTypeFeaturesVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT
54895     {
54896       return this->reflect() != rhs.reflect();
54897     }
54898 #endif
54899 
54900   public:
54901     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMutableDescriptorTypeFeaturesVALVE;
54902     void *                              pNext = {};
54903     VULKAN_HPP_NAMESPACE::Bool32        mutableDescriptorType = {};
54904   };
54905   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesVALVE ) ==
54906                               sizeof( VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE ),
54907                             "struct and wrapper have different size!" );
54908   VULKAN_HPP_STATIC_ASSERT(
54909     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesVALVE>::value,
54910     "struct wrapper is not a standard layout!" );
54911   VULKAN_HPP_STATIC_ASSERT(
54912     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesVALVE>::value,
54913     "PhysicalDeviceMutableDescriptorTypeFeaturesVALVE is not nothrow_move_constructible!" );
54914 
54915   template <>
54916   struct CppType<StructureType, StructureType::ePhysicalDeviceMutableDescriptorTypeFeaturesVALVE>
54917   {
54918     using Type = PhysicalDeviceMutableDescriptorTypeFeaturesVALVE;
54919   };
54920 
54921   struct PhysicalDevicePCIBusInfoPropertiesEXT
54922   {
54923     using NativeType = VkPhysicalDevicePCIBusInfoPropertiesEXT;
54924 
54925     static const bool                                  allowDuplicate = false;
54926     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
54927       StructureType::ePhysicalDevicePciBusInfoPropertiesEXT;
54928 
54929 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePCIBusInfoPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT54930     VULKAN_HPP_CONSTEXPR PhysicalDevicePCIBusInfoPropertiesEXT( uint32_t pciDomain_   = {},
54931                                                                 uint32_t pciBus_      = {},
54932                                                                 uint32_t pciDevice_   = {},
54933                                                                 uint32_t pciFunction_ = {} ) VULKAN_HPP_NOEXCEPT
54934       : pciDomain( pciDomain_ )
54935       , pciBus( pciBus_ )
54936       , pciDevice( pciDevice_ )
54937       , pciFunction( pciFunction_ )
54938     {}
54939 
54940     VULKAN_HPP_CONSTEXPR PhysicalDevicePCIBusInfoPropertiesEXT( PhysicalDevicePCIBusInfoPropertiesEXT const & rhs )
54941       VULKAN_HPP_NOEXCEPT = default;
54942 
PhysicalDevicePCIBusInfoPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT54943     PhysicalDevicePCIBusInfoPropertiesEXT( VkPhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
54944       : PhysicalDevicePCIBusInfoPropertiesEXT(
54945           *reinterpret_cast<PhysicalDevicePCIBusInfoPropertiesEXT const *>( &rhs ) )
54946     {}
54947 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
54948 
54949     PhysicalDevicePCIBusInfoPropertiesEXT &
54950       operator=( PhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54951 
54952     PhysicalDevicePCIBusInfoPropertiesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT54953       operator=( VkPhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
54954     {
54955       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT const *>( &rhs );
54956       return *this;
54957     }
54958 
operator VkPhysicalDevicePCIBusInfoPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT54959     explicit operator VkPhysicalDevicePCIBusInfoPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
54960     {
54961       return *reinterpret_cast<const VkPhysicalDevicePCIBusInfoPropertiesEXT *>( this );
54962     }
54963 
operator VkPhysicalDevicePCIBusInfoPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT54964     explicit operator VkPhysicalDevicePCIBusInfoPropertiesEXT &() VULKAN_HPP_NOEXCEPT
54965     {
54966       return *reinterpret_cast<VkPhysicalDevicePCIBusInfoPropertiesEXT *>( this );
54967     }
54968 
54969 #if 14 <= VULKAN_HPP_CPP_VERSION
54970     auto
54971 #else
54972     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
54973                void * const &,
54974                uint32_t const &,
54975                uint32_t const &,
54976                uint32_t const &,
54977                uint32_t const &>
54978 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT54979       reflect() const VULKAN_HPP_NOEXCEPT
54980     {
54981       return std::tie( sType, pNext, pciDomain, pciBus, pciDevice, pciFunction );
54982     }
54983 
54984 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
54985     auto operator<=>( PhysicalDevicePCIBusInfoPropertiesEXT const & ) const = default;
54986 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT54987     bool operator==( PhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
54988     {
54989       return this->reflect() == rhs.reflect();
54990     }
54991 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT54992     bool operator!=( PhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
54993     {
54994       return this->reflect() != rhs.reflect();
54995     }
54996 #endif
54997 
54998   public:
54999     VULKAN_HPP_NAMESPACE::StructureType sType       = StructureType::ePhysicalDevicePciBusInfoPropertiesEXT;
55000     void *                              pNext       = {};
55001     uint32_t                            pciDomain   = {};
55002     uint32_t                            pciBus      = {};
55003     uint32_t                            pciDevice   = {};
55004     uint32_t                            pciFunction = {};
55005   };
55006   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT ) ==
55007                               sizeof( VkPhysicalDevicePCIBusInfoPropertiesEXT ),
55008                             "struct and wrapper have different size!" );
55009   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT>::value,
55010                             "struct wrapper is not a standard layout!" );
55011   VULKAN_HPP_STATIC_ASSERT(
55012     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT>::value,
55013     "PhysicalDevicePCIBusInfoPropertiesEXT is not nothrow_move_constructible!" );
55014 
55015   template <>
55016   struct CppType<StructureType, StructureType::ePhysicalDevicePciBusInfoPropertiesEXT>
55017   {
55018     using Type = PhysicalDevicePCIBusInfoPropertiesEXT;
55019   };
55020 
55021   struct PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT
55022   {
55023     using NativeType = VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT;
55024 
55025     static const bool                                  allowDuplicate = false;
55026     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
55027       StructureType::ePhysicalDevicePageableDeviceLocalMemoryFeaturesEXT;
55028 
55029 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePageableDeviceLocalMemoryFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT55030     VULKAN_HPP_CONSTEXPR PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT(
55031       VULKAN_HPP_NAMESPACE::Bool32 pageableDeviceLocalMemory_ = {} ) VULKAN_HPP_NOEXCEPT
55032       : pageableDeviceLocalMemory( pageableDeviceLocalMemory_ )
55033     {}
55034 
55035     VULKAN_HPP_CONSTEXPR PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT(
55036       PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55037 
PhysicalDevicePageableDeviceLocalMemoryFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT55038     PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT(
55039       VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
55040       : PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT(
55041           *reinterpret_cast<PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const *>( &rhs ) )
55042     {}
55043 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
55044 
55045     PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT &
55046       operator=( PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55047 
55048     PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT55049       operator=( VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
55050     {
55051       *this =
55052         *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const *>( &rhs );
55053       return *this;
55054     }
55055 
55056 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
55057     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT55058                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
55059     {
55060       pNext = pNext_;
55061       return *this;
55062     }
55063 
55064     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT &
setPageableDeviceLocalMemoryVULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT55065       setPageableDeviceLocalMemory( VULKAN_HPP_NAMESPACE::Bool32 pageableDeviceLocalMemory_ ) VULKAN_HPP_NOEXCEPT
55066     {
55067       pageableDeviceLocalMemory = pageableDeviceLocalMemory_;
55068       return *this;
55069     }
55070 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
55071 
operator VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT55072     explicit operator VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
55073     {
55074       return *reinterpret_cast<const VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT *>( this );
55075     }
55076 
operator VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT55077     explicit operator VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT &() VULKAN_HPP_NOEXCEPT
55078     {
55079       return *reinterpret_cast<VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT *>( this );
55080     }
55081 
55082 #if 14 <= VULKAN_HPP_CPP_VERSION
55083     auto
55084 #else
55085     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
55086 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT55087       reflect() const VULKAN_HPP_NOEXCEPT
55088     {
55089       return std::tie( sType, pNext, pageableDeviceLocalMemory );
55090     }
55091 
55092 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
55093     auto operator<=>( PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & ) const = default;
55094 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT55095     bool operator==( PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
55096     {
55097       return this->reflect() == rhs.reflect();
55098     }
55099 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT55100     bool operator!=( PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
55101     {
55102       return this->reflect() != rhs.reflect();
55103     }
55104 #endif
55105 
55106   public:
55107     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePageableDeviceLocalMemoryFeaturesEXT;
55108     void *                              pNext = {};
55109     VULKAN_HPP_NAMESPACE::Bool32        pageableDeviceLocalMemory = {};
55110   };
55111   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT ) ==
55112                               sizeof( VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT ),
55113                             "struct and wrapper have different size!" );
55114   VULKAN_HPP_STATIC_ASSERT(
55115     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT>::value,
55116     "struct wrapper is not a standard layout!" );
55117   VULKAN_HPP_STATIC_ASSERT(
55118     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT>::value,
55119     "PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT is not nothrow_move_constructible!" );
55120 
55121   template <>
55122   struct CppType<StructureType, StructureType::ePhysicalDevicePageableDeviceLocalMemoryFeaturesEXT>
55123   {
55124     using Type = PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT;
55125   };
55126 
55127   struct PhysicalDevicePerformanceQueryFeaturesKHR
55128   {
55129     using NativeType = VkPhysicalDevicePerformanceQueryFeaturesKHR;
55130 
55131     static const bool                                  allowDuplicate = false;
55132     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
55133       StructureType::ePhysicalDevicePerformanceQueryFeaturesKHR;
55134 
55135 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePerformanceQueryFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR55136     VULKAN_HPP_CONSTEXPR PhysicalDevicePerformanceQueryFeaturesKHR(
55137       VULKAN_HPP_NAMESPACE::Bool32 performanceCounterQueryPools_         = {},
55138       VULKAN_HPP_NAMESPACE::Bool32 performanceCounterMultipleQueryPools_ = {} ) VULKAN_HPP_NOEXCEPT
55139       : performanceCounterQueryPools( performanceCounterQueryPools_ )
55140       , performanceCounterMultipleQueryPools( performanceCounterMultipleQueryPools_ )
55141     {}
55142 
55143     VULKAN_HPP_CONSTEXPR PhysicalDevicePerformanceQueryFeaturesKHR(
55144       PhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55145 
PhysicalDevicePerformanceQueryFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR55146     PhysicalDevicePerformanceQueryFeaturesKHR( VkPhysicalDevicePerformanceQueryFeaturesKHR const & rhs )
55147       VULKAN_HPP_NOEXCEPT
55148       : PhysicalDevicePerformanceQueryFeaturesKHR(
55149           *reinterpret_cast<PhysicalDevicePerformanceQueryFeaturesKHR const *>( &rhs ) )
55150     {}
55151 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
55152 
55153     PhysicalDevicePerformanceQueryFeaturesKHR &
55154       operator=( PhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55155 
55156     PhysicalDevicePerformanceQueryFeaturesKHR &
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR55157       operator=( VkPhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
55158     {
55159       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR const *>( &rhs );
55160       return *this;
55161     }
55162 
55163 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR55164     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerformanceQueryFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
55165     {
55166       pNext = pNext_;
55167       return *this;
55168     }
55169 
55170     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerformanceQueryFeaturesKHR &
setPerformanceCounterQueryPoolsVULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR55171       setPerformanceCounterQueryPools( VULKAN_HPP_NAMESPACE::Bool32 performanceCounterQueryPools_ ) VULKAN_HPP_NOEXCEPT
55172     {
55173       performanceCounterQueryPools = performanceCounterQueryPools_;
55174       return *this;
55175     }
55176 
setPerformanceCounterMultipleQueryPoolsVULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR55177     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerformanceQueryFeaturesKHR & setPerformanceCounterMultipleQueryPools(
55178       VULKAN_HPP_NAMESPACE::Bool32 performanceCounterMultipleQueryPools_ ) VULKAN_HPP_NOEXCEPT
55179     {
55180       performanceCounterMultipleQueryPools = performanceCounterMultipleQueryPools_;
55181       return *this;
55182     }
55183 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
55184 
operator VkPhysicalDevicePerformanceQueryFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR55185     explicit operator VkPhysicalDevicePerformanceQueryFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
55186     {
55187       return *reinterpret_cast<const VkPhysicalDevicePerformanceQueryFeaturesKHR *>( this );
55188     }
55189 
operator VkPhysicalDevicePerformanceQueryFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR55190     explicit operator VkPhysicalDevicePerformanceQueryFeaturesKHR &() VULKAN_HPP_NOEXCEPT
55191     {
55192       return *reinterpret_cast<VkPhysicalDevicePerformanceQueryFeaturesKHR *>( this );
55193     }
55194 
55195 #if 14 <= VULKAN_HPP_CPP_VERSION
55196     auto
55197 #else
55198     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
55199                void * const &,
55200                VULKAN_HPP_NAMESPACE::Bool32 const &,
55201                VULKAN_HPP_NAMESPACE::Bool32 const &>
55202 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR55203       reflect() const VULKAN_HPP_NOEXCEPT
55204     {
55205       return std::tie( sType, pNext, performanceCounterQueryPools, performanceCounterMultipleQueryPools );
55206     }
55207 
55208 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
55209     auto operator<=>( PhysicalDevicePerformanceQueryFeaturesKHR const & ) const = default;
55210 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR55211     bool operator==( PhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
55212     {
55213       return this->reflect() == rhs.reflect();
55214     }
55215 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR55216     bool operator!=( PhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
55217     {
55218       return this->reflect() != rhs.reflect();
55219     }
55220 #endif
55221 
55222   public:
55223     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePerformanceQueryFeaturesKHR;
55224     void *                              pNext = {};
55225     VULKAN_HPP_NAMESPACE::Bool32        performanceCounterQueryPools         = {};
55226     VULKAN_HPP_NAMESPACE::Bool32        performanceCounterMultipleQueryPools = {};
55227   };
55228   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR ) ==
55229                               sizeof( VkPhysicalDevicePerformanceQueryFeaturesKHR ),
55230                             "struct and wrapper have different size!" );
55231   VULKAN_HPP_STATIC_ASSERT(
55232     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR>::value,
55233     "struct wrapper is not a standard layout!" );
55234   VULKAN_HPP_STATIC_ASSERT(
55235     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR>::value,
55236     "PhysicalDevicePerformanceQueryFeaturesKHR is not nothrow_move_constructible!" );
55237 
55238   template <>
55239   struct CppType<StructureType, StructureType::ePhysicalDevicePerformanceQueryFeaturesKHR>
55240   {
55241     using Type = PhysicalDevicePerformanceQueryFeaturesKHR;
55242   };
55243 
55244   struct PhysicalDevicePerformanceQueryPropertiesKHR
55245   {
55246     using NativeType = VkPhysicalDevicePerformanceQueryPropertiesKHR;
55247 
55248     static const bool                                  allowDuplicate = false;
55249     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
55250       StructureType::ePhysicalDevicePerformanceQueryPropertiesKHR;
55251 
55252 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePerformanceQueryPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR55253     VULKAN_HPP_CONSTEXPR PhysicalDevicePerformanceQueryPropertiesKHR(
55254       VULKAN_HPP_NAMESPACE::Bool32 allowCommandBufferQueryCopies_ = {} ) VULKAN_HPP_NOEXCEPT
55255       : allowCommandBufferQueryCopies( allowCommandBufferQueryCopies_ )
55256     {}
55257 
55258     VULKAN_HPP_CONSTEXPR PhysicalDevicePerformanceQueryPropertiesKHR(
55259       PhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55260 
PhysicalDevicePerformanceQueryPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR55261     PhysicalDevicePerformanceQueryPropertiesKHR( VkPhysicalDevicePerformanceQueryPropertiesKHR const & rhs )
55262       VULKAN_HPP_NOEXCEPT
55263       : PhysicalDevicePerformanceQueryPropertiesKHR(
55264           *reinterpret_cast<PhysicalDevicePerformanceQueryPropertiesKHR const *>( &rhs ) )
55265     {}
55266 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
55267 
55268     PhysicalDevicePerformanceQueryPropertiesKHR &
55269       operator=( PhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55270 
55271     PhysicalDevicePerformanceQueryPropertiesKHR &
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR55272       operator=( VkPhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
55273     {
55274       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR const *>( &rhs );
55275       return *this;
55276     }
55277 
operator VkPhysicalDevicePerformanceQueryPropertiesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR55278     explicit operator VkPhysicalDevicePerformanceQueryPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
55279     {
55280       return *reinterpret_cast<const VkPhysicalDevicePerformanceQueryPropertiesKHR *>( this );
55281     }
55282 
operator VkPhysicalDevicePerformanceQueryPropertiesKHR&VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR55283     explicit operator VkPhysicalDevicePerformanceQueryPropertiesKHR &() VULKAN_HPP_NOEXCEPT
55284     {
55285       return *reinterpret_cast<VkPhysicalDevicePerformanceQueryPropertiesKHR *>( this );
55286     }
55287 
55288 #if 14 <= VULKAN_HPP_CPP_VERSION
55289     auto
55290 #else
55291     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
55292 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR55293       reflect() const VULKAN_HPP_NOEXCEPT
55294     {
55295       return std::tie( sType, pNext, allowCommandBufferQueryCopies );
55296     }
55297 
55298 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
55299     auto operator<=>( PhysicalDevicePerformanceQueryPropertiesKHR const & ) const = default;
55300 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR55301     bool operator==( PhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
55302     {
55303       return this->reflect() == rhs.reflect();
55304     }
55305 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR55306     bool operator!=( PhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
55307     {
55308       return this->reflect() != rhs.reflect();
55309     }
55310 #endif
55311 
55312   public:
55313     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePerformanceQueryPropertiesKHR;
55314     void *                              pNext = {};
55315     VULKAN_HPP_NAMESPACE::Bool32        allowCommandBufferQueryCopies = {};
55316   };
55317   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR ) ==
55318                               sizeof( VkPhysicalDevicePerformanceQueryPropertiesKHR ),
55319                             "struct and wrapper have different size!" );
55320   VULKAN_HPP_STATIC_ASSERT(
55321     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR>::value,
55322     "struct wrapper is not a standard layout!" );
55323   VULKAN_HPP_STATIC_ASSERT(
55324     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR>::value,
55325     "PhysicalDevicePerformanceQueryPropertiesKHR is not nothrow_move_constructible!" );
55326 
55327   template <>
55328   struct CppType<StructureType, StructureType::ePhysicalDevicePerformanceQueryPropertiesKHR>
55329   {
55330     using Type = PhysicalDevicePerformanceQueryPropertiesKHR;
55331   };
55332 
55333   struct PhysicalDevicePipelineCreationCacheControlFeaturesEXT
55334   {
55335     using NativeType = VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT;
55336 
55337     static const bool                                  allowDuplicate = false;
55338     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
55339       StructureType::ePhysicalDevicePipelineCreationCacheControlFeaturesEXT;
55340 
55341 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePipelineCreationCacheControlFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeaturesEXT55342     VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineCreationCacheControlFeaturesEXT(
55343       VULKAN_HPP_NAMESPACE::Bool32 pipelineCreationCacheControl_ = {} ) VULKAN_HPP_NOEXCEPT
55344       : pipelineCreationCacheControl( pipelineCreationCacheControl_ )
55345     {}
55346 
55347     VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineCreationCacheControlFeaturesEXT(
55348       PhysicalDevicePipelineCreationCacheControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55349 
PhysicalDevicePipelineCreationCacheControlFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeaturesEXT55350     PhysicalDevicePipelineCreationCacheControlFeaturesEXT(
55351       VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
55352       : PhysicalDevicePipelineCreationCacheControlFeaturesEXT(
55353           *reinterpret_cast<PhysicalDevicePipelineCreationCacheControlFeaturesEXT const *>( &rhs ) )
55354     {}
55355 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
55356 
55357     PhysicalDevicePipelineCreationCacheControlFeaturesEXT &
55358       operator=( PhysicalDevicePipelineCreationCacheControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55359 
55360     PhysicalDevicePipelineCreationCacheControlFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeaturesEXT55361       operator=( VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
55362     {
55363       *this =
55364         *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeaturesEXT const *>( &rhs );
55365       return *this;
55366     }
55367 
55368 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
55369     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineCreationCacheControlFeaturesEXT &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeaturesEXT55370                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
55371     {
55372       pNext = pNext_;
55373       return *this;
55374     }
55375 
55376     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineCreationCacheControlFeaturesEXT &
setPipelineCreationCacheControlVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeaturesEXT55377       setPipelineCreationCacheControl( VULKAN_HPP_NAMESPACE::Bool32 pipelineCreationCacheControl_ ) VULKAN_HPP_NOEXCEPT
55378     {
55379       pipelineCreationCacheControl = pipelineCreationCacheControl_;
55380       return *this;
55381     }
55382 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
55383 
operator VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeaturesEXT55384     explicit operator VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
55385     {
55386       return *reinterpret_cast<const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT *>( this );
55387     }
55388 
operator VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeaturesEXT55389     explicit operator VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT &() VULKAN_HPP_NOEXCEPT
55390     {
55391       return *reinterpret_cast<VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT *>( this );
55392     }
55393 
55394 #if 14 <= VULKAN_HPP_CPP_VERSION
55395     auto
55396 #else
55397     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
55398 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeaturesEXT55399       reflect() const VULKAN_HPP_NOEXCEPT
55400     {
55401       return std::tie( sType, pNext, pipelineCreationCacheControl );
55402     }
55403 
55404 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
55405     auto operator<=>( PhysicalDevicePipelineCreationCacheControlFeaturesEXT const & ) const = default;
55406 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeaturesEXT55407     bool operator==( PhysicalDevicePipelineCreationCacheControlFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
55408     {
55409       return this->reflect() == rhs.reflect();
55410     }
55411 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeaturesEXT55412     bool operator!=( PhysicalDevicePipelineCreationCacheControlFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
55413     {
55414       return this->reflect() != rhs.reflect();
55415     }
55416 #endif
55417 
55418   public:
55419     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePipelineCreationCacheControlFeaturesEXT;
55420     void *                              pNext = {};
55421     VULKAN_HPP_NAMESPACE::Bool32        pipelineCreationCacheControl = {};
55422   };
55423   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeaturesEXT ) ==
55424                               sizeof( VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT ),
55425                             "struct and wrapper have different size!" );
55426   VULKAN_HPP_STATIC_ASSERT(
55427     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeaturesEXT>::value,
55428     "struct wrapper is not a standard layout!" );
55429   VULKAN_HPP_STATIC_ASSERT(
55430     std::is_nothrow_move_constructible<
55431       VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeaturesEXT>::value,
55432     "PhysicalDevicePipelineCreationCacheControlFeaturesEXT is not nothrow_move_constructible!" );
55433 
55434   template <>
55435   struct CppType<StructureType, StructureType::ePhysicalDevicePipelineCreationCacheControlFeaturesEXT>
55436   {
55437     using Type = PhysicalDevicePipelineCreationCacheControlFeaturesEXT;
55438   };
55439 
55440   struct PhysicalDevicePipelineExecutablePropertiesFeaturesKHR
55441   {
55442     using NativeType = VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR;
55443 
55444     static const bool                                  allowDuplicate = false;
55445     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
55446       StructureType::ePhysicalDevicePipelineExecutablePropertiesFeaturesKHR;
55447 
55448 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePipelineExecutablePropertiesFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR55449     VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineExecutablePropertiesFeaturesKHR(
55450       VULKAN_HPP_NAMESPACE::Bool32 pipelineExecutableInfo_ = {} ) VULKAN_HPP_NOEXCEPT
55451       : pipelineExecutableInfo( pipelineExecutableInfo_ )
55452     {}
55453 
55454     VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineExecutablePropertiesFeaturesKHR(
55455       PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55456 
PhysicalDevicePipelineExecutablePropertiesFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR55457     PhysicalDevicePipelineExecutablePropertiesFeaturesKHR(
55458       VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
55459       : PhysicalDevicePipelineExecutablePropertiesFeaturesKHR(
55460           *reinterpret_cast<PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const *>( &rhs ) )
55461     {}
55462 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
55463 
55464     PhysicalDevicePipelineExecutablePropertiesFeaturesKHR &
55465       operator=( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55466 
55467     PhysicalDevicePipelineExecutablePropertiesFeaturesKHR &
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR55468       operator=( VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
55469     {
55470       *this =
55471         *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const *>( &rhs );
55472       return *this;
55473     }
55474 
55475 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
55476     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineExecutablePropertiesFeaturesKHR &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR55477                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
55478     {
55479       pNext = pNext_;
55480       return *this;
55481     }
55482 
55483     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineExecutablePropertiesFeaturesKHR &
setPipelineExecutableInfoVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR55484       setPipelineExecutableInfo( VULKAN_HPP_NAMESPACE::Bool32 pipelineExecutableInfo_ ) VULKAN_HPP_NOEXCEPT
55485     {
55486       pipelineExecutableInfo = pipelineExecutableInfo_;
55487       return *this;
55488     }
55489 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
55490 
operator VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR55491     explicit operator VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
55492     {
55493       return *reinterpret_cast<const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR *>( this );
55494     }
55495 
operator VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR55496     explicit operator VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR &() VULKAN_HPP_NOEXCEPT
55497     {
55498       return *reinterpret_cast<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR *>( this );
55499     }
55500 
55501 #if 14 <= VULKAN_HPP_CPP_VERSION
55502     auto
55503 #else
55504     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
55505 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR55506       reflect() const VULKAN_HPP_NOEXCEPT
55507     {
55508       return std::tie( sType, pNext, pipelineExecutableInfo );
55509     }
55510 
55511 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
55512     auto operator<=>( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & ) const = default;
55513 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR55514     bool operator==( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
55515     {
55516       return this->reflect() == rhs.reflect();
55517     }
55518 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR55519     bool operator!=( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
55520     {
55521       return this->reflect() != rhs.reflect();
55522     }
55523 #endif
55524 
55525   public:
55526     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePipelineExecutablePropertiesFeaturesKHR;
55527     void *                              pNext = {};
55528     VULKAN_HPP_NAMESPACE::Bool32        pipelineExecutableInfo = {};
55529   };
55530   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR ) ==
55531                               sizeof( VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR ),
55532                             "struct and wrapper have different size!" );
55533   VULKAN_HPP_STATIC_ASSERT(
55534     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR>::value,
55535     "struct wrapper is not a standard layout!" );
55536   VULKAN_HPP_STATIC_ASSERT(
55537     std::is_nothrow_move_constructible<
55538       VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR>::value,
55539     "PhysicalDevicePipelineExecutablePropertiesFeaturesKHR is not nothrow_move_constructible!" );
55540 
55541   template <>
55542   struct CppType<StructureType, StructureType::ePhysicalDevicePipelineExecutablePropertiesFeaturesKHR>
55543   {
55544     using Type = PhysicalDevicePipelineExecutablePropertiesFeaturesKHR;
55545   };
55546 
55547   struct PhysicalDevicePointClippingProperties
55548   {
55549     using NativeType = VkPhysicalDevicePointClippingProperties;
55550 
55551     static const bool                                  allowDuplicate = false;
55552     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
55553       StructureType::ePhysicalDevicePointClippingProperties;
55554 
55555 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePointClippingPropertiesVULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties55556     VULKAN_HPP_CONSTEXPR PhysicalDevicePointClippingProperties(
55557       VULKAN_HPP_NAMESPACE::PointClippingBehavior pointClippingBehavior_ =
55558         VULKAN_HPP_NAMESPACE::PointClippingBehavior::eAllClipPlanes ) VULKAN_HPP_NOEXCEPT
55559       : pointClippingBehavior( pointClippingBehavior_ )
55560     {}
55561 
55562     VULKAN_HPP_CONSTEXPR PhysicalDevicePointClippingProperties( PhysicalDevicePointClippingProperties const & rhs )
55563       VULKAN_HPP_NOEXCEPT = default;
55564 
PhysicalDevicePointClippingPropertiesVULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties55565     PhysicalDevicePointClippingProperties( VkPhysicalDevicePointClippingProperties const & rhs ) VULKAN_HPP_NOEXCEPT
55566       : PhysicalDevicePointClippingProperties(
55567           *reinterpret_cast<PhysicalDevicePointClippingProperties const *>( &rhs ) )
55568     {}
55569 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
55570 
55571     PhysicalDevicePointClippingProperties &
55572       operator=( PhysicalDevicePointClippingProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55573 
55574     PhysicalDevicePointClippingProperties &
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties55575       operator=( VkPhysicalDevicePointClippingProperties const & rhs ) VULKAN_HPP_NOEXCEPT
55576     {
55577       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties const *>( &rhs );
55578       return *this;
55579     }
55580 
operator VkPhysicalDevicePointClippingProperties const&VULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties55581     explicit operator VkPhysicalDevicePointClippingProperties const &() const VULKAN_HPP_NOEXCEPT
55582     {
55583       return *reinterpret_cast<const VkPhysicalDevicePointClippingProperties *>( this );
55584     }
55585 
operator VkPhysicalDevicePointClippingProperties&VULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties55586     explicit operator VkPhysicalDevicePointClippingProperties &() VULKAN_HPP_NOEXCEPT
55587     {
55588       return *reinterpret_cast<VkPhysicalDevicePointClippingProperties *>( this );
55589     }
55590 
55591 #if 14 <= VULKAN_HPP_CPP_VERSION
55592     auto
55593 #else
55594     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
55595                void * const &,
55596                VULKAN_HPP_NAMESPACE::PointClippingBehavior const &>
55597 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties55598       reflect() const VULKAN_HPP_NOEXCEPT
55599     {
55600       return std::tie( sType, pNext, pointClippingBehavior );
55601     }
55602 
55603 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
55604     auto operator<=>( PhysicalDevicePointClippingProperties const & ) const = default;
55605 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties55606     bool operator==( PhysicalDevicePointClippingProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
55607     {
55608       return this->reflect() == rhs.reflect();
55609     }
55610 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties55611     bool operator!=( PhysicalDevicePointClippingProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
55612     {
55613       return this->reflect() != rhs.reflect();
55614     }
55615 #endif
55616 
55617   public:
55618     VULKAN_HPP_NAMESPACE::StructureType         sType = StructureType::ePhysicalDevicePointClippingProperties;
55619     void *                                      pNext = {};
55620     VULKAN_HPP_NAMESPACE::PointClippingBehavior pointClippingBehavior =
55621       VULKAN_HPP_NAMESPACE::PointClippingBehavior::eAllClipPlanes;
55622   };
55623   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties ) ==
55624                               sizeof( VkPhysicalDevicePointClippingProperties ),
55625                             "struct and wrapper have different size!" );
55626   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties>::value,
55627                             "struct wrapper is not a standard layout!" );
55628   VULKAN_HPP_STATIC_ASSERT(
55629     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties>::value,
55630     "PhysicalDevicePointClippingProperties is not nothrow_move_constructible!" );
55631 
55632   template <>
55633   struct CppType<StructureType, StructureType::ePhysicalDevicePointClippingProperties>
55634   {
55635     using Type = PhysicalDevicePointClippingProperties;
55636   };
55637   using PhysicalDevicePointClippingPropertiesKHR = PhysicalDevicePointClippingProperties;
55638 
55639 #if defined( VK_ENABLE_BETA_EXTENSIONS )
55640   struct PhysicalDevicePortabilitySubsetFeaturesKHR
55641   {
55642     using NativeType = VkPhysicalDevicePortabilitySubsetFeaturesKHR;
55643 
55644     static const bool                                  allowDuplicate = false;
55645     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
55646       StructureType::ePhysicalDevicePortabilitySubsetFeaturesKHR;
55647 
55648 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePortabilitySubsetFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR55649     VULKAN_HPP_CONSTEXPR PhysicalDevicePortabilitySubsetFeaturesKHR(
55650       VULKAN_HPP_NAMESPACE::Bool32 constantAlphaColorBlendFactors_         = {},
55651       VULKAN_HPP_NAMESPACE::Bool32 events_                                 = {},
55652       VULKAN_HPP_NAMESPACE::Bool32 imageViewFormatReinterpretation_        = {},
55653       VULKAN_HPP_NAMESPACE::Bool32 imageViewFormatSwizzle_                 = {},
55654       VULKAN_HPP_NAMESPACE::Bool32 imageView2DOn3DImage_                   = {},
55655       VULKAN_HPP_NAMESPACE::Bool32 multisampleArrayImage_                  = {},
55656       VULKAN_HPP_NAMESPACE::Bool32 mutableComparisonSamplers_              = {},
55657       VULKAN_HPP_NAMESPACE::Bool32 pointPolygons_                          = {},
55658       VULKAN_HPP_NAMESPACE::Bool32 samplerMipLodBias_                      = {},
55659       VULKAN_HPP_NAMESPACE::Bool32 separateStencilMaskRef_                 = {},
55660       VULKAN_HPP_NAMESPACE::Bool32 shaderSampleRateInterpolationFunctions_ = {},
55661       VULKAN_HPP_NAMESPACE::Bool32 tessellationIsolines_                   = {},
55662       VULKAN_HPP_NAMESPACE::Bool32 tessellationPointMode_                  = {},
55663       VULKAN_HPP_NAMESPACE::Bool32 triangleFans_                           = {},
55664       VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeAccessBeyondStride_      = {} ) VULKAN_HPP_NOEXCEPT
55665       : constantAlphaColorBlendFactors( constantAlphaColorBlendFactors_ )
55666       , events( events_ )
55667       , imageViewFormatReinterpretation( imageViewFormatReinterpretation_ )
55668       , imageViewFormatSwizzle( imageViewFormatSwizzle_ )
55669       , imageView2DOn3DImage( imageView2DOn3DImage_ )
55670       , multisampleArrayImage( multisampleArrayImage_ )
55671       , mutableComparisonSamplers( mutableComparisonSamplers_ )
55672       , pointPolygons( pointPolygons_ )
55673       , samplerMipLodBias( samplerMipLodBias_ )
55674       , separateStencilMaskRef( separateStencilMaskRef_ )
55675       , shaderSampleRateInterpolationFunctions( shaderSampleRateInterpolationFunctions_ )
55676       , tessellationIsolines( tessellationIsolines_ )
55677       , tessellationPointMode( tessellationPointMode_ )
55678       , triangleFans( triangleFans_ )
55679       , vertexAttributeAccessBeyondStride( vertexAttributeAccessBeyondStride_ )
55680     {}
55681 
55682     VULKAN_HPP_CONSTEXPR PhysicalDevicePortabilitySubsetFeaturesKHR(
55683       PhysicalDevicePortabilitySubsetFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55684 
PhysicalDevicePortabilitySubsetFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR55685     PhysicalDevicePortabilitySubsetFeaturesKHR( VkPhysicalDevicePortabilitySubsetFeaturesKHR const & rhs )
55686       VULKAN_HPP_NOEXCEPT
55687       : PhysicalDevicePortabilitySubsetFeaturesKHR(
55688           *reinterpret_cast<PhysicalDevicePortabilitySubsetFeaturesKHR const *>( &rhs ) )
55689     {}
55690 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
55691 
55692     PhysicalDevicePortabilitySubsetFeaturesKHR &
55693       operator=( PhysicalDevicePortabilitySubsetFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55694 
55695     PhysicalDevicePortabilitySubsetFeaturesKHR &
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR55696       operator=( VkPhysicalDevicePortabilitySubsetFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
55697     {
55698       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR const *>( &rhs );
55699       return *this;
55700     }
55701 
55702 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR55703     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
55704     {
55705       pNext = pNext_;
55706       return *this;
55707     }
55708 
setConstantAlphaColorBlendFactorsVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR55709     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & setConstantAlphaColorBlendFactors(
55710       VULKAN_HPP_NAMESPACE::Bool32 constantAlphaColorBlendFactors_ ) VULKAN_HPP_NOEXCEPT
55711     {
55712       constantAlphaColorBlendFactors = constantAlphaColorBlendFactors_;
55713       return *this;
55714     }
55715 
55716     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR &
setEventsVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR55717                             setEvents( VULKAN_HPP_NAMESPACE::Bool32 events_ ) VULKAN_HPP_NOEXCEPT
55718     {
55719       events = events_;
55720       return *this;
55721     }
55722 
setImageViewFormatReinterpretationVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR55723     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & setImageViewFormatReinterpretation(
55724       VULKAN_HPP_NAMESPACE::Bool32 imageViewFormatReinterpretation_ ) VULKAN_HPP_NOEXCEPT
55725     {
55726       imageViewFormatReinterpretation = imageViewFormatReinterpretation_;
55727       return *this;
55728     }
55729 
55730     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR &
setImageViewFormatSwizzleVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR55731       setImageViewFormatSwizzle( VULKAN_HPP_NAMESPACE::Bool32 imageViewFormatSwizzle_ ) VULKAN_HPP_NOEXCEPT
55732     {
55733       imageViewFormatSwizzle = imageViewFormatSwizzle_;
55734       return *this;
55735     }
55736 
55737     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR &
setImageView2DOn3DImageVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR55738       setImageView2DOn3DImage( VULKAN_HPP_NAMESPACE::Bool32 imageView2DOn3DImage_ ) VULKAN_HPP_NOEXCEPT
55739     {
55740       imageView2DOn3DImage = imageView2DOn3DImage_;
55741       return *this;
55742     }
55743 
55744     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR &
setMultisampleArrayImageVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR55745       setMultisampleArrayImage( VULKAN_HPP_NAMESPACE::Bool32 multisampleArrayImage_ ) VULKAN_HPP_NOEXCEPT
55746     {
55747       multisampleArrayImage = multisampleArrayImage_;
55748       return *this;
55749     }
55750 
55751     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR &
setMutableComparisonSamplersVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR55752       setMutableComparisonSamplers( VULKAN_HPP_NAMESPACE::Bool32 mutableComparisonSamplers_ ) VULKAN_HPP_NOEXCEPT
55753     {
55754       mutableComparisonSamplers = mutableComparisonSamplers_;
55755       return *this;
55756     }
55757 
55758     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR &
setPointPolygonsVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR55759                             setPointPolygons( VULKAN_HPP_NAMESPACE::Bool32 pointPolygons_ ) VULKAN_HPP_NOEXCEPT
55760     {
55761       pointPolygons = pointPolygons_;
55762       return *this;
55763     }
55764 
55765     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR &
setSamplerMipLodBiasVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR55766                             setSamplerMipLodBias( VULKAN_HPP_NAMESPACE::Bool32 samplerMipLodBias_ ) VULKAN_HPP_NOEXCEPT
55767     {
55768       samplerMipLodBias = samplerMipLodBias_;
55769       return *this;
55770     }
55771 
55772     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR &
setSeparateStencilMaskRefVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR55773       setSeparateStencilMaskRef( VULKAN_HPP_NAMESPACE::Bool32 separateStencilMaskRef_ ) VULKAN_HPP_NOEXCEPT
55774     {
55775       separateStencilMaskRef = separateStencilMaskRef_;
55776       return *this;
55777     }
55778 
setShaderSampleRateInterpolationFunctionsVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR55779     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & setShaderSampleRateInterpolationFunctions(
55780       VULKAN_HPP_NAMESPACE::Bool32 shaderSampleRateInterpolationFunctions_ ) VULKAN_HPP_NOEXCEPT
55781     {
55782       shaderSampleRateInterpolationFunctions = shaderSampleRateInterpolationFunctions_;
55783       return *this;
55784     }
55785 
55786     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR &
setTessellationIsolinesVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR55787       setTessellationIsolines( VULKAN_HPP_NAMESPACE::Bool32 tessellationIsolines_ ) VULKAN_HPP_NOEXCEPT
55788     {
55789       tessellationIsolines = tessellationIsolines_;
55790       return *this;
55791     }
55792 
55793     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR &
setTessellationPointModeVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR55794       setTessellationPointMode( VULKAN_HPP_NAMESPACE::Bool32 tessellationPointMode_ ) VULKAN_HPP_NOEXCEPT
55795     {
55796       tessellationPointMode = tessellationPointMode_;
55797       return *this;
55798     }
55799 
55800     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR &
setTriangleFansVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR55801                             setTriangleFans( VULKAN_HPP_NAMESPACE::Bool32 triangleFans_ ) VULKAN_HPP_NOEXCEPT
55802     {
55803       triangleFans = triangleFans_;
55804       return *this;
55805     }
55806 
setVertexAttributeAccessBeyondStrideVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR55807     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & setVertexAttributeAccessBeyondStride(
55808       VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeAccessBeyondStride_ ) VULKAN_HPP_NOEXCEPT
55809     {
55810       vertexAttributeAccessBeyondStride = vertexAttributeAccessBeyondStride_;
55811       return *this;
55812     }
55813 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
55814 
operator VkPhysicalDevicePortabilitySubsetFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR55815     explicit operator VkPhysicalDevicePortabilitySubsetFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
55816     {
55817       return *reinterpret_cast<const VkPhysicalDevicePortabilitySubsetFeaturesKHR *>( this );
55818     }
55819 
operator VkPhysicalDevicePortabilitySubsetFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR55820     explicit operator VkPhysicalDevicePortabilitySubsetFeaturesKHR &() VULKAN_HPP_NOEXCEPT
55821     {
55822       return *reinterpret_cast<VkPhysicalDevicePortabilitySubsetFeaturesKHR *>( this );
55823     }
55824 
55825 #  if 14 <= VULKAN_HPP_CPP_VERSION
55826     auto
55827 #  else
55828     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
55829                void * const &,
55830                VULKAN_HPP_NAMESPACE::Bool32 const &,
55831                VULKAN_HPP_NAMESPACE::Bool32 const &,
55832                VULKAN_HPP_NAMESPACE::Bool32 const &,
55833                VULKAN_HPP_NAMESPACE::Bool32 const &,
55834                VULKAN_HPP_NAMESPACE::Bool32 const &,
55835                VULKAN_HPP_NAMESPACE::Bool32 const &,
55836                VULKAN_HPP_NAMESPACE::Bool32 const &,
55837                VULKAN_HPP_NAMESPACE::Bool32 const &,
55838                VULKAN_HPP_NAMESPACE::Bool32 const &,
55839                VULKAN_HPP_NAMESPACE::Bool32 const &,
55840                VULKAN_HPP_NAMESPACE::Bool32 const &,
55841                VULKAN_HPP_NAMESPACE::Bool32 const &,
55842                VULKAN_HPP_NAMESPACE::Bool32 const &,
55843                VULKAN_HPP_NAMESPACE::Bool32 const &,
55844                VULKAN_HPP_NAMESPACE::Bool32 const &>
55845 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR55846       reflect() const VULKAN_HPP_NOEXCEPT
55847     {
55848       return std::tie( sType,
55849                        pNext,
55850                        constantAlphaColorBlendFactors,
55851                        events,
55852                        imageViewFormatReinterpretation,
55853                        imageViewFormatSwizzle,
55854                        imageView2DOn3DImage,
55855                        multisampleArrayImage,
55856                        mutableComparisonSamplers,
55857                        pointPolygons,
55858                        samplerMipLodBias,
55859                        separateStencilMaskRef,
55860                        shaderSampleRateInterpolationFunctions,
55861                        tessellationIsolines,
55862                        tessellationPointMode,
55863                        triangleFans,
55864                        vertexAttributeAccessBeyondStride );
55865     }
55866 
55867 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
55868     auto operator<=>( PhysicalDevicePortabilitySubsetFeaturesKHR const & ) const = default;
55869 #  else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR55870     bool operator==( PhysicalDevicePortabilitySubsetFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
55871     {
55872       return this->reflect() == rhs.reflect();
55873     }
55874 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR55875     bool operator!=( PhysicalDevicePortabilitySubsetFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
55876     {
55877       return this->reflect() != rhs.reflect();
55878     }
55879 #  endif
55880 
55881   public:
55882     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePortabilitySubsetFeaturesKHR;
55883     void *                              pNext = {};
55884     VULKAN_HPP_NAMESPACE::Bool32        constantAlphaColorBlendFactors         = {};
55885     VULKAN_HPP_NAMESPACE::Bool32        events                                 = {};
55886     VULKAN_HPP_NAMESPACE::Bool32        imageViewFormatReinterpretation        = {};
55887     VULKAN_HPP_NAMESPACE::Bool32        imageViewFormatSwizzle                 = {};
55888     VULKAN_HPP_NAMESPACE::Bool32        imageView2DOn3DImage                   = {};
55889     VULKAN_HPP_NAMESPACE::Bool32        multisampleArrayImage                  = {};
55890     VULKAN_HPP_NAMESPACE::Bool32        mutableComparisonSamplers              = {};
55891     VULKAN_HPP_NAMESPACE::Bool32        pointPolygons                          = {};
55892     VULKAN_HPP_NAMESPACE::Bool32        samplerMipLodBias                      = {};
55893     VULKAN_HPP_NAMESPACE::Bool32        separateStencilMaskRef                 = {};
55894     VULKAN_HPP_NAMESPACE::Bool32        shaderSampleRateInterpolationFunctions = {};
55895     VULKAN_HPP_NAMESPACE::Bool32        tessellationIsolines                   = {};
55896     VULKAN_HPP_NAMESPACE::Bool32        tessellationPointMode                  = {};
55897     VULKAN_HPP_NAMESPACE::Bool32        triangleFans                           = {};
55898     VULKAN_HPP_NAMESPACE::Bool32        vertexAttributeAccessBeyondStride      = {};
55899   };
55900   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR ) ==
55901                               sizeof( VkPhysicalDevicePortabilitySubsetFeaturesKHR ),
55902                             "struct and wrapper have different size!" );
55903   VULKAN_HPP_STATIC_ASSERT(
55904     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR>::value,
55905     "struct wrapper is not a standard layout!" );
55906   VULKAN_HPP_STATIC_ASSERT(
55907     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR>::value,
55908     "PhysicalDevicePortabilitySubsetFeaturesKHR is not nothrow_move_constructible!" );
55909 
55910   template <>
55911   struct CppType<StructureType, StructureType::ePhysicalDevicePortabilitySubsetFeaturesKHR>
55912   {
55913     using Type = PhysicalDevicePortabilitySubsetFeaturesKHR;
55914   };
55915 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
55916 
55917 #if defined( VK_ENABLE_BETA_EXTENSIONS )
55918   struct PhysicalDevicePortabilitySubsetPropertiesKHR
55919   {
55920     using NativeType = VkPhysicalDevicePortabilitySubsetPropertiesKHR;
55921 
55922     static const bool                                  allowDuplicate = false;
55923     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
55924       StructureType::ePhysicalDevicePortabilitySubsetPropertiesKHR;
55925 
55926 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePortabilitySubsetPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR55927     VULKAN_HPP_CONSTEXPR PhysicalDevicePortabilitySubsetPropertiesKHR(
55928       uint32_t minVertexInputBindingStrideAlignment_ = {} ) VULKAN_HPP_NOEXCEPT
55929       : minVertexInputBindingStrideAlignment( minVertexInputBindingStrideAlignment_ )
55930     {}
55931 
55932     VULKAN_HPP_CONSTEXPR PhysicalDevicePortabilitySubsetPropertiesKHR(
55933       PhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55934 
PhysicalDevicePortabilitySubsetPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR55935     PhysicalDevicePortabilitySubsetPropertiesKHR( VkPhysicalDevicePortabilitySubsetPropertiesKHR const & rhs )
55936       VULKAN_HPP_NOEXCEPT
55937       : PhysicalDevicePortabilitySubsetPropertiesKHR(
55938           *reinterpret_cast<PhysicalDevicePortabilitySubsetPropertiesKHR const *>( &rhs ) )
55939     {}
55940 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
55941 
55942     PhysicalDevicePortabilitySubsetPropertiesKHR &
55943       operator=( PhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55944 
55945     PhysicalDevicePortabilitySubsetPropertiesKHR &
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR55946       operator=( VkPhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
55947     {
55948       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR const *>( &rhs );
55949       return *this;
55950     }
55951 
55952 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR55953     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetPropertiesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
55954     {
55955       pNext = pNext_;
55956       return *this;
55957     }
55958 
55959     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetPropertiesKHR &
setMinVertexInputBindingStrideAlignmentVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR55960       setMinVertexInputBindingStrideAlignment( uint32_t minVertexInputBindingStrideAlignment_ ) VULKAN_HPP_NOEXCEPT
55961     {
55962       minVertexInputBindingStrideAlignment = minVertexInputBindingStrideAlignment_;
55963       return *this;
55964     }
55965 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
55966 
operator VkPhysicalDevicePortabilitySubsetPropertiesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR55967     explicit operator VkPhysicalDevicePortabilitySubsetPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
55968     {
55969       return *reinterpret_cast<const VkPhysicalDevicePortabilitySubsetPropertiesKHR *>( this );
55970     }
55971 
operator VkPhysicalDevicePortabilitySubsetPropertiesKHR&VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR55972     explicit operator VkPhysicalDevicePortabilitySubsetPropertiesKHR &() VULKAN_HPP_NOEXCEPT
55973     {
55974       return *reinterpret_cast<VkPhysicalDevicePortabilitySubsetPropertiesKHR *>( this );
55975     }
55976 
55977 #  if 14 <= VULKAN_HPP_CPP_VERSION
55978     auto
55979 #  else
55980     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
55981 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR55982       reflect() const VULKAN_HPP_NOEXCEPT
55983     {
55984       return std::tie( sType, pNext, minVertexInputBindingStrideAlignment );
55985     }
55986 
55987 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
55988     auto operator<=>( PhysicalDevicePortabilitySubsetPropertiesKHR const & ) const = default;
55989 #  else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR55990     bool operator==( PhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
55991     {
55992       return this->reflect() == rhs.reflect();
55993     }
55994 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR55995     bool operator!=( PhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
55996     {
55997       return this->reflect() != rhs.reflect();
55998     }
55999 #  endif
56000 
56001   public:
56002     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePortabilitySubsetPropertiesKHR;
56003     void *                              pNext = {};
56004     uint32_t                            minVertexInputBindingStrideAlignment = {};
56005   };
56006   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR ) ==
56007                               sizeof( VkPhysicalDevicePortabilitySubsetPropertiesKHR ),
56008                             "struct and wrapper have different size!" );
56009   VULKAN_HPP_STATIC_ASSERT(
56010     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR>::value,
56011     "struct wrapper is not a standard layout!" );
56012   VULKAN_HPP_STATIC_ASSERT(
56013     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR>::value,
56014     "PhysicalDevicePortabilitySubsetPropertiesKHR is not nothrow_move_constructible!" );
56015 
56016   template <>
56017   struct CppType<StructureType, StructureType::ePhysicalDevicePortabilitySubsetPropertiesKHR>
56018   {
56019     using Type = PhysicalDevicePortabilitySubsetPropertiesKHR;
56020   };
56021 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
56022 
56023   struct PhysicalDevicePresentIdFeaturesKHR
56024   {
56025     using NativeType = VkPhysicalDevicePresentIdFeaturesKHR;
56026 
56027     static const bool                                  allowDuplicate = false;
56028     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
56029       StructureType::ePhysicalDevicePresentIdFeaturesKHR;
56030 
56031 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
56032     VULKAN_HPP_CONSTEXPR
PhysicalDevicePresentIdFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR56033       PhysicalDevicePresentIdFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 presentId_ = {} ) VULKAN_HPP_NOEXCEPT
56034       : presentId( presentId_ )
56035     {}
56036 
56037     VULKAN_HPP_CONSTEXPR PhysicalDevicePresentIdFeaturesKHR( PhysicalDevicePresentIdFeaturesKHR const & rhs )
56038       VULKAN_HPP_NOEXCEPT = default;
56039 
PhysicalDevicePresentIdFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR56040     PhysicalDevicePresentIdFeaturesKHR( VkPhysicalDevicePresentIdFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
56041       : PhysicalDevicePresentIdFeaturesKHR( *reinterpret_cast<PhysicalDevicePresentIdFeaturesKHR const *>( &rhs ) )
56042     {}
56043 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
56044 
56045     PhysicalDevicePresentIdFeaturesKHR &
56046       operator=( PhysicalDevicePresentIdFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56047 
56048     PhysicalDevicePresentIdFeaturesKHR &
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR56049       operator=( VkPhysicalDevicePresentIdFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
56050     {
56051       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR const *>( &rhs );
56052       return *this;
56053     }
56054 
56055 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR56056     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentIdFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
56057     {
56058       pNext = pNext_;
56059       return *this;
56060     }
56061 
56062     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentIdFeaturesKHR &
setPresentIdVULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR56063                             setPresentId( VULKAN_HPP_NAMESPACE::Bool32 presentId_ ) VULKAN_HPP_NOEXCEPT
56064     {
56065       presentId = presentId_;
56066       return *this;
56067     }
56068 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
56069 
operator VkPhysicalDevicePresentIdFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR56070     explicit operator VkPhysicalDevicePresentIdFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
56071     {
56072       return *reinterpret_cast<const VkPhysicalDevicePresentIdFeaturesKHR *>( this );
56073     }
56074 
operator VkPhysicalDevicePresentIdFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR56075     explicit operator VkPhysicalDevicePresentIdFeaturesKHR &() VULKAN_HPP_NOEXCEPT
56076     {
56077       return *reinterpret_cast<VkPhysicalDevicePresentIdFeaturesKHR *>( this );
56078     }
56079 
56080 #if 14 <= VULKAN_HPP_CPP_VERSION
56081     auto
56082 #else
56083     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
56084 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR56085       reflect() const VULKAN_HPP_NOEXCEPT
56086     {
56087       return std::tie( sType, pNext, presentId );
56088     }
56089 
56090 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
56091     auto operator<=>( PhysicalDevicePresentIdFeaturesKHR const & ) const = default;
56092 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR56093     bool operator==( PhysicalDevicePresentIdFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
56094     {
56095       return this->reflect() == rhs.reflect();
56096     }
56097 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR56098     bool operator!=( PhysicalDevicePresentIdFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
56099     {
56100       return this->reflect() != rhs.reflect();
56101     }
56102 #endif
56103 
56104   public:
56105     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::ePhysicalDevicePresentIdFeaturesKHR;
56106     void *                              pNext     = {};
56107     VULKAN_HPP_NAMESPACE::Bool32        presentId = {};
56108   };
56109   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR ) ==
56110                               sizeof( VkPhysicalDevicePresentIdFeaturesKHR ),
56111                             "struct and wrapper have different size!" );
56112   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR>::value,
56113                             "struct wrapper is not a standard layout!" );
56114   VULKAN_HPP_STATIC_ASSERT(
56115     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR>::value,
56116     "PhysicalDevicePresentIdFeaturesKHR is not nothrow_move_constructible!" );
56117 
56118   template <>
56119   struct CppType<StructureType, StructureType::ePhysicalDevicePresentIdFeaturesKHR>
56120   {
56121     using Type = PhysicalDevicePresentIdFeaturesKHR;
56122   };
56123 
56124   struct PhysicalDevicePresentWaitFeaturesKHR
56125   {
56126     using NativeType = VkPhysicalDevicePresentWaitFeaturesKHR;
56127 
56128     static const bool                                  allowDuplicate = false;
56129     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
56130       StructureType::ePhysicalDevicePresentWaitFeaturesKHR;
56131 
56132 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
56133     VULKAN_HPP_CONSTEXPR
PhysicalDevicePresentWaitFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR56134       PhysicalDevicePresentWaitFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 presentWait_ = {} ) VULKAN_HPP_NOEXCEPT
56135       : presentWait( presentWait_ )
56136     {}
56137 
56138     VULKAN_HPP_CONSTEXPR PhysicalDevicePresentWaitFeaturesKHR( PhysicalDevicePresentWaitFeaturesKHR const & rhs )
56139       VULKAN_HPP_NOEXCEPT = default;
56140 
PhysicalDevicePresentWaitFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR56141     PhysicalDevicePresentWaitFeaturesKHR( VkPhysicalDevicePresentWaitFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
56142       : PhysicalDevicePresentWaitFeaturesKHR( *reinterpret_cast<PhysicalDevicePresentWaitFeaturesKHR const *>( &rhs ) )
56143     {}
56144 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
56145 
56146     PhysicalDevicePresentWaitFeaturesKHR &
56147       operator=( PhysicalDevicePresentWaitFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56148 
56149     PhysicalDevicePresentWaitFeaturesKHR &
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR56150       operator=( VkPhysicalDevicePresentWaitFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
56151     {
56152       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR const *>( &rhs );
56153       return *this;
56154     }
56155 
56156 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR56157     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentWaitFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
56158     {
56159       pNext = pNext_;
56160       return *this;
56161     }
56162 
56163     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentWaitFeaturesKHR &
setPresentWaitVULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR56164                             setPresentWait( VULKAN_HPP_NAMESPACE::Bool32 presentWait_ ) VULKAN_HPP_NOEXCEPT
56165     {
56166       presentWait = presentWait_;
56167       return *this;
56168     }
56169 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
56170 
operator VkPhysicalDevicePresentWaitFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR56171     explicit operator VkPhysicalDevicePresentWaitFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
56172     {
56173       return *reinterpret_cast<const VkPhysicalDevicePresentWaitFeaturesKHR *>( this );
56174     }
56175 
operator VkPhysicalDevicePresentWaitFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR56176     explicit operator VkPhysicalDevicePresentWaitFeaturesKHR &() VULKAN_HPP_NOEXCEPT
56177     {
56178       return *reinterpret_cast<VkPhysicalDevicePresentWaitFeaturesKHR *>( this );
56179     }
56180 
56181 #if 14 <= VULKAN_HPP_CPP_VERSION
56182     auto
56183 #else
56184     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
56185 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR56186       reflect() const VULKAN_HPP_NOEXCEPT
56187     {
56188       return std::tie( sType, pNext, presentWait );
56189     }
56190 
56191 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
56192     auto operator<=>( PhysicalDevicePresentWaitFeaturesKHR const & ) const = default;
56193 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR56194     bool operator==( PhysicalDevicePresentWaitFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
56195     {
56196       return this->reflect() == rhs.reflect();
56197     }
56198 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR56199     bool operator!=( PhysicalDevicePresentWaitFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
56200     {
56201       return this->reflect() != rhs.reflect();
56202     }
56203 #endif
56204 
56205   public:
56206     VULKAN_HPP_NAMESPACE::StructureType sType       = StructureType::ePhysicalDevicePresentWaitFeaturesKHR;
56207     void *                              pNext       = {};
56208     VULKAN_HPP_NAMESPACE::Bool32        presentWait = {};
56209   };
56210   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR ) ==
56211                               sizeof( VkPhysicalDevicePresentWaitFeaturesKHR ),
56212                             "struct and wrapper have different size!" );
56213   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR>::value,
56214                             "struct wrapper is not a standard layout!" );
56215   VULKAN_HPP_STATIC_ASSERT(
56216     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR>::value,
56217     "PhysicalDevicePresentWaitFeaturesKHR is not nothrow_move_constructible!" );
56218 
56219   template <>
56220   struct CppType<StructureType, StructureType::ePhysicalDevicePresentWaitFeaturesKHR>
56221   {
56222     using Type = PhysicalDevicePresentWaitFeaturesKHR;
56223   };
56224 
56225   struct PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT
56226   {
56227     using NativeType = VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT;
56228 
56229     static const bool                                  allowDuplicate = false;
56230     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
56231       StructureType::ePhysicalDevicePrimitiveTopologyListRestartFeaturesEXT;
56232 
56233 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePrimitiveTopologyListRestartFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT56234     VULKAN_HPP_CONSTEXPR PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT(
56235       VULKAN_HPP_NAMESPACE::Bool32 primitiveTopologyListRestart_      = {},
56236       VULKAN_HPP_NAMESPACE::Bool32 primitiveTopologyPatchListRestart_ = {} ) VULKAN_HPP_NOEXCEPT
56237       : primitiveTopologyListRestart( primitiveTopologyListRestart_ )
56238       , primitiveTopologyPatchListRestart( primitiveTopologyPatchListRestart_ )
56239     {}
56240 
56241     VULKAN_HPP_CONSTEXPR PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT(
56242       PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56243 
PhysicalDevicePrimitiveTopologyListRestartFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT56244     PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT(
56245       VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
56246       : PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT(
56247           *reinterpret_cast<PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const *>( &rhs ) )
56248     {}
56249 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
56250 
56251     PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT &
56252       operator=( PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56253 
56254     PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT56255       operator=( VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
56256     {
56257       *this =
56258         *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const *>( &rhs );
56259       return *this;
56260     }
56261 
56262 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
56263     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT56264                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
56265     {
56266       pNext = pNext_;
56267       return *this;
56268     }
56269 
56270     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT &
setPrimitiveTopologyListRestartVULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT56271       setPrimitiveTopologyListRestart( VULKAN_HPP_NAMESPACE::Bool32 primitiveTopologyListRestart_ ) VULKAN_HPP_NOEXCEPT
56272     {
56273       primitiveTopologyListRestart = primitiveTopologyListRestart_;
56274       return *this;
56275     }
56276 
56277     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT &
setPrimitiveTopologyPatchListRestartVULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT56278       setPrimitiveTopologyPatchListRestart( VULKAN_HPP_NAMESPACE::Bool32 primitiveTopologyPatchListRestart_ )
56279         VULKAN_HPP_NOEXCEPT
56280     {
56281       primitiveTopologyPatchListRestart = primitiveTopologyPatchListRestart_;
56282       return *this;
56283     }
56284 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
56285 
operator VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT56286     explicit operator VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
56287     {
56288       return *reinterpret_cast<const VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT *>( this );
56289     }
56290 
operator VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT56291     explicit operator VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT &() VULKAN_HPP_NOEXCEPT
56292     {
56293       return *reinterpret_cast<VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT *>( this );
56294     }
56295 
56296 #if 14 <= VULKAN_HPP_CPP_VERSION
56297     auto
56298 #else
56299     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
56300                void * const &,
56301                VULKAN_HPP_NAMESPACE::Bool32 const &,
56302                VULKAN_HPP_NAMESPACE::Bool32 const &>
56303 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT56304       reflect() const VULKAN_HPP_NOEXCEPT
56305     {
56306       return std::tie( sType, pNext, primitiveTopologyListRestart, primitiveTopologyPatchListRestart );
56307     }
56308 
56309 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
56310     auto operator<=>( PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & ) const = default;
56311 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT56312     bool operator==( PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
56313     {
56314       return this->reflect() == rhs.reflect();
56315     }
56316 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT56317     bool operator!=( PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
56318     {
56319       return this->reflect() != rhs.reflect();
56320     }
56321 #endif
56322 
56323   public:
56324     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePrimitiveTopologyListRestartFeaturesEXT;
56325     void *                              pNext = {};
56326     VULKAN_HPP_NAMESPACE::Bool32        primitiveTopologyListRestart      = {};
56327     VULKAN_HPP_NAMESPACE::Bool32        primitiveTopologyPatchListRestart = {};
56328   };
56329   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT ) ==
56330                               sizeof( VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT ),
56331                             "struct and wrapper have different size!" );
56332   VULKAN_HPP_STATIC_ASSERT(
56333     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT>::value,
56334     "struct wrapper is not a standard layout!" );
56335   VULKAN_HPP_STATIC_ASSERT(
56336     std::is_nothrow_move_constructible<
56337       VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT>::value,
56338     "PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT is not nothrow_move_constructible!" );
56339 
56340   template <>
56341   struct CppType<StructureType, StructureType::ePhysicalDevicePrimitiveTopologyListRestartFeaturesEXT>
56342   {
56343     using Type = PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT;
56344   };
56345 
56346   struct PhysicalDevicePrivateDataFeaturesEXT
56347   {
56348     using NativeType = VkPhysicalDevicePrivateDataFeaturesEXT;
56349 
56350     static const bool                                  allowDuplicate = false;
56351     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
56352       StructureType::ePhysicalDevicePrivateDataFeaturesEXT;
56353 
56354 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
56355     VULKAN_HPP_CONSTEXPR
PhysicalDevicePrivateDataFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeaturesEXT56356       PhysicalDevicePrivateDataFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 privateData_ = {} ) VULKAN_HPP_NOEXCEPT
56357       : privateData( privateData_ )
56358     {}
56359 
56360     VULKAN_HPP_CONSTEXPR PhysicalDevicePrivateDataFeaturesEXT( PhysicalDevicePrivateDataFeaturesEXT const & rhs )
56361       VULKAN_HPP_NOEXCEPT = default;
56362 
PhysicalDevicePrivateDataFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeaturesEXT56363     PhysicalDevicePrivateDataFeaturesEXT( VkPhysicalDevicePrivateDataFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
56364       : PhysicalDevicePrivateDataFeaturesEXT( *reinterpret_cast<PhysicalDevicePrivateDataFeaturesEXT const *>( &rhs ) )
56365     {}
56366 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
56367 
56368     PhysicalDevicePrivateDataFeaturesEXT &
56369       operator=( PhysicalDevicePrivateDataFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56370 
56371     PhysicalDevicePrivateDataFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeaturesEXT56372       operator=( VkPhysicalDevicePrivateDataFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
56373     {
56374       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeaturesEXT const *>( &rhs );
56375       return *this;
56376     }
56377 
56378 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeaturesEXT56379     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrivateDataFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
56380     {
56381       pNext = pNext_;
56382       return *this;
56383     }
56384 
56385     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrivateDataFeaturesEXT &
setPrivateDataVULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeaturesEXT56386                             setPrivateData( VULKAN_HPP_NAMESPACE::Bool32 privateData_ ) VULKAN_HPP_NOEXCEPT
56387     {
56388       privateData = privateData_;
56389       return *this;
56390     }
56391 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
56392 
operator VkPhysicalDevicePrivateDataFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeaturesEXT56393     explicit operator VkPhysicalDevicePrivateDataFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
56394     {
56395       return *reinterpret_cast<const VkPhysicalDevicePrivateDataFeaturesEXT *>( this );
56396     }
56397 
operator VkPhysicalDevicePrivateDataFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeaturesEXT56398     explicit operator VkPhysicalDevicePrivateDataFeaturesEXT &() VULKAN_HPP_NOEXCEPT
56399     {
56400       return *reinterpret_cast<VkPhysicalDevicePrivateDataFeaturesEXT *>( this );
56401     }
56402 
56403 #if 14 <= VULKAN_HPP_CPP_VERSION
56404     auto
56405 #else
56406     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
56407 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeaturesEXT56408       reflect() const VULKAN_HPP_NOEXCEPT
56409     {
56410       return std::tie( sType, pNext, privateData );
56411     }
56412 
56413 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
56414     auto operator<=>( PhysicalDevicePrivateDataFeaturesEXT const & ) const = default;
56415 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeaturesEXT56416     bool operator==( PhysicalDevicePrivateDataFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
56417     {
56418       return this->reflect() == rhs.reflect();
56419     }
56420 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeaturesEXT56421     bool operator!=( PhysicalDevicePrivateDataFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
56422     {
56423       return this->reflect() != rhs.reflect();
56424     }
56425 #endif
56426 
56427   public:
56428     VULKAN_HPP_NAMESPACE::StructureType sType       = StructureType::ePhysicalDevicePrivateDataFeaturesEXT;
56429     void *                              pNext       = {};
56430     VULKAN_HPP_NAMESPACE::Bool32        privateData = {};
56431   };
56432   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeaturesEXT ) ==
56433                               sizeof( VkPhysicalDevicePrivateDataFeaturesEXT ),
56434                             "struct and wrapper have different size!" );
56435   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeaturesEXT>::value,
56436                             "struct wrapper is not a standard layout!" );
56437   VULKAN_HPP_STATIC_ASSERT(
56438     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeaturesEXT>::value,
56439     "PhysicalDevicePrivateDataFeaturesEXT is not nothrow_move_constructible!" );
56440 
56441   template <>
56442   struct CppType<StructureType, StructureType::ePhysicalDevicePrivateDataFeaturesEXT>
56443   {
56444     using Type = PhysicalDevicePrivateDataFeaturesEXT;
56445   };
56446 
56447   struct PhysicalDeviceSparseProperties
56448   {
56449     using NativeType = VkPhysicalDeviceSparseProperties;
56450 
56451 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSparsePropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties56452     VULKAN_HPP_CONSTEXPR PhysicalDeviceSparseProperties(
56453       VULKAN_HPP_NAMESPACE::Bool32 residencyStandard2DBlockShape_            = {},
56454       VULKAN_HPP_NAMESPACE::Bool32 residencyStandard2DMultisampleBlockShape_ = {},
56455       VULKAN_HPP_NAMESPACE::Bool32 residencyStandard3DBlockShape_            = {},
56456       VULKAN_HPP_NAMESPACE::Bool32 residencyAlignedMipSize_                  = {},
56457       VULKAN_HPP_NAMESPACE::Bool32 residencyNonResidentStrict_               = {} ) VULKAN_HPP_NOEXCEPT
56458       : residencyStandard2DBlockShape( residencyStandard2DBlockShape_ )
56459       , residencyStandard2DMultisampleBlockShape( residencyStandard2DMultisampleBlockShape_ )
56460       , residencyStandard3DBlockShape( residencyStandard3DBlockShape_ )
56461       , residencyAlignedMipSize( residencyAlignedMipSize_ )
56462       , residencyNonResidentStrict( residencyNonResidentStrict_ )
56463     {}
56464 
56465     VULKAN_HPP_CONSTEXPR
56466       PhysicalDeviceSparseProperties( PhysicalDeviceSparseProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56467 
PhysicalDeviceSparsePropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties56468     PhysicalDeviceSparseProperties( VkPhysicalDeviceSparseProperties const & rhs ) VULKAN_HPP_NOEXCEPT
56469       : PhysicalDeviceSparseProperties( *reinterpret_cast<PhysicalDeviceSparseProperties const *>( &rhs ) )
56470     {}
56471 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
56472 
56473     PhysicalDeviceSparseProperties &
56474       operator=( PhysicalDeviceSparseProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56475 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties56476     PhysicalDeviceSparseProperties & operator=( VkPhysicalDeviceSparseProperties const & rhs ) VULKAN_HPP_NOEXCEPT
56477     {
56478       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties const *>( &rhs );
56479       return *this;
56480     }
56481 
operator VkPhysicalDeviceSparseProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties56482     explicit operator VkPhysicalDeviceSparseProperties const &() const VULKAN_HPP_NOEXCEPT
56483     {
56484       return *reinterpret_cast<const VkPhysicalDeviceSparseProperties *>( this );
56485     }
56486 
operator VkPhysicalDeviceSparseProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties56487     explicit operator VkPhysicalDeviceSparseProperties &() VULKAN_HPP_NOEXCEPT
56488     {
56489       return *reinterpret_cast<VkPhysicalDeviceSparseProperties *>( this );
56490     }
56491 
56492 #if 14 <= VULKAN_HPP_CPP_VERSION
56493     auto
56494 #else
56495     std::tuple<VULKAN_HPP_NAMESPACE::Bool32 const &,
56496                VULKAN_HPP_NAMESPACE::Bool32 const &,
56497                VULKAN_HPP_NAMESPACE::Bool32 const &,
56498                VULKAN_HPP_NAMESPACE::Bool32 const &,
56499                VULKAN_HPP_NAMESPACE::Bool32 const &>
56500 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties56501       reflect() const VULKAN_HPP_NOEXCEPT
56502     {
56503       return std::tie( residencyStandard2DBlockShape,
56504                        residencyStandard2DMultisampleBlockShape,
56505                        residencyStandard3DBlockShape,
56506                        residencyAlignedMipSize,
56507                        residencyNonResidentStrict );
56508     }
56509 
56510 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
56511     auto operator<=>( PhysicalDeviceSparseProperties const & ) const = default;
56512 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties56513     bool operator==( PhysicalDeviceSparseProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
56514     {
56515       return this->reflect() == rhs.reflect();
56516     }
56517 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties56518     bool operator!=( PhysicalDeviceSparseProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
56519     {
56520       return this->reflect() != rhs.reflect();
56521     }
56522 #endif
56523 
56524   public:
56525     VULKAN_HPP_NAMESPACE::Bool32 residencyStandard2DBlockShape            = {};
56526     VULKAN_HPP_NAMESPACE::Bool32 residencyStandard2DMultisampleBlockShape = {};
56527     VULKAN_HPP_NAMESPACE::Bool32 residencyStandard3DBlockShape            = {};
56528     VULKAN_HPP_NAMESPACE::Bool32 residencyAlignedMipSize                  = {};
56529     VULKAN_HPP_NAMESPACE::Bool32 residencyNonResidentStrict               = {};
56530   };
56531   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties ) ==
56532                               sizeof( VkPhysicalDeviceSparseProperties ),
56533                             "struct and wrapper have different size!" );
56534   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties>::value,
56535                             "struct wrapper is not a standard layout!" );
56536   VULKAN_HPP_STATIC_ASSERT(
56537     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties>::value,
56538     "PhysicalDeviceSparseProperties is not nothrow_move_constructible!" );
56539 
56540   struct PhysicalDeviceProperties
56541   {
56542     using NativeType = VkPhysicalDeviceProperties;
56543 
56544 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceProperties56545     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProperties(
56546       uint32_t                                 apiVersion_    = {},
56547       uint32_t                                 driverVersion_ = {},
56548       uint32_t                                 vendorID_      = {},
56549       uint32_t                                 deviceID_      = {},
56550       VULKAN_HPP_NAMESPACE::PhysicalDeviceType deviceType_    = VULKAN_HPP_NAMESPACE::PhysicalDeviceType::eOther,
56551       std::array<char, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE> const & deviceName_        = {},
56552       std::array<uint8_t, VK_UUID_SIZE> const &                  pipelineCacheUUID_ = {},
56553       VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits                 limits_            = {},
56554       VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties       sparseProperties_  = {} ) VULKAN_HPP_NOEXCEPT
56555       : apiVersion( apiVersion_ )
56556       , driverVersion( driverVersion_ )
56557       , vendorID( vendorID_ )
56558       , deviceID( deviceID_ )
56559       , deviceType( deviceType_ )
56560       , deviceName( deviceName_ )
56561       , pipelineCacheUUID( pipelineCacheUUID_ )
56562       , limits( limits_ )
56563       , sparseProperties( sparseProperties_ )
56564     {}
56565 
56566     VULKAN_HPP_CONSTEXPR_14
56567       PhysicalDeviceProperties( PhysicalDeviceProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56568 
PhysicalDevicePropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceProperties56569     PhysicalDeviceProperties( VkPhysicalDeviceProperties const & rhs ) VULKAN_HPP_NOEXCEPT
56570       : PhysicalDeviceProperties( *reinterpret_cast<PhysicalDeviceProperties const *>( &rhs ) )
56571     {}
56572 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
56573 
56574     PhysicalDeviceProperties & operator=( PhysicalDeviceProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56575 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties56576     PhysicalDeviceProperties & operator=( VkPhysicalDeviceProperties const & rhs ) VULKAN_HPP_NOEXCEPT
56577     {
56578       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties const *>( &rhs );
56579       return *this;
56580     }
56581 
operator VkPhysicalDeviceProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties56582     explicit operator VkPhysicalDeviceProperties const &() const VULKAN_HPP_NOEXCEPT
56583     {
56584       return *reinterpret_cast<const VkPhysicalDeviceProperties *>( this );
56585     }
56586 
operator VkPhysicalDeviceProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties56587     explicit operator VkPhysicalDeviceProperties &() VULKAN_HPP_NOEXCEPT
56588     {
56589       return *reinterpret_cast<VkPhysicalDeviceProperties *>( this );
56590     }
56591 
56592 #if 14 <= VULKAN_HPP_CPP_VERSION
56593     auto
56594 #else
56595     std::tuple<uint32_t const &,
56596                uint32_t const &,
56597                uint32_t const &,
56598                uint32_t const &,
56599                VULKAN_HPP_NAMESPACE::PhysicalDeviceType const &,
56600                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE> const &,
56601                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &,
56602                VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits const &,
56603                VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties const &>
56604 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceProperties56605       reflect() const VULKAN_HPP_NOEXCEPT
56606     {
56607       return std::tie( apiVersion,
56608                        driverVersion,
56609                        vendorID,
56610                        deviceID,
56611                        deviceType,
56612                        deviceName,
56613                        pipelineCacheUUID,
56614                        limits,
56615                        sparseProperties );
56616     }
56617 
56618 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
56619     auto operator<=>( PhysicalDeviceProperties const & ) const = default;
56620 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties56621     bool operator==( PhysicalDeviceProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
56622     {
56623       return this->reflect() == rhs.reflect();
56624     }
56625 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties56626     bool operator!=( PhysicalDeviceProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
56627     {
56628       return this->reflect() != rhs.reflect();
56629     }
56630 #endif
56631 
56632   public:
56633     uint32_t                                 apiVersion    = {};
56634     uint32_t                                 driverVersion = {};
56635     uint32_t                                 vendorID      = {};
56636     uint32_t                                 deviceID      = {};
56637     VULKAN_HPP_NAMESPACE::PhysicalDeviceType deviceType    = VULKAN_HPP_NAMESPACE::PhysicalDeviceType::eOther;
56638     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE> deviceName        = {};
56639     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE>                  pipelineCacheUUID = {};
56640     VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits                                   limits            = {};
56641     VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties                         sparseProperties  = {};
56642   };
56643   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties ) ==
56644                               sizeof( VkPhysicalDeviceProperties ),
56645                             "struct and wrapper have different size!" );
56646   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties>::value,
56647                             "struct wrapper is not a standard layout!" );
56648   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties>::value,
56649                             "PhysicalDeviceProperties is not nothrow_move_constructible!" );
56650 
56651   struct PhysicalDeviceProperties2
56652   {
56653     using NativeType = VkPhysicalDeviceProperties2;
56654 
56655     static const bool                                  allowDuplicate = false;
56656     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceProperties2;
56657 
56658 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
56659     VULKAN_HPP_CONSTEXPR_14
PhysicalDeviceProperties2VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties256660       PhysicalDeviceProperties2( VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties properties_ = {} ) VULKAN_HPP_NOEXCEPT
56661       : properties( properties_ )
56662     {}
56663 
56664     VULKAN_HPP_CONSTEXPR_14
56665       PhysicalDeviceProperties2( PhysicalDeviceProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56666 
PhysicalDeviceProperties2VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties256667     PhysicalDeviceProperties2( VkPhysicalDeviceProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
56668       : PhysicalDeviceProperties2( *reinterpret_cast<PhysicalDeviceProperties2 const *>( &rhs ) )
56669     {}
56670 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
56671 
56672     PhysicalDeviceProperties2 & operator=( PhysicalDeviceProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56673 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties256674     PhysicalDeviceProperties2 & operator=( VkPhysicalDeviceProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
56675     {
56676       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 const *>( &rhs );
56677       return *this;
56678     }
56679 
operator VkPhysicalDeviceProperties2 const&VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties256680     explicit operator VkPhysicalDeviceProperties2 const &() const VULKAN_HPP_NOEXCEPT
56681     {
56682       return *reinterpret_cast<const VkPhysicalDeviceProperties2 *>( this );
56683     }
56684 
operator VkPhysicalDeviceProperties2&VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties256685     explicit operator VkPhysicalDeviceProperties2 &() VULKAN_HPP_NOEXCEPT
56686     {
56687       return *reinterpret_cast<VkPhysicalDeviceProperties2 *>( this );
56688     }
56689 
56690 #if 14 <= VULKAN_HPP_CPP_VERSION
56691     auto
56692 #else
56693     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
56694                void * const &,
56695                VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties const &>
56696 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceProperties256697       reflect() const VULKAN_HPP_NOEXCEPT
56698     {
56699       return std::tie( sType, pNext, properties );
56700     }
56701 
56702 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
56703     auto operator<=>( PhysicalDeviceProperties2 const & ) const = default;
56704 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties256705     bool operator==( PhysicalDeviceProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
56706     {
56707       return this->reflect() == rhs.reflect();
56708     }
56709 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties256710     bool operator!=( PhysicalDeviceProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
56711     {
56712       return this->reflect() != rhs.reflect();
56713     }
56714 #endif
56715 
56716   public:
56717     VULKAN_HPP_NAMESPACE::StructureType            sType      = StructureType::ePhysicalDeviceProperties2;
56718     void *                                         pNext      = {};
56719     VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties properties = {};
56720   };
56721   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 ) ==
56722                               sizeof( VkPhysicalDeviceProperties2 ),
56723                             "struct and wrapper have different size!" );
56724   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2>::value,
56725                             "struct wrapper is not a standard layout!" );
56726   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2>::value,
56727                             "PhysicalDeviceProperties2 is not nothrow_move_constructible!" );
56728 
56729   template <>
56730   struct CppType<StructureType, StructureType::ePhysicalDeviceProperties2>
56731   {
56732     using Type = PhysicalDeviceProperties2;
56733   };
56734   using PhysicalDeviceProperties2KHR = PhysicalDeviceProperties2;
56735 
56736   struct PhysicalDeviceProtectedMemoryFeatures
56737   {
56738     using NativeType = VkPhysicalDeviceProtectedMemoryFeatures;
56739 
56740     static const bool                                  allowDuplicate = false;
56741     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
56742       StructureType::ePhysicalDeviceProtectedMemoryFeatures;
56743 
56744 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
56745     VULKAN_HPP_CONSTEXPR
PhysicalDeviceProtectedMemoryFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures56746       PhysicalDeviceProtectedMemoryFeatures( VULKAN_HPP_NAMESPACE::Bool32 protectedMemory_ = {} ) VULKAN_HPP_NOEXCEPT
56747       : protectedMemory( protectedMemory_ )
56748     {}
56749 
56750     VULKAN_HPP_CONSTEXPR PhysicalDeviceProtectedMemoryFeatures( PhysicalDeviceProtectedMemoryFeatures const & rhs )
56751       VULKAN_HPP_NOEXCEPT = default;
56752 
PhysicalDeviceProtectedMemoryFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures56753     PhysicalDeviceProtectedMemoryFeatures( VkPhysicalDeviceProtectedMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
56754       : PhysicalDeviceProtectedMemoryFeatures(
56755           *reinterpret_cast<PhysicalDeviceProtectedMemoryFeatures const *>( &rhs ) )
56756     {}
56757 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
56758 
56759     PhysicalDeviceProtectedMemoryFeatures &
56760       operator=( PhysicalDeviceProtectedMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56761 
56762     PhysicalDeviceProtectedMemoryFeatures &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures56763       operator=( VkPhysicalDeviceProtectedMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
56764     {
56765       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures const *>( &rhs );
56766       return *this;
56767     }
56768 
56769 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures56770     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProtectedMemoryFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
56771     {
56772       pNext = pNext_;
56773       return *this;
56774     }
56775 
56776     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProtectedMemoryFeatures &
setProtectedMemoryVULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures56777                             setProtectedMemory( VULKAN_HPP_NAMESPACE::Bool32 protectedMemory_ ) VULKAN_HPP_NOEXCEPT
56778     {
56779       protectedMemory = protectedMemory_;
56780       return *this;
56781     }
56782 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
56783 
operator VkPhysicalDeviceProtectedMemoryFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures56784     explicit operator VkPhysicalDeviceProtectedMemoryFeatures const &() const VULKAN_HPP_NOEXCEPT
56785     {
56786       return *reinterpret_cast<const VkPhysicalDeviceProtectedMemoryFeatures *>( this );
56787     }
56788 
operator VkPhysicalDeviceProtectedMemoryFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures56789     explicit operator VkPhysicalDeviceProtectedMemoryFeatures &() VULKAN_HPP_NOEXCEPT
56790     {
56791       return *reinterpret_cast<VkPhysicalDeviceProtectedMemoryFeatures *>( this );
56792     }
56793 
56794 #if 14 <= VULKAN_HPP_CPP_VERSION
56795     auto
56796 #else
56797     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
56798 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures56799       reflect() const VULKAN_HPP_NOEXCEPT
56800     {
56801       return std::tie( sType, pNext, protectedMemory );
56802     }
56803 
56804 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
56805     auto operator<=>( PhysicalDeviceProtectedMemoryFeatures const & ) const = default;
56806 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures56807     bool operator==( PhysicalDeviceProtectedMemoryFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
56808     {
56809       return this->reflect() == rhs.reflect();
56810     }
56811 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures56812     bool operator!=( PhysicalDeviceProtectedMemoryFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
56813     {
56814       return this->reflect() != rhs.reflect();
56815     }
56816 #endif
56817 
56818   public:
56819     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::ePhysicalDeviceProtectedMemoryFeatures;
56820     void *                              pNext           = {};
56821     VULKAN_HPP_NAMESPACE::Bool32        protectedMemory = {};
56822   };
56823   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures ) ==
56824                               sizeof( VkPhysicalDeviceProtectedMemoryFeatures ),
56825                             "struct and wrapper have different size!" );
56826   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures>::value,
56827                             "struct wrapper is not a standard layout!" );
56828   VULKAN_HPP_STATIC_ASSERT(
56829     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures>::value,
56830     "PhysicalDeviceProtectedMemoryFeatures is not nothrow_move_constructible!" );
56831 
56832   template <>
56833   struct CppType<StructureType, StructureType::ePhysicalDeviceProtectedMemoryFeatures>
56834   {
56835     using Type = PhysicalDeviceProtectedMemoryFeatures;
56836   };
56837 
56838   struct PhysicalDeviceProtectedMemoryProperties
56839   {
56840     using NativeType = VkPhysicalDeviceProtectedMemoryProperties;
56841 
56842     static const bool                                  allowDuplicate = false;
56843     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
56844       StructureType::ePhysicalDeviceProtectedMemoryProperties;
56845 
56846 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
56847     VULKAN_HPP_CONSTEXPR
PhysicalDeviceProtectedMemoryPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties56848       PhysicalDeviceProtectedMemoryProperties( VULKAN_HPP_NAMESPACE::Bool32 protectedNoFault_ = {} ) VULKAN_HPP_NOEXCEPT
56849       : protectedNoFault( protectedNoFault_ )
56850     {}
56851 
56852     VULKAN_HPP_CONSTEXPR PhysicalDeviceProtectedMemoryProperties( PhysicalDeviceProtectedMemoryProperties const & rhs )
56853       VULKAN_HPP_NOEXCEPT = default;
56854 
PhysicalDeviceProtectedMemoryPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties56855     PhysicalDeviceProtectedMemoryProperties( VkPhysicalDeviceProtectedMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT
56856       : PhysicalDeviceProtectedMemoryProperties(
56857           *reinterpret_cast<PhysicalDeviceProtectedMemoryProperties const *>( &rhs ) )
56858     {}
56859 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
56860 
56861     PhysicalDeviceProtectedMemoryProperties &
56862       operator=( PhysicalDeviceProtectedMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56863 
56864     PhysicalDeviceProtectedMemoryProperties &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties56865       operator=( VkPhysicalDeviceProtectedMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT
56866     {
56867       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties const *>( &rhs );
56868       return *this;
56869     }
56870 
operator VkPhysicalDeviceProtectedMemoryProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties56871     explicit operator VkPhysicalDeviceProtectedMemoryProperties const &() const VULKAN_HPP_NOEXCEPT
56872     {
56873       return *reinterpret_cast<const VkPhysicalDeviceProtectedMemoryProperties *>( this );
56874     }
56875 
operator VkPhysicalDeviceProtectedMemoryProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties56876     explicit operator VkPhysicalDeviceProtectedMemoryProperties &() VULKAN_HPP_NOEXCEPT
56877     {
56878       return *reinterpret_cast<VkPhysicalDeviceProtectedMemoryProperties *>( this );
56879     }
56880 
56881 #if 14 <= VULKAN_HPP_CPP_VERSION
56882     auto
56883 #else
56884     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
56885 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties56886       reflect() const VULKAN_HPP_NOEXCEPT
56887     {
56888       return std::tie( sType, pNext, protectedNoFault );
56889     }
56890 
56891 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
56892     auto operator<=>( PhysicalDeviceProtectedMemoryProperties const & ) const = default;
56893 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties56894     bool operator==( PhysicalDeviceProtectedMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
56895     {
56896       return this->reflect() == rhs.reflect();
56897     }
56898 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties56899     bool operator!=( PhysicalDeviceProtectedMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
56900     {
56901       return this->reflect() != rhs.reflect();
56902     }
56903 #endif
56904 
56905   public:
56906     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::ePhysicalDeviceProtectedMemoryProperties;
56907     void *                              pNext            = {};
56908     VULKAN_HPP_NAMESPACE::Bool32        protectedNoFault = {};
56909   };
56910   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties ) ==
56911                               sizeof( VkPhysicalDeviceProtectedMemoryProperties ),
56912                             "struct and wrapper have different size!" );
56913   VULKAN_HPP_STATIC_ASSERT(
56914     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties>::value,
56915     "struct wrapper is not a standard layout!" );
56916   VULKAN_HPP_STATIC_ASSERT(
56917     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties>::value,
56918     "PhysicalDeviceProtectedMemoryProperties is not nothrow_move_constructible!" );
56919 
56920   template <>
56921   struct CppType<StructureType, StructureType::ePhysicalDeviceProtectedMemoryProperties>
56922   {
56923     using Type = PhysicalDeviceProtectedMemoryProperties;
56924   };
56925 
56926   struct PhysicalDeviceProvokingVertexFeaturesEXT
56927   {
56928     using NativeType = VkPhysicalDeviceProvokingVertexFeaturesEXT;
56929 
56930     static const bool                                  allowDuplicate = false;
56931     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
56932       StructureType::ePhysicalDeviceProvokingVertexFeaturesEXT;
56933 
56934 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceProvokingVertexFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT56935     VULKAN_HPP_CONSTEXPR PhysicalDeviceProvokingVertexFeaturesEXT(
56936       VULKAN_HPP_NAMESPACE::Bool32 provokingVertexLast_                       = {},
56937       VULKAN_HPP_NAMESPACE::Bool32 transformFeedbackPreservesProvokingVertex_ = {} ) VULKAN_HPP_NOEXCEPT
56938       : provokingVertexLast( provokingVertexLast_ )
56939       , transformFeedbackPreservesProvokingVertex( transformFeedbackPreservesProvokingVertex_ )
56940     {}
56941 
56942     VULKAN_HPP_CONSTEXPR PhysicalDeviceProvokingVertexFeaturesEXT(
56943       PhysicalDeviceProvokingVertexFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56944 
PhysicalDeviceProvokingVertexFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT56945     PhysicalDeviceProvokingVertexFeaturesEXT( VkPhysicalDeviceProvokingVertexFeaturesEXT const & rhs )
56946       VULKAN_HPP_NOEXCEPT
56947       : PhysicalDeviceProvokingVertexFeaturesEXT(
56948           *reinterpret_cast<PhysicalDeviceProvokingVertexFeaturesEXT const *>( &rhs ) )
56949     {}
56950 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
56951 
56952     PhysicalDeviceProvokingVertexFeaturesEXT &
56953       operator=( PhysicalDeviceProvokingVertexFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56954 
56955     PhysicalDeviceProvokingVertexFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT56956       operator=( VkPhysicalDeviceProvokingVertexFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
56957     {
56958       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT const *>( &rhs );
56959       return *this;
56960     }
56961 
56962 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT56963     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProvokingVertexFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
56964     {
56965       pNext = pNext_;
56966       return *this;
56967     }
56968 
56969     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProvokingVertexFeaturesEXT &
setProvokingVertexLastVULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT56970       setProvokingVertexLast( VULKAN_HPP_NAMESPACE::Bool32 provokingVertexLast_ ) VULKAN_HPP_NOEXCEPT
56971     {
56972       provokingVertexLast = provokingVertexLast_;
56973       return *this;
56974     }
56975 
setTransformFeedbackPreservesProvokingVertexVULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT56976     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProvokingVertexFeaturesEXT & setTransformFeedbackPreservesProvokingVertex(
56977       VULKAN_HPP_NAMESPACE::Bool32 transformFeedbackPreservesProvokingVertex_ ) VULKAN_HPP_NOEXCEPT
56978     {
56979       transformFeedbackPreservesProvokingVertex = transformFeedbackPreservesProvokingVertex_;
56980       return *this;
56981     }
56982 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
56983 
operator VkPhysicalDeviceProvokingVertexFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT56984     explicit operator VkPhysicalDeviceProvokingVertexFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
56985     {
56986       return *reinterpret_cast<const VkPhysicalDeviceProvokingVertexFeaturesEXT *>( this );
56987     }
56988 
operator VkPhysicalDeviceProvokingVertexFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT56989     explicit operator VkPhysicalDeviceProvokingVertexFeaturesEXT &() VULKAN_HPP_NOEXCEPT
56990     {
56991       return *reinterpret_cast<VkPhysicalDeviceProvokingVertexFeaturesEXT *>( this );
56992     }
56993 
56994 #if 14 <= VULKAN_HPP_CPP_VERSION
56995     auto
56996 #else
56997     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
56998                void * const &,
56999                VULKAN_HPP_NAMESPACE::Bool32 const &,
57000                VULKAN_HPP_NAMESPACE::Bool32 const &>
57001 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT57002       reflect() const VULKAN_HPP_NOEXCEPT
57003     {
57004       return std::tie( sType, pNext, provokingVertexLast, transformFeedbackPreservesProvokingVertex );
57005     }
57006 
57007 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
57008     auto operator<=>( PhysicalDeviceProvokingVertexFeaturesEXT const & ) const = default;
57009 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT57010     bool operator==( PhysicalDeviceProvokingVertexFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
57011     {
57012       return this->reflect() == rhs.reflect();
57013     }
57014 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT57015     bool operator!=( PhysicalDeviceProvokingVertexFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
57016     {
57017       return this->reflect() != rhs.reflect();
57018     }
57019 #endif
57020 
57021   public:
57022     VULKAN_HPP_NAMESPACE::StructureType sType               = StructureType::ePhysicalDeviceProvokingVertexFeaturesEXT;
57023     void *                              pNext               = {};
57024     VULKAN_HPP_NAMESPACE::Bool32        provokingVertexLast = {};
57025     VULKAN_HPP_NAMESPACE::Bool32        transformFeedbackPreservesProvokingVertex = {};
57026   };
57027   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT ) ==
57028                               sizeof( VkPhysicalDeviceProvokingVertexFeaturesEXT ),
57029                             "struct and wrapper have different size!" );
57030   VULKAN_HPP_STATIC_ASSERT(
57031     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT>::value,
57032     "struct wrapper is not a standard layout!" );
57033   VULKAN_HPP_STATIC_ASSERT(
57034     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT>::value,
57035     "PhysicalDeviceProvokingVertexFeaturesEXT is not nothrow_move_constructible!" );
57036 
57037   template <>
57038   struct CppType<StructureType, StructureType::ePhysicalDeviceProvokingVertexFeaturesEXT>
57039   {
57040     using Type = PhysicalDeviceProvokingVertexFeaturesEXT;
57041   };
57042 
57043   struct PhysicalDeviceProvokingVertexPropertiesEXT
57044   {
57045     using NativeType = VkPhysicalDeviceProvokingVertexPropertiesEXT;
57046 
57047     static const bool                                  allowDuplicate = false;
57048     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
57049       StructureType::ePhysicalDeviceProvokingVertexPropertiesEXT;
57050 
57051 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceProvokingVertexPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexPropertiesEXT57052     VULKAN_HPP_CONSTEXPR PhysicalDeviceProvokingVertexPropertiesEXT(
57053       VULKAN_HPP_NAMESPACE::Bool32 provokingVertexModePerPipeline_                       = {},
57054       VULKAN_HPP_NAMESPACE::Bool32 transformFeedbackPreservesTriangleFanProvokingVertex_ = {} ) VULKAN_HPP_NOEXCEPT
57055       : provokingVertexModePerPipeline( provokingVertexModePerPipeline_ )
57056       , transformFeedbackPreservesTriangleFanProvokingVertex( transformFeedbackPreservesTriangleFanProvokingVertex_ )
57057     {}
57058 
57059     VULKAN_HPP_CONSTEXPR PhysicalDeviceProvokingVertexPropertiesEXT(
57060       PhysicalDeviceProvokingVertexPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57061 
PhysicalDeviceProvokingVertexPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexPropertiesEXT57062     PhysicalDeviceProvokingVertexPropertiesEXT( VkPhysicalDeviceProvokingVertexPropertiesEXT const & rhs )
57063       VULKAN_HPP_NOEXCEPT
57064       : PhysicalDeviceProvokingVertexPropertiesEXT(
57065           *reinterpret_cast<PhysicalDeviceProvokingVertexPropertiesEXT const *>( &rhs ) )
57066     {}
57067 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
57068 
57069     PhysicalDeviceProvokingVertexPropertiesEXT &
57070       operator=( PhysicalDeviceProvokingVertexPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57071 
57072     PhysicalDeviceProvokingVertexPropertiesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexPropertiesEXT57073       operator=( VkPhysicalDeviceProvokingVertexPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
57074     {
57075       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexPropertiesEXT const *>( &rhs );
57076       return *this;
57077     }
57078 
operator VkPhysicalDeviceProvokingVertexPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexPropertiesEXT57079     explicit operator VkPhysicalDeviceProvokingVertexPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
57080     {
57081       return *reinterpret_cast<const VkPhysicalDeviceProvokingVertexPropertiesEXT *>( this );
57082     }
57083 
operator VkPhysicalDeviceProvokingVertexPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexPropertiesEXT57084     explicit operator VkPhysicalDeviceProvokingVertexPropertiesEXT &() VULKAN_HPP_NOEXCEPT
57085     {
57086       return *reinterpret_cast<VkPhysicalDeviceProvokingVertexPropertiesEXT *>( this );
57087     }
57088 
57089 #if 14 <= VULKAN_HPP_CPP_VERSION
57090     auto
57091 #else
57092     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
57093                void * const &,
57094                VULKAN_HPP_NAMESPACE::Bool32 const &,
57095                VULKAN_HPP_NAMESPACE::Bool32 const &>
57096 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexPropertiesEXT57097       reflect() const VULKAN_HPP_NOEXCEPT
57098     {
57099       return std::tie(
57100         sType, pNext, provokingVertexModePerPipeline, transformFeedbackPreservesTriangleFanProvokingVertex );
57101     }
57102 
57103 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
57104     auto operator<=>( PhysicalDeviceProvokingVertexPropertiesEXT const & ) const = default;
57105 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexPropertiesEXT57106     bool operator==( PhysicalDeviceProvokingVertexPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
57107     {
57108       return this->reflect() == rhs.reflect();
57109     }
57110 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexPropertiesEXT57111     bool operator!=( PhysicalDeviceProvokingVertexPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
57112     {
57113       return this->reflect() != rhs.reflect();
57114     }
57115 #endif
57116 
57117   public:
57118     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceProvokingVertexPropertiesEXT;
57119     void *                              pNext = {};
57120     VULKAN_HPP_NAMESPACE::Bool32        provokingVertexModePerPipeline                       = {};
57121     VULKAN_HPP_NAMESPACE::Bool32        transformFeedbackPreservesTriangleFanProvokingVertex = {};
57122   };
57123   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexPropertiesEXT ) ==
57124                               sizeof( VkPhysicalDeviceProvokingVertexPropertiesEXT ),
57125                             "struct and wrapper have different size!" );
57126   VULKAN_HPP_STATIC_ASSERT(
57127     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexPropertiesEXT>::value,
57128     "struct wrapper is not a standard layout!" );
57129   VULKAN_HPP_STATIC_ASSERT(
57130     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexPropertiesEXT>::value,
57131     "PhysicalDeviceProvokingVertexPropertiesEXT is not nothrow_move_constructible!" );
57132 
57133   template <>
57134   struct CppType<StructureType, StructureType::ePhysicalDeviceProvokingVertexPropertiesEXT>
57135   {
57136     using Type = PhysicalDeviceProvokingVertexPropertiesEXT;
57137   };
57138 
57139   struct PhysicalDevicePushDescriptorPropertiesKHR
57140   {
57141     using NativeType = VkPhysicalDevicePushDescriptorPropertiesKHR;
57142 
57143     static const bool                                  allowDuplicate = false;
57144     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
57145       StructureType::ePhysicalDevicePushDescriptorPropertiesKHR;
57146 
57147 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
57148     VULKAN_HPP_CONSTEXPR
PhysicalDevicePushDescriptorPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePushDescriptorPropertiesKHR57149       PhysicalDevicePushDescriptorPropertiesKHR( uint32_t maxPushDescriptors_ = {} ) VULKAN_HPP_NOEXCEPT
57150       : maxPushDescriptors( maxPushDescriptors_ )
57151     {}
57152 
57153     VULKAN_HPP_CONSTEXPR PhysicalDevicePushDescriptorPropertiesKHR(
57154       PhysicalDevicePushDescriptorPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57155 
PhysicalDevicePushDescriptorPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePushDescriptorPropertiesKHR57156     PhysicalDevicePushDescriptorPropertiesKHR( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs )
57157       VULKAN_HPP_NOEXCEPT
57158       : PhysicalDevicePushDescriptorPropertiesKHR(
57159           *reinterpret_cast<PhysicalDevicePushDescriptorPropertiesKHR const *>( &rhs ) )
57160     {}
57161 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
57162 
57163     PhysicalDevicePushDescriptorPropertiesKHR &
57164       operator=( PhysicalDevicePushDescriptorPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57165 
57166     PhysicalDevicePushDescriptorPropertiesKHR &
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePushDescriptorPropertiesKHR57167       operator=( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
57168     {
57169       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePushDescriptorPropertiesKHR const *>( &rhs );
57170       return *this;
57171     }
57172 
operator VkPhysicalDevicePushDescriptorPropertiesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDevicePushDescriptorPropertiesKHR57173     explicit operator VkPhysicalDevicePushDescriptorPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
57174     {
57175       return *reinterpret_cast<const VkPhysicalDevicePushDescriptorPropertiesKHR *>( this );
57176     }
57177 
operator VkPhysicalDevicePushDescriptorPropertiesKHR&VULKAN_HPP_NAMESPACE::PhysicalDevicePushDescriptorPropertiesKHR57178     explicit operator VkPhysicalDevicePushDescriptorPropertiesKHR &() VULKAN_HPP_NOEXCEPT
57179     {
57180       return *reinterpret_cast<VkPhysicalDevicePushDescriptorPropertiesKHR *>( this );
57181     }
57182 
57183 #if 14 <= VULKAN_HPP_CPP_VERSION
57184     auto
57185 #else
57186     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
57187 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePushDescriptorPropertiesKHR57188       reflect() const VULKAN_HPP_NOEXCEPT
57189     {
57190       return std::tie( sType, pNext, maxPushDescriptors );
57191     }
57192 
57193 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
57194     auto operator<=>( PhysicalDevicePushDescriptorPropertiesKHR const & ) const = default;
57195 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePushDescriptorPropertiesKHR57196     bool operator==( PhysicalDevicePushDescriptorPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
57197     {
57198       return this->reflect() == rhs.reflect();
57199     }
57200 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePushDescriptorPropertiesKHR57201     bool operator!=( PhysicalDevicePushDescriptorPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
57202     {
57203       return this->reflect() != rhs.reflect();
57204     }
57205 #endif
57206 
57207   public:
57208     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::ePhysicalDevicePushDescriptorPropertiesKHR;
57209     void *                              pNext              = {};
57210     uint32_t                            maxPushDescriptors = {};
57211   };
57212   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePushDescriptorPropertiesKHR ) ==
57213                               sizeof( VkPhysicalDevicePushDescriptorPropertiesKHR ),
57214                             "struct and wrapper have different size!" );
57215   VULKAN_HPP_STATIC_ASSERT(
57216     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDevicePushDescriptorPropertiesKHR>::value,
57217     "struct wrapper is not a standard layout!" );
57218   VULKAN_HPP_STATIC_ASSERT(
57219     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDevicePushDescriptorPropertiesKHR>::value,
57220     "PhysicalDevicePushDescriptorPropertiesKHR is not nothrow_move_constructible!" );
57221 
57222   template <>
57223   struct CppType<StructureType, StructureType::ePhysicalDevicePushDescriptorPropertiesKHR>
57224   {
57225     using Type = PhysicalDevicePushDescriptorPropertiesKHR;
57226   };
57227 
57228   struct PhysicalDeviceRGBA10X6FormatsFeaturesEXT
57229   {
57230     using NativeType = VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT;
57231 
57232     static const bool                                  allowDuplicate = false;
57233     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
57234       StructureType::ePhysicalDeviceRgba10X6FormatsFeaturesEXT;
57235 
57236 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRGBA10X6FormatsFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT57237     VULKAN_HPP_CONSTEXPR PhysicalDeviceRGBA10X6FormatsFeaturesEXT(
57238       VULKAN_HPP_NAMESPACE::Bool32 formatRgba10x6WithoutYCbCrSampler_ = {} ) VULKAN_HPP_NOEXCEPT
57239       : formatRgba10x6WithoutYCbCrSampler( formatRgba10x6WithoutYCbCrSampler_ )
57240     {}
57241 
57242     VULKAN_HPP_CONSTEXPR PhysicalDeviceRGBA10X6FormatsFeaturesEXT(
57243       PhysicalDeviceRGBA10X6FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57244 
PhysicalDeviceRGBA10X6FormatsFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT57245     PhysicalDeviceRGBA10X6FormatsFeaturesEXT( VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT const & rhs )
57246       VULKAN_HPP_NOEXCEPT
57247       : PhysicalDeviceRGBA10X6FormatsFeaturesEXT(
57248           *reinterpret_cast<PhysicalDeviceRGBA10X6FormatsFeaturesEXT const *>( &rhs ) )
57249     {}
57250 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
57251 
57252     PhysicalDeviceRGBA10X6FormatsFeaturesEXT &
57253       operator=( PhysicalDeviceRGBA10X6FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57254 
57255     PhysicalDeviceRGBA10X6FormatsFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT57256       operator=( VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
57257     {
57258       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT const *>( &rhs );
57259       return *this;
57260     }
57261 
57262 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT57263     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRGBA10X6FormatsFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
57264     {
57265       pNext = pNext_;
57266       return *this;
57267     }
57268 
setFormatRgba10x6WithoutYCbCrSamplerVULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT57269     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRGBA10X6FormatsFeaturesEXT & setFormatRgba10x6WithoutYCbCrSampler(
57270       VULKAN_HPP_NAMESPACE::Bool32 formatRgba10x6WithoutYCbCrSampler_ ) VULKAN_HPP_NOEXCEPT
57271     {
57272       formatRgba10x6WithoutYCbCrSampler = formatRgba10x6WithoutYCbCrSampler_;
57273       return *this;
57274     }
57275 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
57276 
operator VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT57277     explicit operator VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
57278     {
57279       return *reinterpret_cast<const VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT *>( this );
57280     }
57281 
operator VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT57282     explicit operator VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT &() VULKAN_HPP_NOEXCEPT
57283     {
57284       return *reinterpret_cast<VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT *>( this );
57285     }
57286 
57287 #if 14 <= VULKAN_HPP_CPP_VERSION
57288     auto
57289 #else
57290     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
57291 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT57292       reflect() const VULKAN_HPP_NOEXCEPT
57293     {
57294       return std::tie( sType, pNext, formatRgba10x6WithoutYCbCrSampler );
57295     }
57296 
57297 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
57298     auto operator<=>( PhysicalDeviceRGBA10X6FormatsFeaturesEXT const & ) const = default;
57299 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT57300     bool operator==( PhysicalDeviceRGBA10X6FormatsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
57301     {
57302       return this->reflect() == rhs.reflect();
57303     }
57304 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT57305     bool operator!=( PhysicalDeviceRGBA10X6FormatsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
57306     {
57307       return this->reflect() != rhs.reflect();
57308     }
57309 #endif
57310 
57311   public:
57312     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRgba10X6FormatsFeaturesEXT;
57313     void *                              pNext = {};
57314     VULKAN_HPP_NAMESPACE::Bool32        formatRgba10x6WithoutYCbCrSampler = {};
57315   };
57316   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT ) ==
57317                               sizeof( VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT ),
57318                             "struct and wrapper have different size!" );
57319   VULKAN_HPP_STATIC_ASSERT(
57320     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT>::value,
57321     "struct wrapper is not a standard layout!" );
57322   VULKAN_HPP_STATIC_ASSERT(
57323     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT>::value,
57324     "PhysicalDeviceRGBA10X6FormatsFeaturesEXT is not nothrow_move_constructible!" );
57325 
57326   template <>
57327   struct CppType<StructureType, StructureType::ePhysicalDeviceRgba10X6FormatsFeaturesEXT>
57328   {
57329     using Type = PhysicalDeviceRGBA10X6FormatsFeaturesEXT;
57330   };
57331 
57332   struct PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM
57333   {
57334     using NativeType = VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM;
57335 
57336     static const bool                                  allowDuplicate = false;
57337     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
57338       StructureType::ePhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM;
57339 
57340 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARMVULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM57341     VULKAN_HPP_CONSTEXPR PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM(
57342       VULKAN_HPP_NAMESPACE::Bool32 rasterizationOrderColorAttachmentAccess_   = {},
57343       VULKAN_HPP_NAMESPACE::Bool32 rasterizationOrderDepthAttachmentAccess_   = {},
57344       VULKAN_HPP_NAMESPACE::Bool32 rasterizationOrderStencilAttachmentAccess_ = {} ) VULKAN_HPP_NOEXCEPT
57345       : rasterizationOrderColorAttachmentAccess( rasterizationOrderColorAttachmentAccess_ )
57346       , rasterizationOrderDepthAttachmentAccess( rasterizationOrderDepthAttachmentAccess_ )
57347       , rasterizationOrderStencilAttachmentAccess( rasterizationOrderStencilAttachmentAccess_ )
57348     {}
57349 
57350     VULKAN_HPP_CONSTEXPR PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM(
57351       PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57352 
PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARMVULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM57353     PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM(
57354       VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT
57355       : PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM(
57356           *reinterpret_cast<PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM const *>( &rhs ) )
57357     {}
57358 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
57359 
57360     PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM & operator                          =(
57361       PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57362 
57363     PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM57364       operator=( VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT
57365     {
57366       *this =
57367         *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM const *>(
57368           &rhs );
57369       return *this;
57370     }
57371 
57372 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
57373     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM57374                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
57375     {
57376       pNext = pNext_;
57377       return *this;
57378     }
57379 
57380     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM &
setRasterizationOrderColorAttachmentAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM57381                             setRasterizationOrderColorAttachmentAccess(
57382                               VULKAN_HPP_NAMESPACE::Bool32 rasterizationOrderColorAttachmentAccess_ ) VULKAN_HPP_NOEXCEPT
57383     {
57384       rasterizationOrderColorAttachmentAccess = rasterizationOrderColorAttachmentAccess_;
57385       return *this;
57386     }
57387 
57388     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM &
setRasterizationOrderDepthAttachmentAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM57389                             setRasterizationOrderDepthAttachmentAccess(
57390                               VULKAN_HPP_NAMESPACE::Bool32 rasterizationOrderDepthAttachmentAccess_ ) VULKAN_HPP_NOEXCEPT
57391     {
57392       rasterizationOrderDepthAttachmentAccess = rasterizationOrderDepthAttachmentAccess_;
57393       return *this;
57394     }
57395 
57396     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM &
setRasterizationOrderStencilAttachmentAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM57397                             setRasterizationOrderStencilAttachmentAccess(
57398                               VULKAN_HPP_NAMESPACE::Bool32 rasterizationOrderStencilAttachmentAccess_ ) VULKAN_HPP_NOEXCEPT
57399     {
57400       rasterizationOrderStencilAttachmentAccess = rasterizationOrderStencilAttachmentAccess_;
57401       return *this;
57402     }
57403 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
57404 
operator VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM57405     explicit operator VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM const &() const VULKAN_HPP_NOEXCEPT
57406     {
57407       return *reinterpret_cast<const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM *>( this );
57408     }
57409 
operator VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM&VULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM57410     explicit operator VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM &() VULKAN_HPP_NOEXCEPT
57411     {
57412       return *reinterpret_cast<VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM *>( this );
57413     }
57414 
57415 #if 14 <= VULKAN_HPP_CPP_VERSION
57416     auto
57417 #else
57418     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
57419                const void * const &,
57420                VULKAN_HPP_NAMESPACE::Bool32 const &,
57421                VULKAN_HPP_NAMESPACE::Bool32 const &,
57422                VULKAN_HPP_NAMESPACE::Bool32 const &>
57423 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM57424       reflect() const VULKAN_HPP_NOEXCEPT
57425     {
57426       return std::tie( sType,
57427                        pNext,
57428                        rasterizationOrderColorAttachmentAccess,
57429                        rasterizationOrderDepthAttachmentAccess,
57430                        rasterizationOrderStencilAttachmentAccess );
57431     }
57432 
57433 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
57434     auto operator<=>( PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM const & ) const = default;
57435 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM57436     bool operator==( PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT
57437     {
57438       return this->reflect() == rhs.reflect();
57439     }
57440 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM57441     bool operator!=( PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT
57442     {
57443       return this->reflect() != rhs.reflect();
57444     }
57445 #endif
57446 
57447   public:
57448     VULKAN_HPP_NAMESPACE::StructureType sType =
57449       StructureType::ePhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM;
57450     const void *                 pNext                                     = {};
57451     VULKAN_HPP_NAMESPACE::Bool32 rasterizationOrderColorAttachmentAccess   = {};
57452     VULKAN_HPP_NAMESPACE::Bool32 rasterizationOrderDepthAttachmentAccess   = {};
57453     VULKAN_HPP_NAMESPACE::Bool32 rasterizationOrderStencilAttachmentAccess = {};
57454   };
57455   VULKAN_HPP_STATIC_ASSERT(
57456     sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM ) ==
57457       sizeof( VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM ),
57458     "struct and wrapper have different size!" );
57459   VULKAN_HPP_STATIC_ASSERT(
57460     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM>::value,
57461     "struct wrapper is not a standard layout!" );
57462   VULKAN_HPP_STATIC_ASSERT(
57463     std::is_nothrow_move_constructible<
57464       VULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM>::value,
57465     "PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM is not nothrow_move_constructible!" );
57466 
57467   template <>
57468   struct CppType<StructureType, StructureType::ePhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM>
57469   {
57470     using Type = PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM;
57471   };
57472 
57473   struct PhysicalDeviceRayQueryFeaturesKHR
57474   {
57475     using NativeType = VkPhysicalDeviceRayQueryFeaturesKHR;
57476 
57477     static const bool                                  allowDuplicate = false;
57478     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
57479       StructureType::ePhysicalDeviceRayQueryFeaturesKHR;
57480 
57481 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
57482     VULKAN_HPP_CONSTEXPR
PhysicalDeviceRayQueryFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR57483       PhysicalDeviceRayQueryFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 rayQuery_ = {} ) VULKAN_HPP_NOEXCEPT
57484       : rayQuery( rayQuery_ )
57485     {}
57486 
57487     VULKAN_HPP_CONSTEXPR
57488       PhysicalDeviceRayQueryFeaturesKHR( PhysicalDeviceRayQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57489 
PhysicalDeviceRayQueryFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR57490     PhysicalDeviceRayQueryFeaturesKHR( VkPhysicalDeviceRayQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
57491       : PhysicalDeviceRayQueryFeaturesKHR( *reinterpret_cast<PhysicalDeviceRayQueryFeaturesKHR const *>( &rhs ) )
57492     {}
57493 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
57494 
57495     PhysicalDeviceRayQueryFeaturesKHR &
57496       operator=( PhysicalDeviceRayQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57497 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR57498     PhysicalDeviceRayQueryFeaturesKHR & operator=( VkPhysicalDeviceRayQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
57499     {
57500       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR const *>( &rhs );
57501       return *this;
57502     }
57503 
57504 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR57505     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayQueryFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
57506     {
57507       pNext = pNext_;
57508       return *this;
57509     }
57510 
57511     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayQueryFeaturesKHR &
setRayQueryVULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR57512                             setRayQuery( VULKAN_HPP_NAMESPACE::Bool32 rayQuery_ ) VULKAN_HPP_NOEXCEPT
57513     {
57514       rayQuery = rayQuery_;
57515       return *this;
57516     }
57517 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
57518 
operator VkPhysicalDeviceRayQueryFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR57519     explicit operator VkPhysicalDeviceRayQueryFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
57520     {
57521       return *reinterpret_cast<const VkPhysicalDeviceRayQueryFeaturesKHR *>( this );
57522     }
57523 
operator VkPhysicalDeviceRayQueryFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR57524     explicit operator VkPhysicalDeviceRayQueryFeaturesKHR &() VULKAN_HPP_NOEXCEPT
57525     {
57526       return *reinterpret_cast<VkPhysicalDeviceRayQueryFeaturesKHR *>( this );
57527     }
57528 
57529 #if 14 <= VULKAN_HPP_CPP_VERSION
57530     auto
57531 #else
57532     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
57533 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR57534       reflect() const VULKAN_HPP_NOEXCEPT
57535     {
57536       return std::tie( sType, pNext, rayQuery );
57537     }
57538 
57539 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
57540     auto operator<=>( PhysicalDeviceRayQueryFeaturesKHR const & ) const = default;
57541 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR57542     bool operator==( PhysicalDeviceRayQueryFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
57543     {
57544       return this->reflect() == rhs.reflect();
57545     }
57546 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR57547     bool operator!=( PhysicalDeviceRayQueryFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
57548     {
57549       return this->reflect() != rhs.reflect();
57550     }
57551 #endif
57552 
57553   public:
57554     VULKAN_HPP_NAMESPACE::StructureType sType    = StructureType::ePhysicalDeviceRayQueryFeaturesKHR;
57555     void *                              pNext    = {};
57556     VULKAN_HPP_NAMESPACE::Bool32        rayQuery = {};
57557   };
57558   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR ) ==
57559                               sizeof( VkPhysicalDeviceRayQueryFeaturesKHR ),
57560                             "struct and wrapper have different size!" );
57561   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR>::value,
57562                             "struct wrapper is not a standard layout!" );
57563   VULKAN_HPP_STATIC_ASSERT(
57564     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR>::value,
57565     "PhysicalDeviceRayQueryFeaturesKHR is not nothrow_move_constructible!" );
57566 
57567   template <>
57568   struct CppType<StructureType, StructureType::ePhysicalDeviceRayQueryFeaturesKHR>
57569   {
57570     using Type = PhysicalDeviceRayQueryFeaturesKHR;
57571   };
57572 
57573   struct PhysicalDeviceRayTracingMotionBlurFeaturesNV
57574   {
57575     using NativeType = VkPhysicalDeviceRayTracingMotionBlurFeaturesNV;
57576 
57577     static const bool                                  allowDuplicate = false;
57578     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
57579       StructureType::ePhysicalDeviceRayTracingMotionBlurFeaturesNV;
57580 
57581 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRayTracingMotionBlurFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV57582     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingMotionBlurFeaturesNV(
57583       VULKAN_HPP_NAMESPACE::Bool32 rayTracingMotionBlur_                          = {},
57584       VULKAN_HPP_NAMESPACE::Bool32 rayTracingMotionBlurPipelineTraceRaysIndirect_ = {} ) VULKAN_HPP_NOEXCEPT
57585       : rayTracingMotionBlur( rayTracingMotionBlur_ )
57586       , rayTracingMotionBlurPipelineTraceRaysIndirect( rayTracingMotionBlurPipelineTraceRaysIndirect_ )
57587     {}
57588 
57589     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingMotionBlurFeaturesNV(
57590       PhysicalDeviceRayTracingMotionBlurFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57591 
PhysicalDeviceRayTracingMotionBlurFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV57592     PhysicalDeviceRayTracingMotionBlurFeaturesNV( VkPhysicalDeviceRayTracingMotionBlurFeaturesNV const & rhs )
57593       VULKAN_HPP_NOEXCEPT
57594       : PhysicalDeviceRayTracingMotionBlurFeaturesNV(
57595           *reinterpret_cast<PhysicalDeviceRayTracingMotionBlurFeaturesNV const *>( &rhs ) )
57596     {}
57597 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
57598 
57599     PhysicalDeviceRayTracingMotionBlurFeaturesNV &
57600       operator=( PhysicalDeviceRayTracingMotionBlurFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57601 
57602     PhysicalDeviceRayTracingMotionBlurFeaturesNV &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV57603       operator=( VkPhysicalDeviceRayTracingMotionBlurFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
57604     {
57605       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV const *>( &rhs );
57606       return *this;
57607     }
57608 
57609 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV57610     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingMotionBlurFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
57611     {
57612       pNext = pNext_;
57613       return *this;
57614     }
57615 
57616     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingMotionBlurFeaturesNV &
setRayTracingMotionBlurVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV57617       setRayTracingMotionBlur( VULKAN_HPP_NAMESPACE::Bool32 rayTracingMotionBlur_ ) VULKAN_HPP_NOEXCEPT
57618     {
57619       rayTracingMotionBlur = rayTracingMotionBlur_;
57620       return *this;
57621     }
57622 
57623     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingMotionBlurFeaturesNV &
setRayTracingMotionBlurPipelineTraceRaysIndirectVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV57624                             setRayTracingMotionBlurPipelineTraceRaysIndirect(
57625                               VULKAN_HPP_NAMESPACE::Bool32 rayTracingMotionBlurPipelineTraceRaysIndirect_ ) VULKAN_HPP_NOEXCEPT
57626     {
57627       rayTracingMotionBlurPipelineTraceRaysIndirect = rayTracingMotionBlurPipelineTraceRaysIndirect_;
57628       return *this;
57629     }
57630 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
57631 
operator VkPhysicalDeviceRayTracingMotionBlurFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV57632     explicit operator VkPhysicalDeviceRayTracingMotionBlurFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
57633     {
57634       return *reinterpret_cast<const VkPhysicalDeviceRayTracingMotionBlurFeaturesNV *>( this );
57635     }
57636 
operator VkPhysicalDeviceRayTracingMotionBlurFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV57637     explicit operator VkPhysicalDeviceRayTracingMotionBlurFeaturesNV &() VULKAN_HPP_NOEXCEPT
57638     {
57639       return *reinterpret_cast<VkPhysicalDeviceRayTracingMotionBlurFeaturesNV *>( this );
57640     }
57641 
57642 #if 14 <= VULKAN_HPP_CPP_VERSION
57643     auto
57644 #else
57645     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
57646                void * const &,
57647                VULKAN_HPP_NAMESPACE::Bool32 const &,
57648                VULKAN_HPP_NAMESPACE::Bool32 const &>
57649 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV57650       reflect() const VULKAN_HPP_NOEXCEPT
57651     {
57652       return std::tie( sType, pNext, rayTracingMotionBlur, rayTracingMotionBlurPipelineTraceRaysIndirect );
57653     }
57654 
57655 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
57656     auto operator<=>( PhysicalDeviceRayTracingMotionBlurFeaturesNV const & ) const = default;
57657 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV57658     bool operator==( PhysicalDeviceRayTracingMotionBlurFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
57659     {
57660       return this->reflect() == rhs.reflect();
57661     }
57662 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV57663     bool operator!=( PhysicalDeviceRayTracingMotionBlurFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
57664     {
57665       return this->reflect() != rhs.reflect();
57666     }
57667 #endif
57668 
57669   public:
57670     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRayTracingMotionBlurFeaturesNV;
57671     void *                              pNext = {};
57672     VULKAN_HPP_NAMESPACE::Bool32        rayTracingMotionBlur                          = {};
57673     VULKAN_HPP_NAMESPACE::Bool32        rayTracingMotionBlurPipelineTraceRaysIndirect = {};
57674   };
57675   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV ) ==
57676                               sizeof( VkPhysicalDeviceRayTracingMotionBlurFeaturesNV ),
57677                             "struct and wrapper have different size!" );
57678   VULKAN_HPP_STATIC_ASSERT(
57679     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV>::value,
57680     "struct wrapper is not a standard layout!" );
57681   VULKAN_HPP_STATIC_ASSERT(
57682     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV>::value,
57683     "PhysicalDeviceRayTracingMotionBlurFeaturesNV is not nothrow_move_constructible!" );
57684 
57685   template <>
57686   struct CppType<StructureType, StructureType::ePhysicalDeviceRayTracingMotionBlurFeaturesNV>
57687   {
57688     using Type = PhysicalDeviceRayTracingMotionBlurFeaturesNV;
57689   };
57690 
57691   struct PhysicalDeviceRayTracingPipelineFeaturesKHR
57692   {
57693     using NativeType = VkPhysicalDeviceRayTracingPipelineFeaturesKHR;
57694 
57695     static const bool                                  allowDuplicate = false;
57696     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
57697       StructureType::ePhysicalDeviceRayTracingPipelineFeaturesKHR;
57698 
57699 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRayTracingPipelineFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR57700     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingPipelineFeaturesKHR(
57701       VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipeline_                                    = {},
57702       VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineShaderGroupHandleCaptureReplay_      = {},
57703       VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineShaderGroupHandleCaptureReplayMixed_ = {},
57704       VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineTraceRaysIndirect_                   = {},
57705       VULKAN_HPP_NAMESPACE::Bool32 rayTraversalPrimitiveCulling_                          = {} ) VULKAN_HPP_NOEXCEPT
57706       : rayTracingPipeline( rayTracingPipeline_ )
57707       , rayTracingPipelineShaderGroupHandleCaptureReplay( rayTracingPipelineShaderGroupHandleCaptureReplay_ )
57708       , rayTracingPipelineShaderGroupHandleCaptureReplayMixed( rayTracingPipelineShaderGroupHandleCaptureReplayMixed_ )
57709       , rayTracingPipelineTraceRaysIndirect( rayTracingPipelineTraceRaysIndirect_ )
57710       , rayTraversalPrimitiveCulling( rayTraversalPrimitiveCulling_ )
57711     {}
57712 
57713     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingPipelineFeaturesKHR(
57714       PhysicalDeviceRayTracingPipelineFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57715 
PhysicalDeviceRayTracingPipelineFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR57716     PhysicalDeviceRayTracingPipelineFeaturesKHR( VkPhysicalDeviceRayTracingPipelineFeaturesKHR const & rhs )
57717       VULKAN_HPP_NOEXCEPT
57718       : PhysicalDeviceRayTracingPipelineFeaturesKHR(
57719           *reinterpret_cast<PhysicalDeviceRayTracingPipelineFeaturesKHR const *>( &rhs ) )
57720     {}
57721 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
57722 
57723     PhysicalDeviceRayTracingPipelineFeaturesKHR &
57724       operator=( PhysicalDeviceRayTracingPipelineFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57725 
57726     PhysicalDeviceRayTracingPipelineFeaturesKHR &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR57727       operator=( VkPhysicalDeviceRayTracingPipelineFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
57728     {
57729       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR const *>( &rhs );
57730       return *this;
57731     }
57732 
57733 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR57734     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
57735     {
57736       pNext = pNext_;
57737       return *this;
57738     }
57739 
57740     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR &
setRayTracingPipelineVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR57741       setRayTracingPipeline( VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipeline_ ) VULKAN_HPP_NOEXCEPT
57742     {
57743       rayTracingPipeline = rayTracingPipeline_;
57744       return *this;
57745     }
57746 
57747     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR &
setRayTracingPipelineShaderGroupHandleCaptureReplayVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR57748                             setRayTracingPipelineShaderGroupHandleCaptureReplay(
57749                               VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineShaderGroupHandleCaptureReplay_ ) VULKAN_HPP_NOEXCEPT
57750     {
57751       rayTracingPipelineShaderGroupHandleCaptureReplay = rayTracingPipelineShaderGroupHandleCaptureReplay_;
57752       return *this;
57753     }
57754 
57755     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR &
setRayTracingPipelineShaderGroupHandleCaptureReplayMixedVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR57756                             setRayTracingPipelineShaderGroupHandleCaptureReplayMixed(
57757                               VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineShaderGroupHandleCaptureReplayMixed_ ) VULKAN_HPP_NOEXCEPT
57758     {
57759       rayTracingPipelineShaderGroupHandleCaptureReplayMixed = rayTracingPipelineShaderGroupHandleCaptureReplayMixed_;
57760       return *this;
57761     }
57762 
setRayTracingPipelineTraceRaysIndirectVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR57763     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR & setRayTracingPipelineTraceRaysIndirect(
57764       VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineTraceRaysIndirect_ ) VULKAN_HPP_NOEXCEPT
57765     {
57766       rayTracingPipelineTraceRaysIndirect = rayTracingPipelineTraceRaysIndirect_;
57767       return *this;
57768     }
57769 
57770     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR &
setRayTraversalPrimitiveCullingVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR57771       setRayTraversalPrimitiveCulling( VULKAN_HPP_NAMESPACE::Bool32 rayTraversalPrimitiveCulling_ ) VULKAN_HPP_NOEXCEPT
57772     {
57773       rayTraversalPrimitiveCulling = rayTraversalPrimitiveCulling_;
57774       return *this;
57775     }
57776 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
57777 
operator VkPhysicalDeviceRayTracingPipelineFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR57778     explicit operator VkPhysicalDeviceRayTracingPipelineFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
57779     {
57780       return *reinterpret_cast<const VkPhysicalDeviceRayTracingPipelineFeaturesKHR *>( this );
57781     }
57782 
operator VkPhysicalDeviceRayTracingPipelineFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR57783     explicit operator VkPhysicalDeviceRayTracingPipelineFeaturesKHR &() VULKAN_HPP_NOEXCEPT
57784     {
57785       return *reinterpret_cast<VkPhysicalDeviceRayTracingPipelineFeaturesKHR *>( this );
57786     }
57787 
57788 #if 14 <= VULKAN_HPP_CPP_VERSION
57789     auto
57790 #else
57791     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
57792                void * const &,
57793                VULKAN_HPP_NAMESPACE::Bool32 const &,
57794                VULKAN_HPP_NAMESPACE::Bool32 const &,
57795                VULKAN_HPP_NAMESPACE::Bool32 const &,
57796                VULKAN_HPP_NAMESPACE::Bool32 const &,
57797                VULKAN_HPP_NAMESPACE::Bool32 const &>
57798 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR57799       reflect() const VULKAN_HPP_NOEXCEPT
57800     {
57801       return std::tie( sType,
57802                        pNext,
57803                        rayTracingPipeline,
57804                        rayTracingPipelineShaderGroupHandleCaptureReplay,
57805                        rayTracingPipelineShaderGroupHandleCaptureReplayMixed,
57806                        rayTracingPipelineTraceRaysIndirect,
57807                        rayTraversalPrimitiveCulling );
57808     }
57809 
57810 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
57811     auto operator<=>( PhysicalDeviceRayTracingPipelineFeaturesKHR const & ) const = default;
57812 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR57813     bool operator==( PhysicalDeviceRayTracingPipelineFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
57814     {
57815       return this->reflect() == rhs.reflect();
57816     }
57817 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR57818     bool operator!=( PhysicalDeviceRayTracingPipelineFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
57819     {
57820       return this->reflect() != rhs.reflect();
57821     }
57822 #endif
57823 
57824   public:
57825     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRayTracingPipelineFeaturesKHR;
57826     void *                              pNext = {};
57827     VULKAN_HPP_NAMESPACE::Bool32        rayTracingPipeline                                    = {};
57828     VULKAN_HPP_NAMESPACE::Bool32        rayTracingPipelineShaderGroupHandleCaptureReplay      = {};
57829     VULKAN_HPP_NAMESPACE::Bool32        rayTracingPipelineShaderGroupHandleCaptureReplayMixed = {};
57830     VULKAN_HPP_NAMESPACE::Bool32        rayTracingPipelineTraceRaysIndirect                   = {};
57831     VULKAN_HPP_NAMESPACE::Bool32        rayTraversalPrimitiveCulling                          = {};
57832   };
57833   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR ) ==
57834                               sizeof( VkPhysicalDeviceRayTracingPipelineFeaturesKHR ),
57835                             "struct and wrapper have different size!" );
57836   VULKAN_HPP_STATIC_ASSERT(
57837     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR>::value,
57838     "struct wrapper is not a standard layout!" );
57839   VULKAN_HPP_STATIC_ASSERT(
57840     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR>::value,
57841     "PhysicalDeviceRayTracingPipelineFeaturesKHR is not nothrow_move_constructible!" );
57842 
57843   template <>
57844   struct CppType<StructureType, StructureType::ePhysicalDeviceRayTracingPipelineFeaturesKHR>
57845   {
57846     using Type = PhysicalDeviceRayTracingPipelineFeaturesKHR;
57847   };
57848 
57849   struct PhysicalDeviceRayTracingPipelinePropertiesKHR
57850   {
57851     using NativeType = VkPhysicalDeviceRayTracingPipelinePropertiesKHR;
57852 
57853     static const bool                                  allowDuplicate = false;
57854     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
57855       StructureType::ePhysicalDeviceRayTracingPipelinePropertiesKHR;
57856 
57857 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
57858     VULKAN_HPP_CONSTEXPR
PhysicalDeviceRayTracingPipelinePropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelinePropertiesKHR57859       PhysicalDeviceRayTracingPipelinePropertiesKHR( uint32_t shaderGroupHandleSize_              = {},
57860                                                      uint32_t maxRayRecursionDepth_               = {},
57861                                                      uint32_t maxShaderGroupStride_               = {},
57862                                                      uint32_t shaderGroupBaseAlignment_           = {},
57863                                                      uint32_t shaderGroupHandleCaptureReplaySize_ = {},
57864                                                      uint32_t maxRayDispatchInvocationCount_      = {},
57865                                                      uint32_t shaderGroupHandleAlignment_         = {},
57866                                                      uint32_t maxRayHitAttributeSize_ = {} ) VULKAN_HPP_NOEXCEPT
57867       : shaderGroupHandleSize( shaderGroupHandleSize_ )
57868       , maxRayRecursionDepth( maxRayRecursionDepth_ )
57869       , maxShaderGroupStride( maxShaderGroupStride_ )
57870       , shaderGroupBaseAlignment( shaderGroupBaseAlignment_ )
57871       , shaderGroupHandleCaptureReplaySize( shaderGroupHandleCaptureReplaySize_ )
57872       , maxRayDispatchInvocationCount( maxRayDispatchInvocationCount_ )
57873       , shaderGroupHandleAlignment( shaderGroupHandleAlignment_ )
57874       , maxRayHitAttributeSize( maxRayHitAttributeSize_ )
57875     {}
57876 
57877     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingPipelinePropertiesKHR(
57878       PhysicalDeviceRayTracingPipelinePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57879 
PhysicalDeviceRayTracingPipelinePropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelinePropertiesKHR57880     PhysicalDeviceRayTracingPipelinePropertiesKHR( VkPhysicalDeviceRayTracingPipelinePropertiesKHR const & rhs )
57881       VULKAN_HPP_NOEXCEPT
57882       : PhysicalDeviceRayTracingPipelinePropertiesKHR(
57883           *reinterpret_cast<PhysicalDeviceRayTracingPipelinePropertiesKHR const *>( &rhs ) )
57884     {}
57885 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
57886 
57887     PhysicalDeviceRayTracingPipelinePropertiesKHR &
57888       operator=( PhysicalDeviceRayTracingPipelinePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57889 
57890     PhysicalDeviceRayTracingPipelinePropertiesKHR &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelinePropertiesKHR57891       operator=( VkPhysicalDeviceRayTracingPipelinePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
57892     {
57893       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelinePropertiesKHR const *>( &rhs );
57894       return *this;
57895     }
57896 
operator VkPhysicalDeviceRayTracingPipelinePropertiesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelinePropertiesKHR57897     explicit operator VkPhysicalDeviceRayTracingPipelinePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
57898     {
57899       return *reinterpret_cast<const VkPhysicalDeviceRayTracingPipelinePropertiesKHR *>( this );
57900     }
57901 
operator VkPhysicalDeviceRayTracingPipelinePropertiesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelinePropertiesKHR57902     explicit operator VkPhysicalDeviceRayTracingPipelinePropertiesKHR &() VULKAN_HPP_NOEXCEPT
57903     {
57904       return *reinterpret_cast<VkPhysicalDeviceRayTracingPipelinePropertiesKHR *>( this );
57905     }
57906 
57907 #if 14 <= VULKAN_HPP_CPP_VERSION
57908     auto
57909 #else
57910     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
57911                void * const &,
57912                uint32_t const &,
57913                uint32_t const &,
57914                uint32_t const &,
57915                uint32_t const &,
57916                uint32_t const &,
57917                uint32_t const &,
57918                uint32_t const &,
57919                uint32_t const &>
57920 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelinePropertiesKHR57921       reflect() const VULKAN_HPP_NOEXCEPT
57922     {
57923       return std::tie( sType,
57924                        pNext,
57925                        shaderGroupHandleSize,
57926                        maxRayRecursionDepth,
57927                        maxShaderGroupStride,
57928                        shaderGroupBaseAlignment,
57929                        shaderGroupHandleCaptureReplaySize,
57930                        maxRayDispatchInvocationCount,
57931                        shaderGroupHandleAlignment,
57932                        maxRayHitAttributeSize );
57933     }
57934 
57935 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
57936     auto operator<=>( PhysicalDeviceRayTracingPipelinePropertiesKHR const & ) const = default;
57937 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelinePropertiesKHR57938     bool operator==( PhysicalDeviceRayTracingPipelinePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
57939     {
57940       return this->reflect() == rhs.reflect();
57941     }
57942 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelinePropertiesKHR57943     bool operator!=( PhysicalDeviceRayTracingPipelinePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
57944     {
57945       return this->reflect() != rhs.reflect();
57946     }
57947 #endif
57948 
57949   public:
57950     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRayTracingPipelinePropertiesKHR;
57951     void *                              pNext = {};
57952     uint32_t                            shaderGroupHandleSize              = {};
57953     uint32_t                            maxRayRecursionDepth               = {};
57954     uint32_t                            maxShaderGroupStride               = {};
57955     uint32_t                            shaderGroupBaseAlignment           = {};
57956     uint32_t                            shaderGroupHandleCaptureReplaySize = {};
57957     uint32_t                            maxRayDispatchInvocationCount      = {};
57958     uint32_t                            shaderGroupHandleAlignment         = {};
57959     uint32_t                            maxRayHitAttributeSize             = {};
57960   };
57961   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelinePropertiesKHR ) ==
57962                               sizeof( VkPhysicalDeviceRayTracingPipelinePropertiesKHR ),
57963                             "struct and wrapper have different size!" );
57964   VULKAN_HPP_STATIC_ASSERT(
57965     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelinePropertiesKHR>::value,
57966     "struct wrapper is not a standard layout!" );
57967   VULKAN_HPP_STATIC_ASSERT(
57968     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelinePropertiesKHR>::value,
57969     "PhysicalDeviceRayTracingPipelinePropertiesKHR is not nothrow_move_constructible!" );
57970 
57971   template <>
57972   struct CppType<StructureType, StructureType::ePhysicalDeviceRayTracingPipelinePropertiesKHR>
57973   {
57974     using Type = PhysicalDeviceRayTracingPipelinePropertiesKHR;
57975   };
57976 
57977   struct PhysicalDeviceRayTracingPropertiesNV
57978   {
57979     using NativeType = VkPhysicalDeviceRayTracingPropertiesNV;
57980 
57981     static const bool                                  allowDuplicate = false;
57982     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
57983       StructureType::ePhysicalDeviceRayTracingPropertiesNV;
57984 
57985 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
57986     VULKAN_HPP_CONSTEXPR
PhysicalDeviceRayTracingPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPropertiesNV57987       PhysicalDeviceRayTracingPropertiesNV( uint32_t shaderGroupHandleSize_                  = {},
57988                                             uint32_t maxRecursionDepth_                      = {},
57989                                             uint32_t maxShaderGroupStride_                   = {},
57990                                             uint32_t shaderGroupBaseAlignment_               = {},
57991                                             uint64_t maxGeometryCount_                       = {},
57992                                             uint64_t maxInstanceCount_                       = {},
57993                                             uint64_t maxTriangleCount_                       = {},
57994                                             uint32_t maxDescriptorSetAccelerationStructures_ = {} ) VULKAN_HPP_NOEXCEPT
57995       : shaderGroupHandleSize( shaderGroupHandleSize_ )
57996       , maxRecursionDepth( maxRecursionDepth_ )
57997       , maxShaderGroupStride( maxShaderGroupStride_ )
57998       , shaderGroupBaseAlignment( shaderGroupBaseAlignment_ )
57999       , maxGeometryCount( maxGeometryCount_ )
58000       , maxInstanceCount( maxInstanceCount_ )
58001       , maxTriangleCount( maxTriangleCount_ )
58002       , maxDescriptorSetAccelerationStructures( maxDescriptorSetAccelerationStructures_ )
58003     {}
58004 
58005     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingPropertiesNV( PhysicalDeviceRayTracingPropertiesNV const & rhs )
58006       VULKAN_HPP_NOEXCEPT = default;
58007 
PhysicalDeviceRayTracingPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPropertiesNV58008     PhysicalDeviceRayTracingPropertiesNV( VkPhysicalDeviceRayTracingPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
58009       : PhysicalDeviceRayTracingPropertiesNV( *reinterpret_cast<PhysicalDeviceRayTracingPropertiesNV const *>( &rhs ) )
58010     {}
58011 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
58012 
58013     PhysicalDeviceRayTracingPropertiesNV &
58014       operator=( PhysicalDeviceRayTracingPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58015 
58016     PhysicalDeviceRayTracingPropertiesNV &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPropertiesNV58017       operator=( VkPhysicalDeviceRayTracingPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
58018     {
58019       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPropertiesNV const *>( &rhs );
58020       return *this;
58021     }
58022 
operator VkPhysicalDeviceRayTracingPropertiesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPropertiesNV58023     explicit operator VkPhysicalDeviceRayTracingPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
58024     {
58025       return *reinterpret_cast<const VkPhysicalDeviceRayTracingPropertiesNV *>( this );
58026     }
58027 
operator VkPhysicalDeviceRayTracingPropertiesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPropertiesNV58028     explicit operator VkPhysicalDeviceRayTracingPropertiesNV &() VULKAN_HPP_NOEXCEPT
58029     {
58030       return *reinterpret_cast<VkPhysicalDeviceRayTracingPropertiesNV *>( this );
58031     }
58032 
58033 #if 14 <= VULKAN_HPP_CPP_VERSION
58034     auto
58035 #else
58036     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
58037                void * const &,
58038                uint32_t const &,
58039                uint32_t const &,
58040                uint32_t const &,
58041                uint32_t const &,
58042                uint64_t const &,
58043                uint64_t const &,
58044                uint64_t const &,
58045                uint32_t const &>
58046 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPropertiesNV58047       reflect() const VULKAN_HPP_NOEXCEPT
58048     {
58049       return std::tie( sType,
58050                        pNext,
58051                        shaderGroupHandleSize,
58052                        maxRecursionDepth,
58053                        maxShaderGroupStride,
58054                        shaderGroupBaseAlignment,
58055                        maxGeometryCount,
58056                        maxInstanceCount,
58057                        maxTriangleCount,
58058                        maxDescriptorSetAccelerationStructures );
58059     }
58060 
58061 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
58062     auto operator<=>( PhysicalDeviceRayTracingPropertiesNV const & ) const = default;
58063 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPropertiesNV58064     bool operator==( PhysicalDeviceRayTracingPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
58065     {
58066       return this->reflect() == rhs.reflect();
58067     }
58068 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPropertiesNV58069     bool operator!=( PhysicalDeviceRayTracingPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
58070     {
58071       return this->reflect() != rhs.reflect();
58072     }
58073 #endif
58074 
58075   public:
58076     VULKAN_HPP_NAMESPACE::StructureType sType                    = StructureType::ePhysicalDeviceRayTracingPropertiesNV;
58077     void *                              pNext                    = {};
58078     uint32_t                            shaderGroupHandleSize    = {};
58079     uint32_t                            maxRecursionDepth        = {};
58080     uint32_t                            maxShaderGroupStride     = {};
58081     uint32_t                            shaderGroupBaseAlignment = {};
58082     uint64_t                            maxGeometryCount         = {};
58083     uint64_t                            maxInstanceCount         = {};
58084     uint64_t                            maxTriangleCount         = {};
58085     uint32_t                            maxDescriptorSetAccelerationStructures = {};
58086   };
58087   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPropertiesNV ) ==
58088                               sizeof( VkPhysicalDeviceRayTracingPropertiesNV ),
58089                             "struct and wrapper have different size!" );
58090   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPropertiesNV>::value,
58091                             "struct wrapper is not a standard layout!" );
58092   VULKAN_HPP_STATIC_ASSERT(
58093     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPropertiesNV>::value,
58094     "PhysicalDeviceRayTracingPropertiesNV is not nothrow_move_constructible!" );
58095 
58096   template <>
58097   struct CppType<StructureType, StructureType::ePhysicalDeviceRayTracingPropertiesNV>
58098   {
58099     using Type = PhysicalDeviceRayTracingPropertiesNV;
58100   };
58101 
58102   struct PhysicalDeviceRepresentativeFragmentTestFeaturesNV
58103   {
58104     using NativeType = VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV;
58105 
58106     static const bool                                  allowDuplicate = false;
58107     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
58108       StructureType::ePhysicalDeviceRepresentativeFragmentTestFeaturesNV;
58109 
58110 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRepresentativeFragmentTestFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV58111     VULKAN_HPP_CONSTEXPR PhysicalDeviceRepresentativeFragmentTestFeaturesNV(
58112       VULKAN_HPP_NAMESPACE::Bool32 representativeFragmentTest_ = {} ) VULKAN_HPP_NOEXCEPT
58113       : representativeFragmentTest( representativeFragmentTest_ )
58114     {}
58115 
58116     VULKAN_HPP_CONSTEXPR PhysicalDeviceRepresentativeFragmentTestFeaturesNV(
58117       PhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58118 
PhysicalDeviceRepresentativeFragmentTestFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV58119     PhysicalDeviceRepresentativeFragmentTestFeaturesNV(
58120       VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
58121       : PhysicalDeviceRepresentativeFragmentTestFeaturesNV(
58122           *reinterpret_cast<PhysicalDeviceRepresentativeFragmentTestFeaturesNV const *>( &rhs ) )
58123     {}
58124 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
58125 
58126     PhysicalDeviceRepresentativeFragmentTestFeaturesNV &
58127       operator=( PhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58128 
58129     PhysicalDeviceRepresentativeFragmentTestFeaturesNV &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV58130       operator=( VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
58131     {
58132       *this =
58133         *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV const *>( &rhs );
58134       return *this;
58135     }
58136 
58137 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
58138     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRepresentativeFragmentTestFeaturesNV &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV58139                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
58140     {
58141       pNext = pNext_;
58142       return *this;
58143     }
58144 
58145     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRepresentativeFragmentTestFeaturesNV &
setRepresentativeFragmentTestVULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV58146       setRepresentativeFragmentTest( VULKAN_HPP_NAMESPACE::Bool32 representativeFragmentTest_ ) VULKAN_HPP_NOEXCEPT
58147     {
58148       representativeFragmentTest = representativeFragmentTest_;
58149       return *this;
58150     }
58151 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
58152 
operator VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV58153     explicit operator VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
58154     {
58155       return *reinterpret_cast<const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV *>( this );
58156     }
58157 
operator VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV58158     explicit operator VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV &() VULKAN_HPP_NOEXCEPT
58159     {
58160       return *reinterpret_cast<VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV *>( this );
58161     }
58162 
58163 #if 14 <= VULKAN_HPP_CPP_VERSION
58164     auto
58165 #else
58166     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
58167 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV58168       reflect() const VULKAN_HPP_NOEXCEPT
58169     {
58170       return std::tie( sType, pNext, representativeFragmentTest );
58171     }
58172 
58173 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
58174     auto operator<=>( PhysicalDeviceRepresentativeFragmentTestFeaturesNV const & ) const = default;
58175 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV58176     bool operator==( PhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
58177     {
58178       return this->reflect() == rhs.reflect();
58179     }
58180 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV58181     bool operator!=( PhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
58182     {
58183       return this->reflect() != rhs.reflect();
58184     }
58185 #endif
58186 
58187   public:
58188     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRepresentativeFragmentTestFeaturesNV;
58189     void *                              pNext = {};
58190     VULKAN_HPP_NAMESPACE::Bool32        representativeFragmentTest = {};
58191   };
58192   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV ) ==
58193                               sizeof( VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV ),
58194                             "struct and wrapper have different size!" );
58195   VULKAN_HPP_STATIC_ASSERT(
58196     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV>::value,
58197     "struct wrapper is not a standard layout!" );
58198   VULKAN_HPP_STATIC_ASSERT(
58199     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV>::value,
58200     "PhysicalDeviceRepresentativeFragmentTestFeaturesNV is not nothrow_move_constructible!" );
58201 
58202   template <>
58203   struct CppType<StructureType, StructureType::ePhysicalDeviceRepresentativeFragmentTestFeaturesNV>
58204   {
58205     using Type = PhysicalDeviceRepresentativeFragmentTestFeaturesNV;
58206   };
58207 
58208   struct PhysicalDeviceRobustness2FeaturesEXT
58209   {
58210     using NativeType = VkPhysicalDeviceRobustness2FeaturesEXT;
58211 
58212     static const bool                                  allowDuplicate = false;
58213     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
58214       StructureType::ePhysicalDeviceRobustness2FeaturesEXT;
58215 
58216 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
58217     VULKAN_HPP_CONSTEXPR
PhysicalDeviceRobustness2FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT58218       PhysicalDeviceRobustness2FeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccess2_ = {},
58219                                             VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess2_  = {},
58220                                             VULKAN_HPP_NAMESPACE::Bool32 nullDescriptor_      = {} ) VULKAN_HPP_NOEXCEPT
58221       : robustBufferAccess2( robustBufferAccess2_ )
58222       , robustImageAccess2( robustImageAccess2_ )
58223       , nullDescriptor( nullDescriptor_ )
58224     {}
58225 
58226     VULKAN_HPP_CONSTEXPR PhysicalDeviceRobustness2FeaturesEXT( PhysicalDeviceRobustness2FeaturesEXT const & rhs )
58227       VULKAN_HPP_NOEXCEPT = default;
58228 
PhysicalDeviceRobustness2FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT58229     PhysicalDeviceRobustness2FeaturesEXT( VkPhysicalDeviceRobustness2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
58230       : PhysicalDeviceRobustness2FeaturesEXT( *reinterpret_cast<PhysicalDeviceRobustness2FeaturesEXT const *>( &rhs ) )
58231     {}
58232 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
58233 
58234     PhysicalDeviceRobustness2FeaturesEXT &
58235       operator=( PhysicalDeviceRobustness2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58236 
58237     PhysicalDeviceRobustness2FeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT58238       operator=( VkPhysicalDeviceRobustness2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
58239     {
58240       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT const *>( &rhs );
58241       return *this;
58242     }
58243 
58244 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT58245     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRobustness2FeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
58246     {
58247       pNext = pNext_;
58248       return *this;
58249     }
58250 
58251     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRobustness2FeaturesEXT &
setRobustBufferAccess2VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT58252       setRobustBufferAccess2( VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccess2_ ) VULKAN_HPP_NOEXCEPT
58253     {
58254       robustBufferAccess2 = robustBufferAccess2_;
58255       return *this;
58256     }
58257 
58258     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRobustness2FeaturesEXT &
setRobustImageAccess2VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT58259       setRobustImageAccess2( VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess2_ ) VULKAN_HPP_NOEXCEPT
58260     {
58261       robustImageAccess2 = robustImageAccess2_;
58262       return *this;
58263     }
58264 
58265     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRobustness2FeaturesEXT &
setNullDescriptorVULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT58266                             setNullDescriptor( VULKAN_HPP_NAMESPACE::Bool32 nullDescriptor_ ) VULKAN_HPP_NOEXCEPT
58267     {
58268       nullDescriptor = nullDescriptor_;
58269       return *this;
58270     }
58271 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
58272 
operator VkPhysicalDeviceRobustness2FeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT58273     explicit operator VkPhysicalDeviceRobustness2FeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
58274     {
58275       return *reinterpret_cast<const VkPhysicalDeviceRobustness2FeaturesEXT *>( this );
58276     }
58277 
operator VkPhysicalDeviceRobustness2FeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT58278     explicit operator VkPhysicalDeviceRobustness2FeaturesEXT &() VULKAN_HPP_NOEXCEPT
58279     {
58280       return *reinterpret_cast<VkPhysicalDeviceRobustness2FeaturesEXT *>( this );
58281     }
58282 
58283 #if 14 <= VULKAN_HPP_CPP_VERSION
58284     auto
58285 #else
58286     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
58287                void * const &,
58288                VULKAN_HPP_NAMESPACE::Bool32 const &,
58289                VULKAN_HPP_NAMESPACE::Bool32 const &,
58290                VULKAN_HPP_NAMESPACE::Bool32 const &>
58291 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT58292       reflect() const VULKAN_HPP_NOEXCEPT
58293     {
58294       return std::tie( sType, pNext, robustBufferAccess2, robustImageAccess2, nullDescriptor );
58295     }
58296 
58297 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
58298     auto operator<=>( PhysicalDeviceRobustness2FeaturesEXT const & ) const = default;
58299 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT58300     bool operator==( PhysicalDeviceRobustness2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
58301     {
58302       return this->reflect() == rhs.reflect();
58303     }
58304 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT58305     bool operator!=( PhysicalDeviceRobustness2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
58306     {
58307       return this->reflect() != rhs.reflect();
58308     }
58309 #endif
58310 
58311   public:
58312     VULKAN_HPP_NAMESPACE::StructureType sType               = StructureType::ePhysicalDeviceRobustness2FeaturesEXT;
58313     void *                              pNext               = {};
58314     VULKAN_HPP_NAMESPACE::Bool32        robustBufferAccess2 = {};
58315     VULKAN_HPP_NAMESPACE::Bool32        robustImageAccess2  = {};
58316     VULKAN_HPP_NAMESPACE::Bool32        nullDescriptor      = {};
58317   };
58318   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT ) ==
58319                               sizeof( VkPhysicalDeviceRobustness2FeaturesEXT ),
58320                             "struct and wrapper have different size!" );
58321   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT>::value,
58322                             "struct wrapper is not a standard layout!" );
58323   VULKAN_HPP_STATIC_ASSERT(
58324     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT>::value,
58325     "PhysicalDeviceRobustness2FeaturesEXT is not nothrow_move_constructible!" );
58326 
58327   template <>
58328   struct CppType<StructureType, StructureType::ePhysicalDeviceRobustness2FeaturesEXT>
58329   {
58330     using Type = PhysicalDeviceRobustness2FeaturesEXT;
58331   };
58332 
58333   struct PhysicalDeviceRobustness2PropertiesEXT
58334   {
58335     using NativeType = VkPhysicalDeviceRobustness2PropertiesEXT;
58336 
58337     static const bool                                  allowDuplicate = false;
58338     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
58339       StructureType::ePhysicalDeviceRobustness2PropertiesEXT;
58340 
58341 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRobustness2PropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT58342     VULKAN_HPP_CONSTEXPR PhysicalDeviceRobustness2PropertiesEXT(
58343       VULKAN_HPP_NAMESPACE::DeviceSize robustStorageBufferAccessSizeAlignment_ = {},
58344       VULKAN_HPP_NAMESPACE::DeviceSize robustUniformBufferAccessSizeAlignment_ = {} ) VULKAN_HPP_NOEXCEPT
58345       : robustStorageBufferAccessSizeAlignment( robustStorageBufferAccessSizeAlignment_ )
58346       , robustUniformBufferAccessSizeAlignment( robustUniformBufferAccessSizeAlignment_ )
58347     {}
58348 
58349     VULKAN_HPP_CONSTEXPR PhysicalDeviceRobustness2PropertiesEXT( PhysicalDeviceRobustness2PropertiesEXT const & rhs )
58350       VULKAN_HPP_NOEXCEPT = default;
58351 
PhysicalDeviceRobustness2PropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT58352     PhysicalDeviceRobustness2PropertiesEXT( VkPhysicalDeviceRobustness2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
58353       : PhysicalDeviceRobustness2PropertiesEXT(
58354           *reinterpret_cast<PhysicalDeviceRobustness2PropertiesEXT const *>( &rhs ) )
58355     {}
58356 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
58357 
58358     PhysicalDeviceRobustness2PropertiesEXT &
58359       operator=( PhysicalDeviceRobustness2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58360 
58361     PhysicalDeviceRobustness2PropertiesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT58362       operator=( VkPhysicalDeviceRobustness2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
58363     {
58364       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT const *>( &rhs );
58365       return *this;
58366     }
58367 
operator VkPhysicalDeviceRobustness2PropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT58368     explicit operator VkPhysicalDeviceRobustness2PropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
58369     {
58370       return *reinterpret_cast<const VkPhysicalDeviceRobustness2PropertiesEXT *>( this );
58371     }
58372 
operator VkPhysicalDeviceRobustness2PropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT58373     explicit operator VkPhysicalDeviceRobustness2PropertiesEXT &() VULKAN_HPP_NOEXCEPT
58374     {
58375       return *reinterpret_cast<VkPhysicalDeviceRobustness2PropertiesEXT *>( this );
58376     }
58377 
58378 #if 14 <= VULKAN_HPP_CPP_VERSION
58379     auto
58380 #else
58381     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
58382                void * const &,
58383                VULKAN_HPP_NAMESPACE::DeviceSize const &,
58384                VULKAN_HPP_NAMESPACE::DeviceSize const &>
58385 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT58386       reflect() const VULKAN_HPP_NOEXCEPT
58387     {
58388       return std::tie( sType, pNext, robustStorageBufferAccessSizeAlignment, robustUniformBufferAccessSizeAlignment );
58389     }
58390 
58391 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
58392     auto operator<=>( PhysicalDeviceRobustness2PropertiesEXT const & ) const = default;
58393 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT58394     bool operator==( PhysicalDeviceRobustness2PropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
58395     {
58396       return this->reflect() == rhs.reflect();
58397     }
58398 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT58399     bool operator!=( PhysicalDeviceRobustness2PropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
58400     {
58401       return this->reflect() != rhs.reflect();
58402     }
58403 #endif
58404 
58405   public:
58406     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRobustness2PropertiesEXT;
58407     void *                              pNext = {};
58408     VULKAN_HPP_NAMESPACE::DeviceSize    robustStorageBufferAccessSizeAlignment = {};
58409     VULKAN_HPP_NAMESPACE::DeviceSize    robustUniformBufferAccessSizeAlignment = {};
58410   };
58411   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT ) ==
58412                               sizeof( VkPhysicalDeviceRobustness2PropertiesEXT ),
58413                             "struct and wrapper have different size!" );
58414   VULKAN_HPP_STATIC_ASSERT(
58415     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT>::value,
58416     "struct wrapper is not a standard layout!" );
58417   VULKAN_HPP_STATIC_ASSERT(
58418     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT>::value,
58419     "PhysicalDeviceRobustness2PropertiesEXT is not nothrow_move_constructible!" );
58420 
58421   template <>
58422   struct CppType<StructureType, StructureType::ePhysicalDeviceRobustness2PropertiesEXT>
58423   {
58424     using Type = PhysicalDeviceRobustness2PropertiesEXT;
58425   };
58426 
58427   struct PhysicalDeviceSampleLocationsPropertiesEXT
58428   {
58429     using NativeType = VkPhysicalDeviceSampleLocationsPropertiesEXT;
58430 
58431     static const bool                                  allowDuplicate = false;
58432     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
58433       StructureType::ePhysicalDeviceSampleLocationsPropertiesEXT;
58434 
58435 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSampleLocationsPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT58436     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSampleLocationsPropertiesEXT(
58437       VULKAN_HPP_NAMESPACE::SampleCountFlags sampleLocationSampleCounts_    = {},
58438       VULKAN_HPP_NAMESPACE::Extent2D         maxSampleLocationGridSize_     = {},
58439       std::array<float, 2> const &           sampleLocationCoordinateRange_ = {},
58440       uint32_t                               sampleLocationSubPixelBits_    = {},
58441       VULKAN_HPP_NAMESPACE::Bool32           variableSampleLocations_       = {} ) VULKAN_HPP_NOEXCEPT
58442       : sampleLocationSampleCounts( sampleLocationSampleCounts_ )
58443       , maxSampleLocationGridSize( maxSampleLocationGridSize_ )
58444       , sampleLocationCoordinateRange( sampleLocationCoordinateRange_ )
58445       , sampleLocationSubPixelBits( sampleLocationSubPixelBits_ )
58446       , variableSampleLocations( variableSampleLocations_ )
58447     {}
58448 
58449     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSampleLocationsPropertiesEXT(
58450       PhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58451 
PhysicalDeviceSampleLocationsPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT58452     PhysicalDeviceSampleLocationsPropertiesEXT( VkPhysicalDeviceSampleLocationsPropertiesEXT const & rhs )
58453       VULKAN_HPP_NOEXCEPT
58454       : PhysicalDeviceSampleLocationsPropertiesEXT(
58455           *reinterpret_cast<PhysicalDeviceSampleLocationsPropertiesEXT const *>( &rhs ) )
58456     {}
58457 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
58458 
58459     PhysicalDeviceSampleLocationsPropertiesEXT &
58460       operator=( PhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58461 
58462     PhysicalDeviceSampleLocationsPropertiesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT58463       operator=( VkPhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
58464     {
58465       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT const *>( &rhs );
58466       return *this;
58467     }
58468 
operator VkPhysicalDeviceSampleLocationsPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT58469     explicit operator VkPhysicalDeviceSampleLocationsPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
58470     {
58471       return *reinterpret_cast<const VkPhysicalDeviceSampleLocationsPropertiesEXT *>( this );
58472     }
58473 
operator VkPhysicalDeviceSampleLocationsPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT58474     explicit operator VkPhysicalDeviceSampleLocationsPropertiesEXT &() VULKAN_HPP_NOEXCEPT
58475     {
58476       return *reinterpret_cast<VkPhysicalDeviceSampleLocationsPropertiesEXT *>( this );
58477     }
58478 
58479 #if 14 <= VULKAN_HPP_CPP_VERSION
58480     auto
58481 #else
58482     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
58483                void * const &,
58484                VULKAN_HPP_NAMESPACE::SampleCountFlags const &,
58485                VULKAN_HPP_NAMESPACE::Extent2D const &,
58486                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 2> const &,
58487                uint32_t const &,
58488                VULKAN_HPP_NAMESPACE::Bool32 const &>
58489 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT58490       reflect() const VULKAN_HPP_NOEXCEPT
58491     {
58492       return std::tie( sType,
58493                        pNext,
58494                        sampleLocationSampleCounts,
58495                        maxSampleLocationGridSize,
58496                        sampleLocationCoordinateRange,
58497                        sampleLocationSubPixelBits,
58498                        variableSampleLocations );
58499     }
58500 
58501 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
58502     auto operator<=>( PhysicalDeviceSampleLocationsPropertiesEXT const & ) const = default;
58503 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT58504     bool operator==( PhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
58505     {
58506       return this->reflect() == rhs.reflect();
58507     }
58508 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT58509     bool operator!=( PhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
58510     {
58511       return this->reflect() != rhs.reflect();
58512     }
58513 #endif
58514 
58515   public:
58516     VULKAN_HPP_NAMESPACE::StructureType            sType = StructureType::ePhysicalDeviceSampleLocationsPropertiesEXT;
58517     void *                                         pNext = {};
58518     VULKAN_HPP_NAMESPACE::SampleCountFlags         sampleLocationSampleCounts    = {};
58519     VULKAN_HPP_NAMESPACE::Extent2D                 maxSampleLocationGridSize     = {};
58520     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 2> sampleLocationCoordinateRange = {};
58521     uint32_t                                       sampleLocationSubPixelBits    = {};
58522     VULKAN_HPP_NAMESPACE::Bool32                   variableSampleLocations       = {};
58523   };
58524   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT ) ==
58525                               sizeof( VkPhysicalDeviceSampleLocationsPropertiesEXT ),
58526                             "struct and wrapper have different size!" );
58527   VULKAN_HPP_STATIC_ASSERT(
58528     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT>::value,
58529     "struct wrapper is not a standard layout!" );
58530   VULKAN_HPP_STATIC_ASSERT(
58531     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT>::value,
58532     "PhysicalDeviceSampleLocationsPropertiesEXT is not nothrow_move_constructible!" );
58533 
58534   template <>
58535   struct CppType<StructureType, StructureType::ePhysicalDeviceSampleLocationsPropertiesEXT>
58536   {
58537     using Type = PhysicalDeviceSampleLocationsPropertiesEXT;
58538   };
58539 
58540   struct PhysicalDeviceSamplerFilterMinmaxProperties
58541   {
58542     using NativeType = VkPhysicalDeviceSamplerFilterMinmaxProperties;
58543 
58544     static const bool                                  allowDuplicate = false;
58545     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
58546       StructureType::ePhysicalDeviceSamplerFilterMinmaxProperties;
58547 
58548 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSamplerFilterMinmaxPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties58549     VULKAN_HPP_CONSTEXPR PhysicalDeviceSamplerFilterMinmaxProperties(
58550       VULKAN_HPP_NAMESPACE::Bool32 filterMinmaxSingleComponentFormats_ = {},
58551       VULKAN_HPP_NAMESPACE::Bool32 filterMinmaxImageComponentMapping_  = {} ) VULKAN_HPP_NOEXCEPT
58552       : filterMinmaxSingleComponentFormats( filterMinmaxSingleComponentFormats_ )
58553       , filterMinmaxImageComponentMapping( filterMinmaxImageComponentMapping_ )
58554     {}
58555 
58556     VULKAN_HPP_CONSTEXPR PhysicalDeviceSamplerFilterMinmaxProperties(
58557       PhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58558 
PhysicalDeviceSamplerFilterMinmaxPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties58559     PhysicalDeviceSamplerFilterMinmaxProperties( VkPhysicalDeviceSamplerFilterMinmaxProperties const & rhs )
58560       VULKAN_HPP_NOEXCEPT
58561       : PhysicalDeviceSamplerFilterMinmaxProperties(
58562           *reinterpret_cast<PhysicalDeviceSamplerFilterMinmaxProperties const *>( &rhs ) )
58563     {}
58564 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
58565 
58566     PhysicalDeviceSamplerFilterMinmaxProperties &
58567       operator=( PhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58568 
58569     PhysicalDeviceSamplerFilterMinmaxProperties &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties58570       operator=( VkPhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) VULKAN_HPP_NOEXCEPT
58571     {
58572       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties const *>( &rhs );
58573       return *this;
58574     }
58575 
operator VkPhysicalDeviceSamplerFilterMinmaxProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties58576     explicit operator VkPhysicalDeviceSamplerFilterMinmaxProperties const &() const VULKAN_HPP_NOEXCEPT
58577     {
58578       return *reinterpret_cast<const VkPhysicalDeviceSamplerFilterMinmaxProperties *>( this );
58579     }
58580 
operator VkPhysicalDeviceSamplerFilterMinmaxProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties58581     explicit operator VkPhysicalDeviceSamplerFilterMinmaxProperties &() VULKAN_HPP_NOEXCEPT
58582     {
58583       return *reinterpret_cast<VkPhysicalDeviceSamplerFilterMinmaxProperties *>( this );
58584     }
58585 
58586 #if 14 <= VULKAN_HPP_CPP_VERSION
58587     auto
58588 #else
58589     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
58590                void * const &,
58591                VULKAN_HPP_NAMESPACE::Bool32 const &,
58592                VULKAN_HPP_NAMESPACE::Bool32 const &>
58593 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties58594       reflect() const VULKAN_HPP_NOEXCEPT
58595     {
58596       return std::tie( sType, pNext, filterMinmaxSingleComponentFormats, filterMinmaxImageComponentMapping );
58597     }
58598 
58599 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
58600     auto operator<=>( PhysicalDeviceSamplerFilterMinmaxProperties const & ) const = default;
58601 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties58602     bool operator==( PhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
58603     {
58604       return this->reflect() == rhs.reflect();
58605     }
58606 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties58607     bool operator!=( PhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
58608     {
58609       return this->reflect() != rhs.reflect();
58610     }
58611 #endif
58612 
58613   public:
58614     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSamplerFilterMinmaxProperties;
58615     void *                              pNext = {};
58616     VULKAN_HPP_NAMESPACE::Bool32        filterMinmaxSingleComponentFormats = {};
58617     VULKAN_HPP_NAMESPACE::Bool32        filterMinmaxImageComponentMapping  = {};
58618   };
58619   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties ) ==
58620                               sizeof( VkPhysicalDeviceSamplerFilterMinmaxProperties ),
58621                             "struct and wrapper have different size!" );
58622   VULKAN_HPP_STATIC_ASSERT(
58623     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties>::value,
58624     "struct wrapper is not a standard layout!" );
58625   VULKAN_HPP_STATIC_ASSERT(
58626     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties>::value,
58627     "PhysicalDeviceSamplerFilterMinmaxProperties is not nothrow_move_constructible!" );
58628 
58629   template <>
58630   struct CppType<StructureType, StructureType::ePhysicalDeviceSamplerFilterMinmaxProperties>
58631   {
58632     using Type = PhysicalDeviceSamplerFilterMinmaxProperties;
58633   };
58634   using PhysicalDeviceSamplerFilterMinmaxPropertiesEXT = PhysicalDeviceSamplerFilterMinmaxProperties;
58635 
58636   struct PhysicalDeviceSamplerYcbcrConversionFeatures
58637   {
58638     using NativeType = VkPhysicalDeviceSamplerYcbcrConversionFeatures;
58639 
58640     static const bool                                  allowDuplicate = false;
58641     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
58642       StructureType::ePhysicalDeviceSamplerYcbcrConversionFeatures;
58643 
58644 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSamplerYcbcrConversionFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures58645     VULKAN_HPP_CONSTEXPR PhysicalDeviceSamplerYcbcrConversionFeatures(
58646       VULKAN_HPP_NAMESPACE::Bool32 samplerYcbcrConversion_ = {} ) VULKAN_HPP_NOEXCEPT
58647       : samplerYcbcrConversion( samplerYcbcrConversion_ )
58648     {}
58649 
58650     VULKAN_HPP_CONSTEXPR PhysicalDeviceSamplerYcbcrConversionFeatures(
58651       PhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58652 
PhysicalDeviceSamplerYcbcrConversionFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures58653     PhysicalDeviceSamplerYcbcrConversionFeatures( VkPhysicalDeviceSamplerYcbcrConversionFeatures const & rhs )
58654       VULKAN_HPP_NOEXCEPT
58655       : PhysicalDeviceSamplerYcbcrConversionFeatures(
58656           *reinterpret_cast<PhysicalDeviceSamplerYcbcrConversionFeatures const *>( &rhs ) )
58657     {}
58658 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
58659 
58660     PhysicalDeviceSamplerYcbcrConversionFeatures &
58661       operator=( PhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58662 
58663     PhysicalDeviceSamplerYcbcrConversionFeatures &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures58664       operator=( VkPhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
58665     {
58666       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures const *>( &rhs );
58667       return *this;
58668     }
58669 
58670 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures58671     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSamplerYcbcrConversionFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
58672     {
58673       pNext = pNext_;
58674       return *this;
58675     }
58676 
58677     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSamplerYcbcrConversionFeatures &
setSamplerYcbcrConversionVULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures58678       setSamplerYcbcrConversion( VULKAN_HPP_NAMESPACE::Bool32 samplerYcbcrConversion_ ) VULKAN_HPP_NOEXCEPT
58679     {
58680       samplerYcbcrConversion = samplerYcbcrConversion_;
58681       return *this;
58682     }
58683 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
58684 
operator VkPhysicalDeviceSamplerYcbcrConversionFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures58685     explicit operator VkPhysicalDeviceSamplerYcbcrConversionFeatures const &() const VULKAN_HPP_NOEXCEPT
58686     {
58687       return *reinterpret_cast<const VkPhysicalDeviceSamplerYcbcrConversionFeatures *>( this );
58688     }
58689 
operator VkPhysicalDeviceSamplerYcbcrConversionFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures58690     explicit operator VkPhysicalDeviceSamplerYcbcrConversionFeatures &() VULKAN_HPP_NOEXCEPT
58691     {
58692       return *reinterpret_cast<VkPhysicalDeviceSamplerYcbcrConversionFeatures *>( this );
58693     }
58694 
58695 #if 14 <= VULKAN_HPP_CPP_VERSION
58696     auto
58697 #else
58698     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
58699 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures58700       reflect() const VULKAN_HPP_NOEXCEPT
58701     {
58702       return std::tie( sType, pNext, samplerYcbcrConversion );
58703     }
58704 
58705 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
58706     auto operator<=>( PhysicalDeviceSamplerYcbcrConversionFeatures const & ) const = default;
58707 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures58708     bool operator==( PhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
58709     {
58710       return this->reflect() == rhs.reflect();
58711     }
58712 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures58713     bool operator!=( PhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
58714     {
58715       return this->reflect() != rhs.reflect();
58716     }
58717 #endif
58718 
58719   public:
58720     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSamplerYcbcrConversionFeatures;
58721     void *                              pNext = {};
58722     VULKAN_HPP_NAMESPACE::Bool32        samplerYcbcrConversion = {};
58723   };
58724   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures ) ==
58725                               sizeof( VkPhysicalDeviceSamplerYcbcrConversionFeatures ),
58726                             "struct and wrapper have different size!" );
58727   VULKAN_HPP_STATIC_ASSERT(
58728     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures>::value,
58729     "struct wrapper is not a standard layout!" );
58730   VULKAN_HPP_STATIC_ASSERT(
58731     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures>::value,
58732     "PhysicalDeviceSamplerYcbcrConversionFeatures is not nothrow_move_constructible!" );
58733 
58734   template <>
58735   struct CppType<StructureType, StructureType::ePhysicalDeviceSamplerYcbcrConversionFeatures>
58736   {
58737     using Type = PhysicalDeviceSamplerYcbcrConversionFeatures;
58738   };
58739   using PhysicalDeviceSamplerYcbcrConversionFeaturesKHR = PhysicalDeviceSamplerYcbcrConversionFeatures;
58740 
58741   struct PhysicalDeviceScalarBlockLayoutFeatures
58742   {
58743     using NativeType = VkPhysicalDeviceScalarBlockLayoutFeatures;
58744 
58745     static const bool                                  allowDuplicate = false;
58746     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
58747       StructureType::ePhysicalDeviceScalarBlockLayoutFeatures;
58748 
58749 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceScalarBlockLayoutFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures58750     VULKAN_HPP_CONSTEXPR PhysicalDeviceScalarBlockLayoutFeatures( VULKAN_HPP_NAMESPACE::Bool32 scalarBlockLayout_ = {} )
58751       VULKAN_HPP_NOEXCEPT : scalarBlockLayout( scalarBlockLayout_ )
58752     {}
58753 
58754     VULKAN_HPP_CONSTEXPR PhysicalDeviceScalarBlockLayoutFeatures( PhysicalDeviceScalarBlockLayoutFeatures const & rhs )
58755       VULKAN_HPP_NOEXCEPT = default;
58756 
PhysicalDeviceScalarBlockLayoutFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures58757     PhysicalDeviceScalarBlockLayoutFeatures( VkPhysicalDeviceScalarBlockLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
58758       : PhysicalDeviceScalarBlockLayoutFeatures(
58759           *reinterpret_cast<PhysicalDeviceScalarBlockLayoutFeatures const *>( &rhs ) )
58760     {}
58761 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
58762 
58763     PhysicalDeviceScalarBlockLayoutFeatures &
58764       operator=( PhysicalDeviceScalarBlockLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58765 
58766     PhysicalDeviceScalarBlockLayoutFeatures &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures58767       operator=( VkPhysicalDeviceScalarBlockLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
58768     {
58769       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures const *>( &rhs );
58770       return *this;
58771     }
58772 
58773 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures58774     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceScalarBlockLayoutFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
58775     {
58776       pNext = pNext_;
58777       return *this;
58778     }
58779 
58780     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceScalarBlockLayoutFeatures &
setScalarBlockLayoutVULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures58781                             setScalarBlockLayout( VULKAN_HPP_NAMESPACE::Bool32 scalarBlockLayout_ ) VULKAN_HPP_NOEXCEPT
58782     {
58783       scalarBlockLayout = scalarBlockLayout_;
58784       return *this;
58785     }
58786 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
58787 
operator VkPhysicalDeviceScalarBlockLayoutFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures58788     explicit operator VkPhysicalDeviceScalarBlockLayoutFeatures const &() const VULKAN_HPP_NOEXCEPT
58789     {
58790       return *reinterpret_cast<const VkPhysicalDeviceScalarBlockLayoutFeatures *>( this );
58791     }
58792 
operator VkPhysicalDeviceScalarBlockLayoutFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures58793     explicit operator VkPhysicalDeviceScalarBlockLayoutFeatures &() VULKAN_HPP_NOEXCEPT
58794     {
58795       return *reinterpret_cast<VkPhysicalDeviceScalarBlockLayoutFeatures *>( this );
58796     }
58797 
58798 #if 14 <= VULKAN_HPP_CPP_VERSION
58799     auto
58800 #else
58801     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
58802 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures58803       reflect() const VULKAN_HPP_NOEXCEPT
58804     {
58805       return std::tie( sType, pNext, scalarBlockLayout );
58806     }
58807 
58808 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
58809     auto operator<=>( PhysicalDeviceScalarBlockLayoutFeatures const & ) const = default;
58810 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures58811     bool operator==( PhysicalDeviceScalarBlockLayoutFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
58812     {
58813       return this->reflect() == rhs.reflect();
58814     }
58815 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures58816     bool operator!=( PhysicalDeviceScalarBlockLayoutFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
58817     {
58818       return this->reflect() != rhs.reflect();
58819     }
58820 #endif
58821 
58822   public:
58823     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::ePhysicalDeviceScalarBlockLayoutFeatures;
58824     void *                              pNext             = {};
58825     VULKAN_HPP_NAMESPACE::Bool32        scalarBlockLayout = {};
58826   };
58827   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures ) ==
58828                               sizeof( VkPhysicalDeviceScalarBlockLayoutFeatures ),
58829                             "struct and wrapper have different size!" );
58830   VULKAN_HPP_STATIC_ASSERT(
58831     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures>::value,
58832     "struct wrapper is not a standard layout!" );
58833   VULKAN_HPP_STATIC_ASSERT(
58834     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures>::value,
58835     "PhysicalDeviceScalarBlockLayoutFeatures is not nothrow_move_constructible!" );
58836 
58837   template <>
58838   struct CppType<StructureType, StructureType::ePhysicalDeviceScalarBlockLayoutFeatures>
58839   {
58840     using Type = PhysicalDeviceScalarBlockLayoutFeatures;
58841   };
58842   using PhysicalDeviceScalarBlockLayoutFeaturesEXT = PhysicalDeviceScalarBlockLayoutFeatures;
58843 
58844   struct PhysicalDeviceSeparateDepthStencilLayoutsFeatures
58845   {
58846     using NativeType = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures;
58847 
58848     static const bool                                  allowDuplicate = false;
58849     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
58850       StructureType::ePhysicalDeviceSeparateDepthStencilLayoutsFeatures;
58851 
58852 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSeparateDepthStencilLayoutsFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures58853     VULKAN_HPP_CONSTEXPR PhysicalDeviceSeparateDepthStencilLayoutsFeatures(
58854       VULKAN_HPP_NAMESPACE::Bool32 separateDepthStencilLayouts_ = {} ) VULKAN_HPP_NOEXCEPT
58855       : separateDepthStencilLayouts( separateDepthStencilLayouts_ )
58856     {}
58857 
58858     VULKAN_HPP_CONSTEXPR PhysicalDeviceSeparateDepthStencilLayoutsFeatures(
58859       PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58860 
PhysicalDeviceSeparateDepthStencilLayoutsFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures58861     PhysicalDeviceSeparateDepthStencilLayoutsFeatures( VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs )
58862       VULKAN_HPP_NOEXCEPT
58863       : PhysicalDeviceSeparateDepthStencilLayoutsFeatures(
58864           *reinterpret_cast<PhysicalDeviceSeparateDepthStencilLayoutsFeatures const *>( &rhs ) )
58865     {}
58866 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
58867 
58868     PhysicalDeviceSeparateDepthStencilLayoutsFeatures &
58869       operator=( PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58870 
58871     PhysicalDeviceSeparateDepthStencilLayoutsFeatures &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures58872       operator=( VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
58873     {
58874       *this =
58875         *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures const *>( &rhs );
58876       return *this;
58877     }
58878 
58879 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
58880     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSeparateDepthStencilLayoutsFeatures &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures58881                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
58882     {
58883       pNext = pNext_;
58884       return *this;
58885     }
58886 
58887     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSeparateDepthStencilLayoutsFeatures &
setSeparateDepthStencilLayoutsVULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures58888       setSeparateDepthStencilLayouts( VULKAN_HPP_NAMESPACE::Bool32 separateDepthStencilLayouts_ ) VULKAN_HPP_NOEXCEPT
58889     {
58890       separateDepthStencilLayouts = separateDepthStencilLayouts_;
58891       return *this;
58892     }
58893 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
58894 
operator VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures58895     explicit operator VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures const &() const VULKAN_HPP_NOEXCEPT
58896     {
58897       return *reinterpret_cast<const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures *>( this );
58898     }
58899 
operator VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures58900     explicit operator VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures &() VULKAN_HPP_NOEXCEPT
58901     {
58902       return *reinterpret_cast<VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures *>( this );
58903     }
58904 
58905 #if 14 <= VULKAN_HPP_CPP_VERSION
58906     auto
58907 #else
58908     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
58909 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures58910       reflect() const VULKAN_HPP_NOEXCEPT
58911     {
58912       return std::tie( sType, pNext, separateDepthStencilLayouts );
58913     }
58914 
58915 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
58916     auto operator<=>( PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & ) const = default;
58917 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures58918     bool operator==( PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
58919     {
58920       return this->reflect() == rhs.reflect();
58921     }
58922 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures58923     bool operator!=( PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
58924     {
58925       return this->reflect() != rhs.reflect();
58926     }
58927 #endif
58928 
58929   public:
58930     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSeparateDepthStencilLayoutsFeatures;
58931     void *                              pNext = {};
58932     VULKAN_HPP_NAMESPACE::Bool32        separateDepthStencilLayouts = {};
58933   };
58934   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures ) ==
58935                               sizeof( VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures ),
58936                             "struct and wrapper have different size!" );
58937   VULKAN_HPP_STATIC_ASSERT(
58938     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures>::value,
58939     "struct wrapper is not a standard layout!" );
58940   VULKAN_HPP_STATIC_ASSERT(
58941     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures>::value,
58942     "PhysicalDeviceSeparateDepthStencilLayoutsFeatures is not nothrow_move_constructible!" );
58943 
58944   template <>
58945   struct CppType<StructureType, StructureType::ePhysicalDeviceSeparateDepthStencilLayoutsFeatures>
58946   {
58947     using Type = PhysicalDeviceSeparateDepthStencilLayoutsFeatures;
58948   };
58949   using PhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = PhysicalDeviceSeparateDepthStencilLayoutsFeatures;
58950 
58951   struct PhysicalDeviceShaderAtomicFloat2FeaturesEXT
58952   {
58953     using NativeType = VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT;
58954 
58955     static const bool                                  allowDuplicate = false;
58956     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
58957       StructureType::ePhysicalDeviceShaderAtomicFloat2FeaturesEXT;
58958 
58959 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderAtomicFloat2FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT58960     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicFloat2FeaturesEXT(
58961       VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat16Atomics_      = {},
58962       VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat16AtomicAdd_    = {},
58963       VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat16AtomicMinMax_ = {},
58964       VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32AtomicMinMax_ = {},
58965       VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64AtomicMinMax_ = {},
58966       VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat16Atomics_      = {},
58967       VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat16AtomicAdd_    = {},
58968       VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat16AtomicMinMax_ = {},
58969       VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32AtomicMinMax_ = {},
58970       VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64AtomicMinMax_ = {},
58971       VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32AtomicMinMax_  = {},
58972       VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32AtomicMinMax_  = {} ) VULKAN_HPP_NOEXCEPT
58973       : shaderBufferFloat16Atomics( shaderBufferFloat16Atomics_ )
58974       , shaderBufferFloat16AtomicAdd( shaderBufferFloat16AtomicAdd_ )
58975       , shaderBufferFloat16AtomicMinMax( shaderBufferFloat16AtomicMinMax_ )
58976       , shaderBufferFloat32AtomicMinMax( shaderBufferFloat32AtomicMinMax_ )
58977       , shaderBufferFloat64AtomicMinMax( shaderBufferFloat64AtomicMinMax_ )
58978       , shaderSharedFloat16Atomics( shaderSharedFloat16Atomics_ )
58979       , shaderSharedFloat16AtomicAdd( shaderSharedFloat16AtomicAdd_ )
58980       , shaderSharedFloat16AtomicMinMax( shaderSharedFloat16AtomicMinMax_ )
58981       , shaderSharedFloat32AtomicMinMax( shaderSharedFloat32AtomicMinMax_ )
58982       , shaderSharedFloat64AtomicMinMax( shaderSharedFloat64AtomicMinMax_ )
58983       , shaderImageFloat32AtomicMinMax( shaderImageFloat32AtomicMinMax_ )
58984       , sparseImageFloat32AtomicMinMax( sparseImageFloat32AtomicMinMax_ )
58985     {}
58986 
58987     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicFloat2FeaturesEXT(
58988       PhysicalDeviceShaderAtomicFloat2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58989 
PhysicalDeviceShaderAtomicFloat2FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT58990     PhysicalDeviceShaderAtomicFloat2FeaturesEXT( VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT const & rhs )
58991       VULKAN_HPP_NOEXCEPT
58992       : PhysicalDeviceShaderAtomicFloat2FeaturesEXT(
58993           *reinterpret_cast<PhysicalDeviceShaderAtomicFloat2FeaturesEXT const *>( &rhs ) )
58994     {}
58995 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
58996 
58997     PhysicalDeviceShaderAtomicFloat2FeaturesEXT &
58998       operator=( PhysicalDeviceShaderAtomicFloat2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58999 
59000     PhysicalDeviceShaderAtomicFloat2FeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT59001       operator=( VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
59002     {
59003       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT const *>( &rhs );
59004       return *this;
59005     }
59006 
59007 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT59008     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
59009     {
59010       pNext = pNext_;
59011       return *this;
59012     }
59013 
59014     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT &
setShaderBufferFloat16AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT59015       setShaderBufferFloat16Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat16Atomics_ ) VULKAN_HPP_NOEXCEPT
59016     {
59017       shaderBufferFloat16Atomics = shaderBufferFloat16Atomics_;
59018       return *this;
59019     }
59020 
59021     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT &
setShaderBufferFloat16AtomicAddVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT59022       setShaderBufferFloat16AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat16AtomicAdd_ ) VULKAN_HPP_NOEXCEPT
59023     {
59024       shaderBufferFloat16AtomicAdd = shaderBufferFloat16AtomicAdd_;
59025       return *this;
59026     }
59027 
setShaderBufferFloat16AtomicMinMaxVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT59028     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT & setShaderBufferFloat16AtomicMinMax(
59029       VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat16AtomicMinMax_ ) VULKAN_HPP_NOEXCEPT
59030     {
59031       shaderBufferFloat16AtomicMinMax = shaderBufferFloat16AtomicMinMax_;
59032       return *this;
59033     }
59034 
setShaderBufferFloat32AtomicMinMaxVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT59035     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT & setShaderBufferFloat32AtomicMinMax(
59036       VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32AtomicMinMax_ ) VULKAN_HPP_NOEXCEPT
59037     {
59038       shaderBufferFloat32AtomicMinMax = shaderBufferFloat32AtomicMinMax_;
59039       return *this;
59040     }
59041 
setShaderBufferFloat64AtomicMinMaxVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT59042     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT & setShaderBufferFloat64AtomicMinMax(
59043       VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64AtomicMinMax_ ) VULKAN_HPP_NOEXCEPT
59044     {
59045       shaderBufferFloat64AtomicMinMax = shaderBufferFloat64AtomicMinMax_;
59046       return *this;
59047     }
59048 
59049     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT &
setShaderSharedFloat16AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT59050       setShaderSharedFloat16Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat16Atomics_ ) VULKAN_HPP_NOEXCEPT
59051     {
59052       shaderSharedFloat16Atomics = shaderSharedFloat16Atomics_;
59053       return *this;
59054     }
59055 
59056     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT &
setShaderSharedFloat16AtomicAddVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT59057       setShaderSharedFloat16AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat16AtomicAdd_ ) VULKAN_HPP_NOEXCEPT
59058     {
59059       shaderSharedFloat16AtomicAdd = shaderSharedFloat16AtomicAdd_;
59060       return *this;
59061     }
59062 
setShaderSharedFloat16AtomicMinMaxVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT59063     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT & setShaderSharedFloat16AtomicMinMax(
59064       VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat16AtomicMinMax_ ) VULKAN_HPP_NOEXCEPT
59065     {
59066       shaderSharedFloat16AtomicMinMax = shaderSharedFloat16AtomicMinMax_;
59067       return *this;
59068     }
59069 
setShaderSharedFloat32AtomicMinMaxVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT59070     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT & setShaderSharedFloat32AtomicMinMax(
59071       VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32AtomicMinMax_ ) VULKAN_HPP_NOEXCEPT
59072     {
59073       shaderSharedFloat32AtomicMinMax = shaderSharedFloat32AtomicMinMax_;
59074       return *this;
59075     }
59076 
setShaderSharedFloat64AtomicMinMaxVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT59077     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT & setShaderSharedFloat64AtomicMinMax(
59078       VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64AtomicMinMax_ ) VULKAN_HPP_NOEXCEPT
59079     {
59080       shaderSharedFloat64AtomicMinMax = shaderSharedFloat64AtomicMinMax_;
59081       return *this;
59082     }
59083 
setShaderImageFloat32AtomicMinMaxVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT59084     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT & setShaderImageFloat32AtomicMinMax(
59085       VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32AtomicMinMax_ ) VULKAN_HPP_NOEXCEPT
59086     {
59087       shaderImageFloat32AtomicMinMax = shaderImageFloat32AtomicMinMax_;
59088       return *this;
59089     }
59090 
setSparseImageFloat32AtomicMinMaxVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT59091     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT & setSparseImageFloat32AtomicMinMax(
59092       VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32AtomicMinMax_ ) VULKAN_HPP_NOEXCEPT
59093     {
59094       sparseImageFloat32AtomicMinMax = sparseImageFloat32AtomicMinMax_;
59095       return *this;
59096     }
59097 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
59098 
operator VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT59099     explicit operator VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
59100     {
59101       return *reinterpret_cast<const VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT *>( this );
59102     }
59103 
operator VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT59104     explicit operator VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT &() VULKAN_HPP_NOEXCEPT
59105     {
59106       return *reinterpret_cast<VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT *>( this );
59107     }
59108 
59109 #if 14 <= VULKAN_HPP_CPP_VERSION
59110     auto
59111 #else
59112     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
59113                void * const &,
59114                VULKAN_HPP_NAMESPACE::Bool32 const &,
59115                VULKAN_HPP_NAMESPACE::Bool32 const &,
59116                VULKAN_HPP_NAMESPACE::Bool32 const &,
59117                VULKAN_HPP_NAMESPACE::Bool32 const &,
59118                VULKAN_HPP_NAMESPACE::Bool32 const &,
59119                VULKAN_HPP_NAMESPACE::Bool32 const &,
59120                VULKAN_HPP_NAMESPACE::Bool32 const &,
59121                VULKAN_HPP_NAMESPACE::Bool32 const &,
59122                VULKAN_HPP_NAMESPACE::Bool32 const &,
59123                VULKAN_HPP_NAMESPACE::Bool32 const &,
59124                VULKAN_HPP_NAMESPACE::Bool32 const &,
59125                VULKAN_HPP_NAMESPACE::Bool32 const &>
59126 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT59127       reflect() const VULKAN_HPP_NOEXCEPT
59128     {
59129       return std::tie( sType,
59130                        pNext,
59131                        shaderBufferFloat16Atomics,
59132                        shaderBufferFloat16AtomicAdd,
59133                        shaderBufferFloat16AtomicMinMax,
59134                        shaderBufferFloat32AtomicMinMax,
59135                        shaderBufferFloat64AtomicMinMax,
59136                        shaderSharedFloat16Atomics,
59137                        shaderSharedFloat16AtomicAdd,
59138                        shaderSharedFloat16AtomicMinMax,
59139                        shaderSharedFloat32AtomicMinMax,
59140                        shaderSharedFloat64AtomicMinMax,
59141                        shaderImageFloat32AtomicMinMax,
59142                        sparseImageFloat32AtomicMinMax );
59143     }
59144 
59145 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
59146     auto operator<=>( PhysicalDeviceShaderAtomicFloat2FeaturesEXT const & ) const = default;
59147 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT59148     bool operator==( PhysicalDeviceShaderAtomicFloat2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
59149     {
59150       return this->reflect() == rhs.reflect();
59151     }
59152 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT59153     bool operator!=( PhysicalDeviceShaderAtomicFloat2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
59154     {
59155       return this->reflect() != rhs.reflect();
59156     }
59157 #endif
59158 
59159   public:
59160     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderAtomicFloat2FeaturesEXT;
59161     void *                              pNext = {};
59162     VULKAN_HPP_NAMESPACE::Bool32        shaderBufferFloat16Atomics      = {};
59163     VULKAN_HPP_NAMESPACE::Bool32        shaderBufferFloat16AtomicAdd    = {};
59164     VULKAN_HPP_NAMESPACE::Bool32        shaderBufferFloat16AtomicMinMax = {};
59165     VULKAN_HPP_NAMESPACE::Bool32        shaderBufferFloat32AtomicMinMax = {};
59166     VULKAN_HPP_NAMESPACE::Bool32        shaderBufferFloat64AtomicMinMax = {};
59167     VULKAN_HPP_NAMESPACE::Bool32        shaderSharedFloat16Atomics      = {};
59168     VULKAN_HPP_NAMESPACE::Bool32        shaderSharedFloat16AtomicAdd    = {};
59169     VULKAN_HPP_NAMESPACE::Bool32        shaderSharedFloat16AtomicMinMax = {};
59170     VULKAN_HPP_NAMESPACE::Bool32        shaderSharedFloat32AtomicMinMax = {};
59171     VULKAN_HPP_NAMESPACE::Bool32        shaderSharedFloat64AtomicMinMax = {};
59172     VULKAN_HPP_NAMESPACE::Bool32        shaderImageFloat32AtomicMinMax  = {};
59173     VULKAN_HPP_NAMESPACE::Bool32        sparseImageFloat32AtomicMinMax  = {};
59174   };
59175   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT ) ==
59176                               sizeof( VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT ),
59177                             "struct and wrapper have different size!" );
59178   VULKAN_HPP_STATIC_ASSERT(
59179     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT>::value,
59180     "struct wrapper is not a standard layout!" );
59181   VULKAN_HPP_STATIC_ASSERT(
59182     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT>::value,
59183     "PhysicalDeviceShaderAtomicFloat2FeaturesEXT is not nothrow_move_constructible!" );
59184 
59185   template <>
59186   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderAtomicFloat2FeaturesEXT>
59187   {
59188     using Type = PhysicalDeviceShaderAtomicFloat2FeaturesEXT;
59189   };
59190 
59191   struct PhysicalDeviceShaderAtomicFloatFeaturesEXT
59192   {
59193     using NativeType = VkPhysicalDeviceShaderAtomicFloatFeaturesEXT;
59194 
59195     static const bool                                  allowDuplicate = false;
59196     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
59197       StructureType::ePhysicalDeviceShaderAtomicFloatFeaturesEXT;
59198 
59199 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderAtomicFloatFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT59200     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicFloatFeaturesEXT(
59201       VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32Atomics_   = {},
59202       VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32AtomicAdd_ = {},
59203       VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64Atomics_   = {},
59204       VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64AtomicAdd_ = {},
59205       VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32Atomics_   = {},
59206       VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32AtomicAdd_ = {},
59207       VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64Atomics_   = {},
59208       VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64AtomicAdd_ = {},
59209       VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32Atomics_    = {},
59210       VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32AtomicAdd_  = {},
59211       VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32Atomics_    = {},
59212       VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32AtomicAdd_  = {} ) VULKAN_HPP_NOEXCEPT
59213       : shaderBufferFloat32Atomics( shaderBufferFloat32Atomics_ )
59214       , shaderBufferFloat32AtomicAdd( shaderBufferFloat32AtomicAdd_ )
59215       , shaderBufferFloat64Atomics( shaderBufferFloat64Atomics_ )
59216       , shaderBufferFloat64AtomicAdd( shaderBufferFloat64AtomicAdd_ )
59217       , shaderSharedFloat32Atomics( shaderSharedFloat32Atomics_ )
59218       , shaderSharedFloat32AtomicAdd( shaderSharedFloat32AtomicAdd_ )
59219       , shaderSharedFloat64Atomics( shaderSharedFloat64Atomics_ )
59220       , shaderSharedFloat64AtomicAdd( shaderSharedFloat64AtomicAdd_ )
59221       , shaderImageFloat32Atomics( shaderImageFloat32Atomics_ )
59222       , shaderImageFloat32AtomicAdd( shaderImageFloat32AtomicAdd_ )
59223       , sparseImageFloat32Atomics( sparseImageFloat32Atomics_ )
59224       , sparseImageFloat32AtomicAdd( sparseImageFloat32AtomicAdd_ )
59225     {}
59226 
59227     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicFloatFeaturesEXT(
59228       PhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59229 
PhysicalDeviceShaderAtomicFloatFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT59230     PhysicalDeviceShaderAtomicFloatFeaturesEXT( VkPhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs )
59231       VULKAN_HPP_NOEXCEPT
59232       : PhysicalDeviceShaderAtomicFloatFeaturesEXT(
59233           *reinterpret_cast<PhysicalDeviceShaderAtomicFloatFeaturesEXT const *>( &rhs ) )
59234     {}
59235 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
59236 
59237     PhysicalDeviceShaderAtomicFloatFeaturesEXT &
59238       operator=( PhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59239 
59240     PhysicalDeviceShaderAtomicFloatFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT59241       operator=( VkPhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
59242     {
59243       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT const *>( &rhs );
59244       return *this;
59245     }
59246 
59247 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT59248     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
59249     {
59250       pNext = pNext_;
59251       return *this;
59252     }
59253 
59254     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT &
setShaderBufferFloat32AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT59255       setShaderBufferFloat32Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32Atomics_ ) VULKAN_HPP_NOEXCEPT
59256     {
59257       shaderBufferFloat32Atomics = shaderBufferFloat32Atomics_;
59258       return *this;
59259     }
59260 
59261     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT &
setShaderBufferFloat32AtomicAddVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT59262       setShaderBufferFloat32AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32AtomicAdd_ ) VULKAN_HPP_NOEXCEPT
59263     {
59264       shaderBufferFloat32AtomicAdd = shaderBufferFloat32AtomicAdd_;
59265       return *this;
59266     }
59267 
59268     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT &
setShaderBufferFloat64AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT59269       setShaderBufferFloat64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64Atomics_ ) VULKAN_HPP_NOEXCEPT
59270     {
59271       shaderBufferFloat64Atomics = shaderBufferFloat64Atomics_;
59272       return *this;
59273     }
59274 
59275     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT &
setShaderBufferFloat64AtomicAddVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT59276       setShaderBufferFloat64AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64AtomicAdd_ ) VULKAN_HPP_NOEXCEPT
59277     {
59278       shaderBufferFloat64AtomicAdd = shaderBufferFloat64AtomicAdd_;
59279       return *this;
59280     }
59281 
59282     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT &
setShaderSharedFloat32AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT59283       setShaderSharedFloat32Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32Atomics_ ) VULKAN_HPP_NOEXCEPT
59284     {
59285       shaderSharedFloat32Atomics = shaderSharedFloat32Atomics_;
59286       return *this;
59287     }
59288 
59289     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT &
setShaderSharedFloat32AtomicAddVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT59290       setShaderSharedFloat32AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32AtomicAdd_ ) VULKAN_HPP_NOEXCEPT
59291     {
59292       shaderSharedFloat32AtomicAdd = shaderSharedFloat32AtomicAdd_;
59293       return *this;
59294     }
59295 
59296     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT &
setShaderSharedFloat64AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT59297       setShaderSharedFloat64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64Atomics_ ) VULKAN_HPP_NOEXCEPT
59298     {
59299       shaderSharedFloat64Atomics = shaderSharedFloat64Atomics_;
59300       return *this;
59301     }
59302 
59303     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT &
setShaderSharedFloat64AtomicAddVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT59304       setShaderSharedFloat64AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64AtomicAdd_ ) VULKAN_HPP_NOEXCEPT
59305     {
59306       shaderSharedFloat64AtomicAdd = shaderSharedFloat64AtomicAdd_;
59307       return *this;
59308     }
59309 
59310     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT &
setShaderImageFloat32AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT59311       setShaderImageFloat32Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32Atomics_ ) VULKAN_HPP_NOEXCEPT
59312     {
59313       shaderImageFloat32Atomics = shaderImageFloat32Atomics_;
59314       return *this;
59315     }
59316 
59317     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT &
setShaderImageFloat32AtomicAddVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT59318       setShaderImageFloat32AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32AtomicAdd_ ) VULKAN_HPP_NOEXCEPT
59319     {
59320       shaderImageFloat32AtomicAdd = shaderImageFloat32AtomicAdd_;
59321       return *this;
59322     }
59323 
59324     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT &
setSparseImageFloat32AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT59325       setSparseImageFloat32Atomics( VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32Atomics_ ) VULKAN_HPP_NOEXCEPT
59326     {
59327       sparseImageFloat32Atomics = sparseImageFloat32Atomics_;
59328       return *this;
59329     }
59330 
59331     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT &
setSparseImageFloat32AtomicAddVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT59332       setSparseImageFloat32AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32AtomicAdd_ ) VULKAN_HPP_NOEXCEPT
59333     {
59334       sparseImageFloat32AtomicAdd = sparseImageFloat32AtomicAdd_;
59335       return *this;
59336     }
59337 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
59338 
operator VkPhysicalDeviceShaderAtomicFloatFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT59339     explicit operator VkPhysicalDeviceShaderAtomicFloatFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
59340     {
59341       return *reinterpret_cast<const VkPhysicalDeviceShaderAtomicFloatFeaturesEXT *>( this );
59342     }
59343 
operator VkPhysicalDeviceShaderAtomicFloatFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT59344     explicit operator VkPhysicalDeviceShaderAtomicFloatFeaturesEXT &() VULKAN_HPP_NOEXCEPT
59345     {
59346       return *reinterpret_cast<VkPhysicalDeviceShaderAtomicFloatFeaturesEXT *>( this );
59347     }
59348 
59349 #if 14 <= VULKAN_HPP_CPP_VERSION
59350     auto
59351 #else
59352     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
59353                void * const &,
59354                VULKAN_HPP_NAMESPACE::Bool32 const &,
59355                VULKAN_HPP_NAMESPACE::Bool32 const &,
59356                VULKAN_HPP_NAMESPACE::Bool32 const &,
59357                VULKAN_HPP_NAMESPACE::Bool32 const &,
59358                VULKAN_HPP_NAMESPACE::Bool32 const &,
59359                VULKAN_HPP_NAMESPACE::Bool32 const &,
59360                VULKAN_HPP_NAMESPACE::Bool32 const &,
59361                VULKAN_HPP_NAMESPACE::Bool32 const &,
59362                VULKAN_HPP_NAMESPACE::Bool32 const &,
59363                VULKAN_HPP_NAMESPACE::Bool32 const &,
59364                VULKAN_HPP_NAMESPACE::Bool32 const &,
59365                VULKAN_HPP_NAMESPACE::Bool32 const &>
59366 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT59367       reflect() const VULKAN_HPP_NOEXCEPT
59368     {
59369       return std::tie( sType,
59370                        pNext,
59371                        shaderBufferFloat32Atomics,
59372                        shaderBufferFloat32AtomicAdd,
59373                        shaderBufferFloat64Atomics,
59374                        shaderBufferFloat64AtomicAdd,
59375                        shaderSharedFloat32Atomics,
59376                        shaderSharedFloat32AtomicAdd,
59377                        shaderSharedFloat64Atomics,
59378                        shaderSharedFloat64AtomicAdd,
59379                        shaderImageFloat32Atomics,
59380                        shaderImageFloat32AtomicAdd,
59381                        sparseImageFloat32Atomics,
59382                        sparseImageFloat32AtomicAdd );
59383     }
59384 
59385 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
59386     auto operator<=>( PhysicalDeviceShaderAtomicFloatFeaturesEXT const & ) const = default;
59387 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT59388     bool operator==( PhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
59389     {
59390       return this->reflect() == rhs.reflect();
59391     }
59392 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT59393     bool operator!=( PhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
59394     {
59395       return this->reflect() != rhs.reflect();
59396     }
59397 #endif
59398 
59399   public:
59400     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderAtomicFloatFeaturesEXT;
59401     void *                              pNext = {};
59402     VULKAN_HPP_NAMESPACE::Bool32        shaderBufferFloat32Atomics   = {};
59403     VULKAN_HPP_NAMESPACE::Bool32        shaderBufferFloat32AtomicAdd = {};
59404     VULKAN_HPP_NAMESPACE::Bool32        shaderBufferFloat64Atomics   = {};
59405     VULKAN_HPP_NAMESPACE::Bool32        shaderBufferFloat64AtomicAdd = {};
59406     VULKAN_HPP_NAMESPACE::Bool32        shaderSharedFloat32Atomics   = {};
59407     VULKAN_HPP_NAMESPACE::Bool32        shaderSharedFloat32AtomicAdd = {};
59408     VULKAN_HPP_NAMESPACE::Bool32        shaderSharedFloat64Atomics   = {};
59409     VULKAN_HPP_NAMESPACE::Bool32        shaderSharedFloat64AtomicAdd = {};
59410     VULKAN_HPP_NAMESPACE::Bool32        shaderImageFloat32Atomics    = {};
59411     VULKAN_HPP_NAMESPACE::Bool32        shaderImageFloat32AtomicAdd  = {};
59412     VULKAN_HPP_NAMESPACE::Bool32        sparseImageFloat32Atomics    = {};
59413     VULKAN_HPP_NAMESPACE::Bool32        sparseImageFloat32AtomicAdd  = {};
59414   };
59415   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT ) ==
59416                               sizeof( VkPhysicalDeviceShaderAtomicFloatFeaturesEXT ),
59417                             "struct and wrapper have different size!" );
59418   VULKAN_HPP_STATIC_ASSERT(
59419     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT>::value,
59420     "struct wrapper is not a standard layout!" );
59421   VULKAN_HPP_STATIC_ASSERT(
59422     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT>::value,
59423     "PhysicalDeviceShaderAtomicFloatFeaturesEXT is not nothrow_move_constructible!" );
59424 
59425   template <>
59426   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderAtomicFloatFeaturesEXT>
59427   {
59428     using Type = PhysicalDeviceShaderAtomicFloatFeaturesEXT;
59429   };
59430 
59431   struct PhysicalDeviceShaderAtomicInt64Features
59432   {
59433     using NativeType = VkPhysicalDeviceShaderAtomicInt64Features;
59434 
59435     static const bool                                  allowDuplicate = false;
59436     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
59437       StructureType::ePhysicalDeviceShaderAtomicInt64Features;
59438 
59439 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderAtomicInt64FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features59440     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicInt64Features(
59441       VULKAN_HPP_NAMESPACE::Bool32 shaderBufferInt64Atomics_ = {},
59442       VULKAN_HPP_NAMESPACE::Bool32 shaderSharedInt64Atomics_ = {} ) VULKAN_HPP_NOEXCEPT
59443       : shaderBufferInt64Atomics( shaderBufferInt64Atomics_ )
59444       , shaderSharedInt64Atomics( shaderSharedInt64Atomics_ )
59445     {}
59446 
59447     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicInt64Features( PhysicalDeviceShaderAtomicInt64Features const & rhs )
59448       VULKAN_HPP_NOEXCEPT = default;
59449 
PhysicalDeviceShaderAtomicInt64FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features59450     PhysicalDeviceShaderAtomicInt64Features( VkPhysicalDeviceShaderAtomicInt64Features const & rhs ) VULKAN_HPP_NOEXCEPT
59451       : PhysicalDeviceShaderAtomicInt64Features(
59452           *reinterpret_cast<PhysicalDeviceShaderAtomicInt64Features const *>( &rhs ) )
59453     {}
59454 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
59455 
59456     PhysicalDeviceShaderAtomicInt64Features &
59457       operator=( PhysicalDeviceShaderAtomicInt64Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59458 
59459     PhysicalDeviceShaderAtomicInt64Features &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features59460       operator=( VkPhysicalDeviceShaderAtomicInt64Features const & rhs ) VULKAN_HPP_NOEXCEPT
59461     {
59462       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features const *>( &rhs );
59463       return *this;
59464     }
59465 
59466 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features59467     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicInt64Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
59468     {
59469       pNext = pNext_;
59470       return *this;
59471     }
59472 
59473     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicInt64Features &
setShaderBufferInt64AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features59474       setShaderBufferInt64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferInt64Atomics_ ) VULKAN_HPP_NOEXCEPT
59475     {
59476       shaderBufferInt64Atomics = shaderBufferInt64Atomics_;
59477       return *this;
59478     }
59479 
59480     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicInt64Features &
setShaderSharedInt64AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features59481       setShaderSharedInt64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedInt64Atomics_ ) VULKAN_HPP_NOEXCEPT
59482     {
59483       shaderSharedInt64Atomics = shaderSharedInt64Atomics_;
59484       return *this;
59485     }
59486 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
59487 
operator VkPhysicalDeviceShaderAtomicInt64Features const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features59488     explicit operator VkPhysicalDeviceShaderAtomicInt64Features const &() const VULKAN_HPP_NOEXCEPT
59489     {
59490       return *reinterpret_cast<const VkPhysicalDeviceShaderAtomicInt64Features *>( this );
59491     }
59492 
operator VkPhysicalDeviceShaderAtomicInt64Features&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features59493     explicit operator VkPhysicalDeviceShaderAtomicInt64Features &() VULKAN_HPP_NOEXCEPT
59494     {
59495       return *reinterpret_cast<VkPhysicalDeviceShaderAtomicInt64Features *>( this );
59496     }
59497 
59498 #if 14 <= VULKAN_HPP_CPP_VERSION
59499     auto
59500 #else
59501     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
59502                void * const &,
59503                VULKAN_HPP_NAMESPACE::Bool32 const &,
59504                VULKAN_HPP_NAMESPACE::Bool32 const &>
59505 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features59506       reflect() const VULKAN_HPP_NOEXCEPT
59507     {
59508       return std::tie( sType, pNext, shaderBufferInt64Atomics, shaderSharedInt64Atomics );
59509     }
59510 
59511 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
59512     auto operator<=>( PhysicalDeviceShaderAtomicInt64Features const & ) const = default;
59513 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features59514     bool operator==( PhysicalDeviceShaderAtomicInt64Features const & rhs ) const VULKAN_HPP_NOEXCEPT
59515     {
59516       return this->reflect() == rhs.reflect();
59517     }
59518 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features59519     bool operator!=( PhysicalDeviceShaderAtomicInt64Features const & rhs ) const VULKAN_HPP_NOEXCEPT
59520     {
59521       return this->reflect() != rhs.reflect();
59522     }
59523 #endif
59524 
59525   public:
59526     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderAtomicInt64Features;
59527     void *                              pNext = {};
59528     VULKAN_HPP_NAMESPACE::Bool32        shaderBufferInt64Atomics = {};
59529     VULKAN_HPP_NAMESPACE::Bool32        shaderSharedInt64Atomics = {};
59530   };
59531   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features ) ==
59532                               sizeof( VkPhysicalDeviceShaderAtomicInt64Features ),
59533                             "struct and wrapper have different size!" );
59534   VULKAN_HPP_STATIC_ASSERT(
59535     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features>::value,
59536     "struct wrapper is not a standard layout!" );
59537   VULKAN_HPP_STATIC_ASSERT(
59538     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features>::value,
59539     "PhysicalDeviceShaderAtomicInt64Features is not nothrow_move_constructible!" );
59540 
59541   template <>
59542   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderAtomicInt64Features>
59543   {
59544     using Type = PhysicalDeviceShaderAtomicInt64Features;
59545   };
59546   using PhysicalDeviceShaderAtomicInt64FeaturesKHR = PhysicalDeviceShaderAtomicInt64Features;
59547 
59548   struct PhysicalDeviceShaderClockFeaturesKHR
59549   {
59550     using NativeType = VkPhysicalDeviceShaderClockFeaturesKHR;
59551 
59552     static const bool                                  allowDuplicate = false;
59553     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
59554       StructureType::ePhysicalDeviceShaderClockFeaturesKHR;
59555 
59556 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
59557     VULKAN_HPP_CONSTEXPR
PhysicalDeviceShaderClockFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR59558       PhysicalDeviceShaderClockFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupClock_ = {},
59559                                             VULKAN_HPP_NAMESPACE::Bool32 shaderDeviceClock_   = {} ) VULKAN_HPP_NOEXCEPT
59560       : shaderSubgroupClock( shaderSubgroupClock_ )
59561       , shaderDeviceClock( shaderDeviceClock_ )
59562     {}
59563 
59564     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderClockFeaturesKHR( PhysicalDeviceShaderClockFeaturesKHR const & rhs )
59565       VULKAN_HPP_NOEXCEPT = default;
59566 
PhysicalDeviceShaderClockFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR59567     PhysicalDeviceShaderClockFeaturesKHR( VkPhysicalDeviceShaderClockFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
59568       : PhysicalDeviceShaderClockFeaturesKHR( *reinterpret_cast<PhysicalDeviceShaderClockFeaturesKHR const *>( &rhs ) )
59569     {}
59570 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
59571 
59572     PhysicalDeviceShaderClockFeaturesKHR &
59573       operator=( PhysicalDeviceShaderClockFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59574 
59575     PhysicalDeviceShaderClockFeaturesKHR &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR59576       operator=( VkPhysicalDeviceShaderClockFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
59577     {
59578       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR const *>( &rhs );
59579       return *this;
59580     }
59581 
59582 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR59583     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderClockFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
59584     {
59585       pNext = pNext_;
59586       return *this;
59587     }
59588 
59589     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderClockFeaturesKHR &
setShaderSubgroupClockVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR59590       setShaderSubgroupClock( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupClock_ ) VULKAN_HPP_NOEXCEPT
59591     {
59592       shaderSubgroupClock = shaderSubgroupClock_;
59593       return *this;
59594     }
59595 
59596     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderClockFeaturesKHR &
setShaderDeviceClockVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR59597                             setShaderDeviceClock( VULKAN_HPP_NAMESPACE::Bool32 shaderDeviceClock_ ) VULKAN_HPP_NOEXCEPT
59598     {
59599       shaderDeviceClock = shaderDeviceClock_;
59600       return *this;
59601     }
59602 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
59603 
operator VkPhysicalDeviceShaderClockFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR59604     explicit operator VkPhysicalDeviceShaderClockFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
59605     {
59606       return *reinterpret_cast<const VkPhysicalDeviceShaderClockFeaturesKHR *>( this );
59607     }
59608 
operator VkPhysicalDeviceShaderClockFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR59609     explicit operator VkPhysicalDeviceShaderClockFeaturesKHR &() VULKAN_HPP_NOEXCEPT
59610     {
59611       return *reinterpret_cast<VkPhysicalDeviceShaderClockFeaturesKHR *>( this );
59612     }
59613 
59614 #if 14 <= VULKAN_HPP_CPP_VERSION
59615     auto
59616 #else
59617     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
59618                void * const &,
59619                VULKAN_HPP_NAMESPACE::Bool32 const &,
59620                VULKAN_HPP_NAMESPACE::Bool32 const &>
59621 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR59622       reflect() const VULKAN_HPP_NOEXCEPT
59623     {
59624       return std::tie( sType, pNext, shaderSubgroupClock, shaderDeviceClock );
59625     }
59626 
59627 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
59628     auto operator<=>( PhysicalDeviceShaderClockFeaturesKHR const & ) const = default;
59629 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR59630     bool operator==( PhysicalDeviceShaderClockFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
59631     {
59632       return this->reflect() == rhs.reflect();
59633     }
59634 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR59635     bool operator!=( PhysicalDeviceShaderClockFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
59636     {
59637       return this->reflect() != rhs.reflect();
59638     }
59639 #endif
59640 
59641   public:
59642     VULKAN_HPP_NAMESPACE::StructureType sType               = StructureType::ePhysicalDeviceShaderClockFeaturesKHR;
59643     void *                              pNext               = {};
59644     VULKAN_HPP_NAMESPACE::Bool32        shaderSubgroupClock = {};
59645     VULKAN_HPP_NAMESPACE::Bool32        shaderDeviceClock   = {};
59646   };
59647   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR ) ==
59648                               sizeof( VkPhysicalDeviceShaderClockFeaturesKHR ),
59649                             "struct and wrapper have different size!" );
59650   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR>::value,
59651                             "struct wrapper is not a standard layout!" );
59652   VULKAN_HPP_STATIC_ASSERT(
59653     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR>::value,
59654     "PhysicalDeviceShaderClockFeaturesKHR is not nothrow_move_constructible!" );
59655 
59656   template <>
59657   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderClockFeaturesKHR>
59658   {
59659     using Type = PhysicalDeviceShaderClockFeaturesKHR;
59660   };
59661 
59662   struct PhysicalDeviceShaderCoreProperties2AMD
59663   {
59664     using NativeType = VkPhysicalDeviceShaderCoreProperties2AMD;
59665 
59666     static const bool                                  allowDuplicate = false;
59667     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
59668       StructureType::ePhysicalDeviceShaderCoreProperties2AMD;
59669 
59670 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderCoreProperties2AMDVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreProperties2AMD59671     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderCoreProperties2AMD(
59672       VULKAN_HPP_NAMESPACE::ShaderCorePropertiesFlagsAMD shaderCoreFeatures_     = {},
59673       uint32_t                                           activeComputeUnitCount_ = {} ) VULKAN_HPP_NOEXCEPT
59674       : shaderCoreFeatures( shaderCoreFeatures_ )
59675       , activeComputeUnitCount( activeComputeUnitCount_ )
59676     {}
59677 
59678     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderCoreProperties2AMD( PhysicalDeviceShaderCoreProperties2AMD const & rhs )
59679       VULKAN_HPP_NOEXCEPT = default;
59680 
PhysicalDeviceShaderCoreProperties2AMDVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreProperties2AMD59681     PhysicalDeviceShaderCoreProperties2AMD( VkPhysicalDeviceShaderCoreProperties2AMD const & rhs ) VULKAN_HPP_NOEXCEPT
59682       : PhysicalDeviceShaderCoreProperties2AMD(
59683           *reinterpret_cast<PhysicalDeviceShaderCoreProperties2AMD const *>( &rhs ) )
59684     {}
59685 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
59686 
59687     PhysicalDeviceShaderCoreProperties2AMD &
59688       operator=( PhysicalDeviceShaderCoreProperties2AMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59689 
59690     PhysicalDeviceShaderCoreProperties2AMD &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreProperties2AMD59691       operator=( VkPhysicalDeviceShaderCoreProperties2AMD const & rhs ) VULKAN_HPP_NOEXCEPT
59692     {
59693       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreProperties2AMD const *>( &rhs );
59694       return *this;
59695     }
59696 
operator VkPhysicalDeviceShaderCoreProperties2AMD const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreProperties2AMD59697     explicit operator VkPhysicalDeviceShaderCoreProperties2AMD const &() const VULKAN_HPP_NOEXCEPT
59698     {
59699       return *reinterpret_cast<const VkPhysicalDeviceShaderCoreProperties2AMD *>( this );
59700     }
59701 
operator VkPhysicalDeviceShaderCoreProperties2AMD&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreProperties2AMD59702     explicit operator VkPhysicalDeviceShaderCoreProperties2AMD &() VULKAN_HPP_NOEXCEPT
59703     {
59704       return *reinterpret_cast<VkPhysicalDeviceShaderCoreProperties2AMD *>( this );
59705     }
59706 
59707 #if 14 <= VULKAN_HPP_CPP_VERSION
59708     auto
59709 #else
59710     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
59711                void * const &,
59712                VULKAN_HPP_NAMESPACE::ShaderCorePropertiesFlagsAMD const &,
59713                uint32_t const &>
59714 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreProperties2AMD59715       reflect() const VULKAN_HPP_NOEXCEPT
59716     {
59717       return std::tie( sType, pNext, shaderCoreFeatures, activeComputeUnitCount );
59718     }
59719 
59720 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
59721     auto operator<=>( PhysicalDeviceShaderCoreProperties2AMD const & ) const = default;
59722 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreProperties2AMD59723     bool operator==( PhysicalDeviceShaderCoreProperties2AMD const & rhs ) const VULKAN_HPP_NOEXCEPT
59724     {
59725       return this->reflect() == rhs.reflect();
59726     }
59727 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreProperties2AMD59728     bool operator!=( PhysicalDeviceShaderCoreProperties2AMD const & rhs ) const VULKAN_HPP_NOEXCEPT
59729     {
59730       return this->reflect() != rhs.reflect();
59731     }
59732 #endif
59733 
59734   public:
59735     VULKAN_HPP_NAMESPACE::StructureType                sType = StructureType::ePhysicalDeviceShaderCoreProperties2AMD;
59736     void *                                             pNext = {};
59737     VULKAN_HPP_NAMESPACE::ShaderCorePropertiesFlagsAMD shaderCoreFeatures     = {};
59738     uint32_t                                           activeComputeUnitCount = {};
59739   };
59740   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreProperties2AMD ) ==
59741                               sizeof( VkPhysicalDeviceShaderCoreProperties2AMD ),
59742                             "struct and wrapper have different size!" );
59743   VULKAN_HPP_STATIC_ASSERT(
59744     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreProperties2AMD>::value,
59745     "struct wrapper is not a standard layout!" );
59746   VULKAN_HPP_STATIC_ASSERT(
59747     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreProperties2AMD>::value,
59748     "PhysicalDeviceShaderCoreProperties2AMD is not nothrow_move_constructible!" );
59749 
59750   template <>
59751   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderCoreProperties2AMD>
59752   {
59753     using Type = PhysicalDeviceShaderCoreProperties2AMD;
59754   };
59755 
59756   struct PhysicalDeviceShaderCorePropertiesAMD
59757   {
59758     using NativeType = VkPhysicalDeviceShaderCorePropertiesAMD;
59759 
59760     static const bool                                  allowDuplicate = false;
59761     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
59762       StructureType::ePhysicalDeviceShaderCorePropertiesAMD;
59763 
59764 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
59765     VULKAN_HPP_CONSTEXPR
PhysicalDeviceShaderCorePropertiesAMDVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesAMD59766       PhysicalDeviceShaderCorePropertiesAMD( uint32_t shaderEngineCount_          = {},
59767                                              uint32_t shaderArraysPerEngineCount_ = {},
59768                                              uint32_t computeUnitsPerShaderArray_ = {},
59769                                              uint32_t simdPerComputeUnit_         = {},
59770                                              uint32_t wavefrontsPerSimd_          = {},
59771                                              uint32_t wavefrontSize_              = {},
59772                                              uint32_t sgprsPerSimd_               = {},
59773                                              uint32_t minSgprAllocation_          = {},
59774                                              uint32_t maxSgprAllocation_          = {},
59775                                              uint32_t sgprAllocationGranularity_  = {},
59776                                              uint32_t vgprsPerSimd_               = {},
59777                                              uint32_t minVgprAllocation_          = {},
59778                                              uint32_t maxVgprAllocation_          = {},
59779                                              uint32_t vgprAllocationGranularity_  = {} ) VULKAN_HPP_NOEXCEPT
59780       : shaderEngineCount( shaderEngineCount_ )
59781       , shaderArraysPerEngineCount( shaderArraysPerEngineCount_ )
59782       , computeUnitsPerShaderArray( computeUnitsPerShaderArray_ )
59783       , simdPerComputeUnit( simdPerComputeUnit_ )
59784       , wavefrontsPerSimd( wavefrontsPerSimd_ )
59785       , wavefrontSize( wavefrontSize_ )
59786       , sgprsPerSimd( sgprsPerSimd_ )
59787       , minSgprAllocation( minSgprAllocation_ )
59788       , maxSgprAllocation( maxSgprAllocation_ )
59789       , sgprAllocationGranularity( sgprAllocationGranularity_ )
59790       , vgprsPerSimd( vgprsPerSimd_ )
59791       , minVgprAllocation( minVgprAllocation_ )
59792       , maxVgprAllocation( maxVgprAllocation_ )
59793       , vgprAllocationGranularity( vgprAllocationGranularity_ )
59794     {}
59795 
59796     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderCorePropertiesAMD( PhysicalDeviceShaderCorePropertiesAMD const & rhs )
59797       VULKAN_HPP_NOEXCEPT = default;
59798 
PhysicalDeviceShaderCorePropertiesAMDVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesAMD59799     PhysicalDeviceShaderCorePropertiesAMD( VkPhysicalDeviceShaderCorePropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
59800       : PhysicalDeviceShaderCorePropertiesAMD(
59801           *reinterpret_cast<PhysicalDeviceShaderCorePropertiesAMD const *>( &rhs ) )
59802     {}
59803 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
59804 
59805     PhysicalDeviceShaderCorePropertiesAMD &
59806       operator=( PhysicalDeviceShaderCorePropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59807 
59808     PhysicalDeviceShaderCorePropertiesAMD &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesAMD59809       operator=( VkPhysicalDeviceShaderCorePropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
59810     {
59811       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesAMD const *>( &rhs );
59812       return *this;
59813     }
59814 
operator VkPhysicalDeviceShaderCorePropertiesAMD const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesAMD59815     explicit operator VkPhysicalDeviceShaderCorePropertiesAMD const &() const VULKAN_HPP_NOEXCEPT
59816     {
59817       return *reinterpret_cast<const VkPhysicalDeviceShaderCorePropertiesAMD *>( this );
59818     }
59819 
operator VkPhysicalDeviceShaderCorePropertiesAMD&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesAMD59820     explicit operator VkPhysicalDeviceShaderCorePropertiesAMD &() VULKAN_HPP_NOEXCEPT
59821     {
59822       return *reinterpret_cast<VkPhysicalDeviceShaderCorePropertiesAMD *>( this );
59823     }
59824 
59825 #if 14 <= VULKAN_HPP_CPP_VERSION
59826     auto
59827 #else
59828     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
59829                void * const &,
59830                uint32_t const &,
59831                uint32_t const &,
59832                uint32_t const &,
59833                uint32_t const &,
59834                uint32_t const &,
59835                uint32_t const &,
59836                uint32_t const &,
59837                uint32_t const &,
59838                uint32_t const &,
59839                uint32_t const &,
59840                uint32_t const &,
59841                uint32_t const &,
59842                uint32_t const &,
59843                uint32_t const &>
59844 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesAMD59845       reflect() const VULKAN_HPP_NOEXCEPT
59846     {
59847       return std::tie( sType,
59848                        pNext,
59849                        shaderEngineCount,
59850                        shaderArraysPerEngineCount,
59851                        computeUnitsPerShaderArray,
59852                        simdPerComputeUnit,
59853                        wavefrontsPerSimd,
59854                        wavefrontSize,
59855                        sgprsPerSimd,
59856                        minSgprAllocation,
59857                        maxSgprAllocation,
59858                        sgprAllocationGranularity,
59859                        vgprsPerSimd,
59860                        minVgprAllocation,
59861                        maxVgprAllocation,
59862                        vgprAllocationGranularity );
59863     }
59864 
59865 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
59866     auto operator<=>( PhysicalDeviceShaderCorePropertiesAMD const & ) const = default;
59867 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesAMD59868     bool operator==( PhysicalDeviceShaderCorePropertiesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
59869     {
59870       return this->reflect() == rhs.reflect();
59871     }
59872 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesAMD59873     bool operator!=( PhysicalDeviceShaderCorePropertiesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
59874     {
59875       return this->reflect() != rhs.reflect();
59876     }
59877 #endif
59878 
59879   public:
59880     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::ePhysicalDeviceShaderCorePropertiesAMD;
59881     void *                              pNext             = {};
59882     uint32_t                            shaderEngineCount = {};
59883     uint32_t                            shaderArraysPerEngineCount = {};
59884     uint32_t                            computeUnitsPerShaderArray = {};
59885     uint32_t                            simdPerComputeUnit         = {};
59886     uint32_t                            wavefrontsPerSimd          = {};
59887     uint32_t                            wavefrontSize              = {};
59888     uint32_t                            sgprsPerSimd               = {};
59889     uint32_t                            minSgprAllocation          = {};
59890     uint32_t                            maxSgprAllocation          = {};
59891     uint32_t                            sgprAllocationGranularity  = {};
59892     uint32_t                            vgprsPerSimd               = {};
59893     uint32_t                            minVgprAllocation          = {};
59894     uint32_t                            maxVgprAllocation          = {};
59895     uint32_t                            vgprAllocationGranularity  = {};
59896   };
59897   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesAMD ) ==
59898                               sizeof( VkPhysicalDeviceShaderCorePropertiesAMD ),
59899                             "struct and wrapper have different size!" );
59900   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesAMD>::value,
59901                             "struct wrapper is not a standard layout!" );
59902   VULKAN_HPP_STATIC_ASSERT(
59903     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesAMD>::value,
59904     "PhysicalDeviceShaderCorePropertiesAMD is not nothrow_move_constructible!" );
59905 
59906   template <>
59907   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderCorePropertiesAMD>
59908   {
59909     using Type = PhysicalDeviceShaderCorePropertiesAMD;
59910   };
59911 
59912   struct PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT
59913   {
59914     using NativeType = VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT;
59915 
59916     static const bool                                  allowDuplicate = false;
59917     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
59918       StructureType::ePhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT;
59919 
59920 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT59921     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT(
59922       VULKAN_HPP_NAMESPACE::Bool32 shaderDemoteToHelperInvocation_ = {} ) VULKAN_HPP_NOEXCEPT
59923       : shaderDemoteToHelperInvocation( shaderDemoteToHelperInvocation_ )
59924     {}
59925 
59926     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT(
59927       PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59928 
PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT59929     PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT(
59930       VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
59931       : PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT(
59932           *reinterpret_cast<PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const *>( &rhs ) )
59933     {}
59934 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
59935 
59936     PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT &
59937       operator=( PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59938 
59939     PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT59940       operator=( VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
59941     {
59942       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const *>(
59943         &rhs );
59944       return *this;
59945     }
59946 
59947 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
59948     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT59949                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
59950     {
59951       pNext = pNext_;
59952       return *this;
59953     }
59954 
setShaderDemoteToHelperInvocationVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT59955     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT & setShaderDemoteToHelperInvocation(
59956       VULKAN_HPP_NAMESPACE::Bool32 shaderDemoteToHelperInvocation_ ) VULKAN_HPP_NOEXCEPT
59957     {
59958       shaderDemoteToHelperInvocation = shaderDemoteToHelperInvocation_;
59959       return *this;
59960     }
59961 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
59962 
operator VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT59963     explicit operator VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
59964     {
59965       return *reinterpret_cast<const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT *>( this );
59966     }
59967 
operator VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT59968     explicit operator VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT &() VULKAN_HPP_NOEXCEPT
59969     {
59970       return *reinterpret_cast<VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT *>( this );
59971     }
59972 
59973 #if 14 <= VULKAN_HPP_CPP_VERSION
59974     auto
59975 #else
59976     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
59977 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT59978       reflect() const VULKAN_HPP_NOEXCEPT
59979     {
59980       return std::tie( sType, pNext, shaderDemoteToHelperInvocation );
59981     }
59982 
59983 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
59984     auto operator<=>( PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const & ) const = default;
59985 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT59986     bool operator==( PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
59987     {
59988       return this->reflect() == rhs.reflect();
59989     }
59990 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT59991     bool operator!=( PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
59992     {
59993       return this->reflect() != rhs.reflect();
59994     }
59995 #endif
59996 
59997   public:
59998     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT;
59999     void *                              pNext = {};
60000     VULKAN_HPP_NAMESPACE::Bool32        shaderDemoteToHelperInvocation = {};
60001   };
60002   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT ) ==
60003                               sizeof( VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT ),
60004                             "struct and wrapper have different size!" );
60005   VULKAN_HPP_STATIC_ASSERT(
60006     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT>::value,
60007     "struct wrapper is not a standard layout!" );
60008   VULKAN_HPP_STATIC_ASSERT(
60009     std::is_nothrow_move_constructible<
60010       VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT>::value,
60011     "PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT is not nothrow_move_constructible!" );
60012 
60013   template <>
60014   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT>
60015   {
60016     using Type = PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT;
60017   };
60018 
60019   struct PhysicalDeviceShaderDrawParametersFeatures
60020   {
60021     using NativeType = VkPhysicalDeviceShaderDrawParametersFeatures;
60022 
60023     static const bool                                  allowDuplicate = false;
60024     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
60025       StructureType::ePhysicalDeviceShaderDrawParametersFeatures;
60026 
60027 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderDrawParametersFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures60028     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderDrawParametersFeatures(
60029       VULKAN_HPP_NAMESPACE::Bool32 shaderDrawParameters_ = {} ) VULKAN_HPP_NOEXCEPT
60030       : shaderDrawParameters( shaderDrawParameters_ )
60031     {}
60032 
60033     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderDrawParametersFeatures(
60034       PhysicalDeviceShaderDrawParametersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60035 
PhysicalDeviceShaderDrawParametersFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures60036     PhysicalDeviceShaderDrawParametersFeatures( VkPhysicalDeviceShaderDrawParametersFeatures const & rhs )
60037       VULKAN_HPP_NOEXCEPT
60038       : PhysicalDeviceShaderDrawParametersFeatures(
60039           *reinterpret_cast<PhysicalDeviceShaderDrawParametersFeatures const *>( &rhs ) )
60040     {}
60041 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
60042 
60043     PhysicalDeviceShaderDrawParametersFeatures &
60044       operator=( PhysicalDeviceShaderDrawParametersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60045 
60046     PhysicalDeviceShaderDrawParametersFeatures &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures60047       operator=( VkPhysicalDeviceShaderDrawParametersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
60048     {
60049       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures const *>( &rhs );
60050       return *this;
60051     }
60052 
60053 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures60054     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderDrawParametersFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
60055     {
60056       pNext = pNext_;
60057       return *this;
60058     }
60059 
60060     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderDrawParametersFeatures &
setShaderDrawParametersVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures60061       setShaderDrawParameters( VULKAN_HPP_NAMESPACE::Bool32 shaderDrawParameters_ ) VULKAN_HPP_NOEXCEPT
60062     {
60063       shaderDrawParameters = shaderDrawParameters_;
60064       return *this;
60065     }
60066 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
60067 
operator VkPhysicalDeviceShaderDrawParametersFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures60068     explicit operator VkPhysicalDeviceShaderDrawParametersFeatures const &() const VULKAN_HPP_NOEXCEPT
60069     {
60070       return *reinterpret_cast<const VkPhysicalDeviceShaderDrawParametersFeatures *>( this );
60071     }
60072 
operator VkPhysicalDeviceShaderDrawParametersFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures60073     explicit operator VkPhysicalDeviceShaderDrawParametersFeatures &() VULKAN_HPP_NOEXCEPT
60074     {
60075       return *reinterpret_cast<VkPhysicalDeviceShaderDrawParametersFeatures *>( this );
60076     }
60077 
60078 #if 14 <= VULKAN_HPP_CPP_VERSION
60079     auto
60080 #else
60081     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
60082 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures60083       reflect() const VULKAN_HPP_NOEXCEPT
60084     {
60085       return std::tie( sType, pNext, shaderDrawParameters );
60086     }
60087 
60088 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
60089     auto operator<=>( PhysicalDeviceShaderDrawParametersFeatures const & ) const = default;
60090 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures60091     bool operator==( PhysicalDeviceShaderDrawParametersFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
60092     {
60093       return this->reflect() == rhs.reflect();
60094     }
60095 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures60096     bool operator!=( PhysicalDeviceShaderDrawParametersFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
60097     {
60098       return this->reflect() != rhs.reflect();
60099     }
60100 #endif
60101 
60102   public:
60103     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderDrawParametersFeatures;
60104     void *                              pNext = {};
60105     VULKAN_HPP_NAMESPACE::Bool32        shaderDrawParameters = {};
60106   };
60107   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures ) ==
60108                               sizeof( VkPhysicalDeviceShaderDrawParametersFeatures ),
60109                             "struct and wrapper have different size!" );
60110   VULKAN_HPP_STATIC_ASSERT(
60111     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures>::value,
60112     "struct wrapper is not a standard layout!" );
60113   VULKAN_HPP_STATIC_ASSERT(
60114     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures>::value,
60115     "PhysicalDeviceShaderDrawParametersFeatures is not nothrow_move_constructible!" );
60116 
60117   template <>
60118   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderDrawParametersFeatures>
60119   {
60120     using Type = PhysicalDeviceShaderDrawParametersFeatures;
60121   };
60122   using PhysicalDeviceShaderDrawParameterFeatures = PhysicalDeviceShaderDrawParametersFeatures;
60123 
60124   struct PhysicalDeviceShaderFloat16Int8Features
60125   {
60126     using NativeType = VkPhysicalDeviceShaderFloat16Int8Features;
60127 
60128     static const bool                                  allowDuplicate = false;
60129     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
60130       StructureType::ePhysicalDeviceShaderFloat16Int8Features;
60131 
60132 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
60133     VULKAN_HPP_CONSTEXPR
PhysicalDeviceShaderFloat16Int8FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features60134       PhysicalDeviceShaderFloat16Int8Features( VULKAN_HPP_NAMESPACE::Bool32 shaderFloat16_ = {},
60135                                                VULKAN_HPP_NAMESPACE::Bool32 shaderInt8_    = {} ) VULKAN_HPP_NOEXCEPT
60136       : shaderFloat16( shaderFloat16_ )
60137       , shaderInt8( shaderInt8_ )
60138     {}
60139 
60140     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderFloat16Int8Features( PhysicalDeviceShaderFloat16Int8Features const & rhs )
60141       VULKAN_HPP_NOEXCEPT = default;
60142 
PhysicalDeviceShaderFloat16Int8FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features60143     PhysicalDeviceShaderFloat16Int8Features( VkPhysicalDeviceShaderFloat16Int8Features const & rhs ) VULKAN_HPP_NOEXCEPT
60144       : PhysicalDeviceShaderFloat16Int8Features(
60145           *reinterpret_cast<PhysicalDeviceShaderFloat16Int8Features const *>( &rhs ) )
60146     {}
60147 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
60148 
60149     PhysicalDeviceShaderFloat16Int8Features &
60150       operator=( PhysicalDeviceShaderFloat16Int8Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60151 
60152     PhysicalDeviceShaderFloat16Int8Features &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features60153       operator=( VkPhysicalDeviceShaderFloat16Int8Features const & rhs ) VULKAN_HPP_NOEXCEPT
60154     {
60155       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features const *>( &rhs );
60156       return *this;
60157     }
60158 
60159 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features60160     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFloat16Int8Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
60161     {
60162       pNext = pNext_;
60163       return *this;
60164     }
60165 
60166     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFloat16Int8Features &
setShaderFloat16VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features60167                             setShaderFloat16( VULKAN_HPP_NAMESPACE::Bool32 shaderFloat16_ ) VULKAN_HPP_NOEXCEPT
60168     {
60169       shaderFloat16 = shaderFloat16_;
60170       return *this;
60171     }
60172 
60173     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFloat16Int8Features &
setShaderInt8VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features60174                             setShaderInt8( VULKAN_HPP_NAMESPACE::Bool32 shaderInt8_ ) VULKAN_HPP_NOEXCEPT
60175     {
60176       shaderInt8 = shaderInt8_;
60177       return *this;
60178     }
60179 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
60180 
operator VkPhysicalDeviceShaderFloat16Int8Features const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features60181     explicit operator VkPhysicalDeviceShaderFloat16Int8Features const &() const VULKAN_HPP_NOEXCEPT
60182     {
60183       return *reinterpret_cast<const VkPhysicalDeviceShaderFloat16Int8Features *>( this );
60184     }
60185 
operator VkPhysicalDeviceShaderFloat16Int8Features&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features60186     explicit operator VkPhysicalDeviceShaderFloat16Int8Features &() VULKAN_HPP_NOEXCEPT
60187     {
60188       return *reinterpret_cast<VkPhysicalDeviceShaderFloat16Int8Features *>( this );
60189     }
60190 
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 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features60199       reflect() const VULKAN_HPP_NOEXCEPT
60200     {
60201       return std::tie( sType, pNext, shaderFloat16, shaderInt8 );
60202     }
60203 
60204 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
60205     auto operator<=>( PhysicalDeviceShaderFloat16Int8Features const & ) const = default;
60206 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features60207     bool operator==( PhysicalDeviceShaderFloat16Int8Features const & rhs ) const VULKAN_HPP_NOEXCEPT
60208     {
60209       return this->reflect() == rhs.reflect();
60210     }
60211 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features60212     bool operator!=( PhysicalDeviceShaderFloat16Int8Features const & rhs ) const VULKAN_HPP_NOEXCEPT
60213     {
60214       return this->reflect() != rhs.reflect();
60215     }
60216 #endif
60217 
60218   public:
60219     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::ePhysicalDeviceShaderFloat16Int8Features;
60220     void *                              pNext         = {};
60221     VULKAN_HPP_NAMESPACE::Bool32        shaderFloat16 = {};
60222     VULKAN_HPP_NAMESPACE::Bool32        shaderInt8    = {};
60223   };
60224   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features ) ==
60225                               sizeof( VkPhysicalDeviceShaderFloat16Int8Features ),
60226                             "struct and wrapper have different size!" );
60227   VULKAN_HPP_STATIC_ASSERT(
60228     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features>::value,
60229     "struct wrapper is not a standard layout!" );
60230   VULKAN_HPP_STATIC_ASSERT(
60231     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features>::value,
60232     "PhysicalDeviceShaderFloat16Int8Features is not nothrow_move_constructible!" );
60233 
60234   template <>
60235   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderFloat16Int8Features>
60236   {
60237     using Type = PhysicalDeviceShaderFloat16Int8Features;
60238   };
60239   using PhysicalDeviceFloat16Int8FeaturesKHR       = PhysicalDeviceShaderFloat16Int8Features;
60240   using PhysicalDeviceShaderFloat16Int8FeaturesKHR = PhysicalDeviceShaderFloat16Int8Features;
60241 
60242   struct PhysicalDeviceShaderImageAtomicInt64FeaturesEXT
60243   {
60244     using NativeType = VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT;
60245 
60246     static const bool                                  allowDuplicate = false;
60247     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
60248       StructureType::ePhysicalDeviceShaderImageAtomicInt64FeaturesEXT;
60249 
60250 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderImageAtomicInt64FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT60251     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderImageAtomicInt64FeaturesEXT(
60252       VULKAN_HPP_NAMESPACE::Bool32 shaderImageInt64Atomics_ = {},
60253       VULKAN_HPP_NAMESPACE::Bool32 sparseImageInt64Atomics_ = {} ) VULKAN_HPP_NOEXCEPT
60254       : shaderImageInt64Atomics( shaderImageInt64Atomics_ )
60255       , sparseImageInt64Atomics( sparseImageInt64Atomics_ )
60256     {}
60257 
60258     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderImageAtomicInt64FeaturesEXT(
60259       PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60260 
PhysicalDeviceShaderImageAtomicInt64FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT60261     PhysicalDeviceShaderImageAtomicInt64FeaturesEXT( VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs )
60262       VULKAN_HPP_NOEXCEPT
60263       : PhysicalDeviceShaderImageAtomicInt64FeaturesEXT(
60264           *reinterpret_cast<PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const *>( &rhs ) )
60265     {}
60266 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
60267 
60268     PhysicalDeviceShaderImageAtomicInt64FeaturesEXT &
60269       operator=( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60270 
60271     PhysicalDeviceShaderImageAtomicInt64FeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT60272       operator=( VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
60273     {
60274       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const *>( &rhs );
60275       return *this;
60276     }
60277 
60278 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
60279     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderImageAtomicInt64FeaturesEXT &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT60280                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
60281     {
60282       pNext = pNext_;
60283       return *this;
60284     }
60285 
60286     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderImageAtomicInt64FeaturesEXT &
setShaderImageInt64AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT60287       setShaderImageInt64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderImageInt64Atomics_ ) VULKAN_HPP_NOEXCEPT
60288     {
60289       shaderImageInt64Atomics = shaderImageInt64Atomics_;
60290       return *this;
60291     }
60292 
60293     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderImageAtomicInt64FeaturesEXT &
setSparseImageInt64AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT60294       setSparseImageInt64Atomics( VULKAN_HPP_NAMESPACE::Bool32 sparseImageInt64Atomics_ ) VULKAN_HPP_NOEXCEPT
60295     {
60296       sparseImageInt64Atomics = sparseImageInt64Atomics_;
60297       return *this;
60298     }
60299 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
60300 
operator VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT60301     explicit operator VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
60302     {
60303       return *reinterpret_cast<const VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT *>( this );
60304     }
60305 
operator VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT60306     explicit operator VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT &() VULKAN_HPP_NOEXCEPT
60307     {
60308       return *reinterpret_cast<VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT *>( this );
60309     }
60310 
60311 #if 14 <= VULKAN_HPP_CPP_VERSION
60312     auto
60313 #else
60314     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
60315                void * const &,
60316                VULKAN_HPP_NAMESPACE::Bool32 const &,
60317                VULKAN_HPP_NAMESPACE::Bool32 const &>
60318 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT60319       reflect() const VULKAN_HPP_NOEXCEPT
60320     {
60321       return std::tie( sType, pNext, shaderImageInt64Atomics, sparseImageInt64Atomics );
60322     }
60323 
60324 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
60325     auto operator<=>( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & ) const = default;
60326 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT60327     bool operator==( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
60328     {
60329       return this->reflect() == rhs.reflect();
60330     }
60331 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT60332     bool operator!=( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
60333     {
60334       return this->reflect() != rhs.reflect();
60335     }
60336 #endif
60337 
60338   public:
60339     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderImageAtomicInt64FeaturesEXT;
60340     void *                              pNext = {};
60341     VULKAN_HPP_NAMESPACE::Bool32        shaderImageInt64Atomics = {};
60342     VULKAN_HPP_NAMESPACE::Bool32        sparseImageInt64Atomics = {};
60343   };
60344   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT ) ==
60345                               sizeof( VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT ),
60346                             "struct and wrapper have different size!" );
60347   VULKAN_HPP_STATIC_ASSERT(
60348     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT>::value,
60349     "struct wrapper is not a standard layout!" );
60350   VULKAN_HPP_STATIC_ASSERT(
60351     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT>::value,
60352     "PhysicalDeviceShaderImageAtomicInt64FeaturesEXT is not nothrow_move_constructible!" );
60353 
60354   template <>
60355   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderImageAtomicInt64FeaturesEXT>
60356   {
60357     using Type = PhysicalDeviceShaderImageAtomicInt64FeaturesEXT;
60358   };
60359 
60360   struct PhysicalDeviceShaderImageFootprintFeaturesNV
60361   {
60362     using NativeType = VkPhysicalDeviceShaderImageFootprintFeaturesNV;
60363 
60364     static const bool                                  allowDuplicate = false;
60365     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
60366       StructureType::ePhysicalDeviceShaderImageFootprintFeaturesNV;
60367 
60368 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderImageFootprintFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV60369     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderImageFootprintFeaturesNV(
60370       VULKAN_HPP_NAMESPACE::Bool32 imageFootprint_ = {} ) VULKAN_HPP_NOEXCEPT : imageFootprint( imageFootprint_ )
60371     {}
60372 
60373     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderImageFootprintFeaturesNV(
60374       PhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60375 
PhysicalDeviceShaderImageFootprintFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV60376     PhysicalDeviceShaderImageFootprintFeaturesNV( VkPhysicalDeviceShaderImageFootprintFeaturesNV const & rhs )
60377       VULKAN_HPP_NOEXCEPT
60378       : PhysicalDeviceShaderImageFootprintFeaturesNV(
60379           *reinterpret_cast<PhysicalDeviceShaderImageFootprintFeaturesNV const *>( &rhs ) )
60380     {}
60381 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
60382 
60383     PhysicalDeviceShaderImageFootprintFeaturesNV &
60384       operator=( PhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60385 
60386     PhysicalDeviceShaderImageFootprintFeaturesNV &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV60387       operator=( VkPhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
60388     {
60389       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV const *>( &rhs );
60390       return *this;
60391     }
60392 
60393 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV60394     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderImageFootprintFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
60395     {
60396       pNext = pNext_;
60397       return *this;
60398     }
60399 
60400     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderImageFootprintFeaturesNV &
setImageFootprintVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV60401                             setImageFootprint( VULKAN_HPP_NAMESPACE::Bool32 imageFootprint_ ) VULKAN_HPP_NOEXCEPT
60402     {
60403       imageFootprint = imageFootprint_;
60404       return *this;
60405     }
60406 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
60407 
operator VkPhysicalDeviceShaderImageFootprintFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV60408     explicit operator VkPhysicalDeviceShaderImageFootprintFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
60409     {
60410       return *reinterpret_cast<const VkPhysicalDeviceShaderImageFootprintFeaturesNV *>( this );
60411     }
60412 
operator VkPhysicalDeviceShaderImageFootprintFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV60413     explicit operator VkPhysicalDeviceShaderImageFootprintFeaturesNV &() VULKAN_HPP_NOEXCEPT
60414     {
60415       return *reinterpret_cast<VkPhysicalDeviceShaderImageFootprintFeaturesNV *>( this );
60416     }
60417 
60418 #if 14 <= VULKAN_HPP_CPP_VERSION
60419     auto
60420 #else
60421     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
60422 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV60423       reflect() const VULKAN_HPP_NOEXCEPT
60424     {
60425       return std::tie( sType, pNext, imageFootprint );
60426     }
60427 
60428 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
60429     auto operator<=>( PhysicalDeviceShaderImageFootprintFeaturesNV const & ) const = default;
60430 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV60431     bool operator==( PhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
60432     {
60433       return this->reflect() == rhs.reflect();
60434     }
60435 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV60436     bool operator!=( PhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
60437     {
60438       return this->reflect() != rhs.reflect();
60439     }
60440 #endif
60441 
60442   public:
60443     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::ePhysicalDeviceShaderImageFootprintFeaturesNV;
60444     void *                              pNext          = {};
60445     VULKAN_HPP_NAMESPACE::Bool32        imageFootprint = {};
60446   };
60447   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV ) ==
60448                               sizeof( VkPhysicalDeviceShaderImageFootprintFeaturesNV ),
60449                             "struct and wrapper have different size!" );
60450   VULKAN_HPP_STATIC_ASSERT(
60451     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV>::value,
60452     "struct wrapper is not a standard layout!" );
60453   VULKAN_HPP_STATIC_ASSERT(
60454     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV>::value,
60455     "PhysicalDeviceShaderImageFootprintFeaturesNV is not nothrow_move_constructible!" );
60456 
60457   template <>
60458   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderImageFootprintFeaturesNV>
60459   {
60460     using Type = PhysicalDeviceShaderImageFootprintFeaturesNV;
60461   };
60462 
60463   struct PhysicalDeviceShaderIntegerDotProductFeaturesKHR
60464   {
60465     using NativeType = VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR;
60466 
60467     static const bool                                  allowDuplicate = false;
60468     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
60469       StructureType::ePhysicalDeviceShaderIntegerDotProductFeaturesKHR;
60470 
60471 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderIntegerDotProductFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeaturesKHR60472     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderIntegerDotProductFeaturesKHR(
60473       VULKAN_HPP_NAMESPACE::Bool32 shaderIntegerDotProduct_ = {} ) VULKAN_HPP_NOEXCEPT
60474       : shaderIntegerDotProduct( shaderIntegerDotProduct_ )
60475     {}
60476 
60477     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderIntegerDotProductFeaturesKHR(
60478       PhysicalDeviceShaderIntegerDotProductFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60479 
PhysicalDeviceShaderIntegerDotProductFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeaturesKHR60480     PhysicalDeviceShaderIntegerDotProductFeaturesKHR( VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR const & rhs )
60481       VULKAN_HPP_NOEXCEPT
60482       : PhysicalDeviceShaderIntegerDotProductFeaturesKHR(
60483           *reinterpret_cast<PhysicalDeviceShaderIntegerDotProductFeaturesKHR const *>( &rhs ) )
60484     {}
60485 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
60486 
60487     PhysicalDeviceShaderIntegerDotProductFeaturesKHR &
60488       operator=( PhysicalDeviceShaderIntegerDotProductFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60489 
60490     PhysicalDeviceShaderIntegerDotProductFeaturesKHR &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeaturesKHR60491       operator=( VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
60492     {
60493       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeaturesKHR const *>( &rhs );
60494       return *this;
60495     }
60496 
60497 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
60498     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductFeaturesKHR &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeaturesKHR60499                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
60500     {
60501       pNext = pNext_;
60502       return *this;
60503     }
60504 
60505     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductFeaturesKHR &
setShaderIntegerDotProductVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeaturesKHR60506       setShaderIntegerDotProduct( VULKAN_HPP_NAMESPACE::Bool32 shaderIntegerDotProduct_ ) VULKAN_HPP_NOEXCEPT
60507     {
60508       shaderIntegerDotProduct = shaderIntegerDotProduct_;
60509       return *this;
60510     }
60511 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
60512 
operator VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeaturesKHR60513     explicit operator VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
60514     {
60515       return *reinterpret_cast<const VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR *>( this );
60516     }
60517 
operator VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeaturesKHR60518     explicit operator VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR &() VULKAN_HPP_NOEXCEPT
60519     {
60520       return *reinterpret_cast<VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR *>( this );
60521     }
60522 
60523 #if 14 <= VULKAN_HPP_CPP_VERSION
60524     auto
60525 #else
60526     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
60527 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeaturesKHR60528       reflect() const VULKAN_HPP_NOEXCEPT
60529     {
60530       return std::tie( sType, pNext, shaderIntegerDotProduct );
60531     }
60532 
60533 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
60534     auto operator<=>( PhysicalDeviceShaderIntegerDotProductFeaturesKHR const & ) const = default;
60535 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeaturesKHR60536     bool operator==( PhysicalDeviceShaderIntegerDotProductFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
60537     {
60538       return this->reflect() == rhs.reflect();
60539     }
60540 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeaturesKHR60541     bool operator!=( PhysicalDeviceShaderIntegerDotProductFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
60542     {
60543       return this->reflect() != rhs.reflect();
60544     }
60545 #endif
60546 
60547   public:
60548     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderIntegerDotProductFeaturesKHR;
60549     void *                              pNext = {};
60550     VULKAN_HPP_NAMESPACE::Bool32        shaderIntegerDotProduct = {};
60551   };
60552   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeaturesKHR ) ==
60553                               sizeof( VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR ),
60554                             "struct and wrapper have different size!" );
60555   VULKAN_HPP_STATIC_ASSERT(
60556     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeaturesKHR>::value,
60557     "struct wrapper is not a standard layout!" );
60558   VULKAN_HPP_STATIC_ASSERT(
60559     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeaturesKHR>::value,
60560     "PhysicalDeviceShaderIntegerDotProductFeaturesKHR is not nothrow_move_constructible!" );
60561 
60562   template <>
60563   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderIntegerDotProductFeaturesKHR>
60564   {
60565     using Type = PhysicalDeviceShaderIntegerDotProductFeaturesKHR;
60566   };
60567 
60568   struct PhysicalDeviceShaderIntegerDotProductPropertiesKHR
60569   {
60570     using NativeType = VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR;
60571 
60572     static const bool                                  allowDuplicate = false;
60573     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
60574       StructureType::ePhysicalDeviceShaderIntegerDotProductPropertiesKHR;
60575 
60576 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderIntegerDotProductPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR60577     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderIntegerDotProductPropertiesKHR(
60578       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitUnsignedAccelerated_                                      = {},
60579       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitSignedAccelerated_                                        = {},
60580       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitMixedSignednessAccelerated_                               = {},
60581       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedUnsignedAccelerated_                              = {},
60582       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedSignedAccelerated_                                = {},
60583       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedMixedSignednessAccelerated_                       = {},
60584       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitUnsignedAccelerated_                                     = {},
60585       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitSignedAccelerated_                                       = {},
60586       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitMixedSignednessAccelerated_                              = {},
60587       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitUnsignedAccelerated_                                     = {},
60588       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitSignedAccelerated_                                       = {},
60589       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitMixedSignednessAccelerated_                              = {},
60590       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitUnsignedAccelerated_                                     = {},
60591       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitSignedAccelerated_                                       = {},
60592       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitMixedSignednessAccelerated_                              = {},
60593       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitUnsignedAccelerated_                = {},
60594       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitSignedAccelerated_                  = {},
60595       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated_         = {},
60596       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated_        = {},
60597       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated_          = {},
60598       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated_ = {},
60599       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitUnsignedAccelerated_               = {},
60600       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitSignedAccelerated_                 = {},
60601       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated_        = {},
60602       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitUnsignedAccelerated_               = {},
60603       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitSignedAccelerated_                 = {},
60604       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated_        = {},
60605       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitUnsignedAccelerated_               = {},
60606       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitSignedAccelerated_                 = {},
60607       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated_        = {} )
60608       VULKAN_HPP_NOEXCEPT
60609       : integerDotProduct8BitUnsignedAccelerated( integerDotProduct8BitUnsignedAccelerated_ )
60610       , integerDotProduct8BitSignedAccelerated( integerDotProduct8BitSignedAccelerated_ )
60611       , integerDotProduct8BitMixedSignednessAccelerated( integerDotProduct8BitMixedSignednessAccelerated_ )
60612       , integerDotProduct4x8BitPackedUnsignedAccelerated( integerDotProduct4x8BitPackedUnsignedAccelerated_ )
60613       , integerDotProduct4x8BitPackedSignedAccelerated( integerDotProduct4x8BitPackedSignedAccelerated_ )
60614       , integerDotProduct4x8BitPackedMixedSignednessAccelerated(
60615           integerDotProduct4x8BitPackedMixedSignednessAccelerated_ )
60616       , integerDotProduct16BitUnsignedAccelerated( integerDotProduct16BitUnsignedAccelerated_ )
60617       , integerDotProduct16BitSignedAccelerated( integerDotProduct16BitSignedAccelerated_ )
60618       , integerDotProduct16BitMixedSignednessAccelerated( integerDotProduct16BitMixedSignednessAccelerated_ )
60619       , integerDotProduct32BitUnsignedAccelerated( integerDotProduct32BitUnsignedAccelerated_ )
60620       , integerDotProduct32BitSignedAccelerated( integerDotProduct32BitSignedAccelerated_ )
60621       , integerDotProduct32BitMixedSignednessAccelerated( integerDotProduct32BitMixedSignednessAccelerated_ )
60622       , integerDotProduct64BitUnsignedAccelerated( integerDotProduct64BitUnsignedAccelerated_ )
60623       , integerDotProduct64BitSignedAccelerated( integerDotProduct64BitSignedAccelerated_ )
60624       , integerDotProduct64BitMixedSignednessAccelerated( integerDotProduct64BitMixedSignednessAccelerated_ )
60625       , integerDotProductAccumulatingSaturating8BitUnsignedAccelerated(
60626           integerDotProductAccumulatingSaturating8BitUnsignedAccelerated_ )
60627       , integerDotProductAccumulatingSaturating8BitSignedAccelerated(
60628           integerDotProductAccumulatingSaturating8BitSignedAccelerated_ )
60629       , integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated(
60630           integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated_ )
60631       , integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated(
60632           integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated_ )
60633       , integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated(
60634           integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated_ )
60635       , integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated(
60636           integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated_ )
60637       , integerDotProductAccumulatingSaturating16BitUnsignedAccelerated(
60638           integerDotProductAccumulatingSaturating16BitUnsignedAccelerated_ )
60639       , integerDotProductAccumulatingSaturating16BitSignedAccelerated(
60640           integerDotProductAccumulatingSaturating16BitSignedAccelerated_ )
60641       , integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated(
60642           integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated_ )
60643       , integerDotProductAccumulatingSaturating32BitUnsignedAccelerated(
60644           integerDotProductAccumulatingSaturating32BitUnsignedAccelerated_ )
60645       , integerDotProductAccumulatingSaturating32BitSignedAccelerated(
60646           integerDotProductAccumulatingSaturating32BitSignedAccelerated_ )
60647       , integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated(
60648           integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated_ )
60649       , integerDotProductAccumulatingSaturating64BitUnsignedAccelerated(
60650           integerDotProductAccumulatingSaturating64BitUnsignedAccelerated_ )
60651       , integerDotProductAccumulatingSaturating64BitSignedAccelerated(
60652           integerDotProductAccumulatingSaturating64BitSignedAccelerated_ )
60653       , integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated(
60654           integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated_ )
60655     {}
60656 
60657     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderIntegerDotProductPropertiesKHR(
60658       PhysicalDeviceShaderIntegerDotProductPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60659 
PhysicalDeviceShaderIntegerDotProductPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR60660     PhysicalDeviceShaderIntegerDotProductPropertiesKHR(
60661       VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
60662       : PhysicalDeviceShaderIntegerDotProductPropertiesKHR(
60663           *reinterpret_cast<PhysicalDeviceShaderIntegerDotProductPropertiesKHR const *>( &rhs ) )
60664     {}
60665 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
60666 
60667     PhysicalDeviceShaderIntegerDotProductPropertiesKHR &
60668       operator=( PhysicalDeviceShaderIntegerDotProductPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60669 
60670     PhysicalDeviceShaderIntegerDotProductPropertiesKHR &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR60671       operator=( VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
60672     {
60673       *this =
60674         *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR const *>( &rhs );
60675       return *this;
60676     }
60677 
60678 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
60679     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductPropertiesKHR &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR60680                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
60681     {
60682       pNext = pNext_;
60683       return *this;
60684     }
60685 
60686     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductPropertiesKHR &
setIntegerDotProduct8BitUnsignedAcceleratedVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR60687                             setIntegerDotProduct8BitUnsignedAccelerated(
60688                               VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitUnsignedAccelerated_ ) VULKAN_HPP_NOEXCEPT
60689     {
60690       integerDotProduct8BitUnsignedAccelerated = integerDotProduct8BitUnsignedAccelerated_;
60691       return *this;
60692     }
60693 
60694     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductPropertiesKHR &
setIntegerDotProduct8BitSignedAcceleratedVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR60695       setIntegerDotProduct8BitSignedAccelerated( VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitSignedAccelerated_ )
60696         VULKAN_HPP_NOEXCEPT
60697     {
60698       integerDotProduct8BitSignedAccelerated = integerDotProduct8BitSignedAccelerated_;
60699       return *this;
60700     }
60701 
60702     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductPropertiesKHR &
setIntegerDotProduct8BitMixedSignednessAcceleratedVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR60703                             setIntegerDotProduct8BitMixedSignednessAccelerated(
60704                               VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitMixedSignednessAccelerated_ ) VULKAN_HPP_NOEXCEPT
60705     {
60706       integerDotProduct8BitMixedSignednessAccelerated = integerDotProduct8BitMixedSignednessAccelerated_;
60707       return *this;
60708     }
60709 
60710     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductPropertiesKHR &
setIntegerDotProduct4x8BitPackedUnsignedAcceleratedVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR60711                             setIntegerDotProduct4x8BitPackedUnsignedAccelerated(
60712                               VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedUnsignedAccelerated_ ) VULKAN_HPP_NOEXCEPT
60713     {
60714       integerDotProduct4x8BitPackedUnsignedAccelerated = integerDotProduct4x8BitPackedUnsignedAccelerated_;
60715       return *this;
60716     }
60717 
60718     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductPropertiesKHR &
setIntegerDotProduct4x8BitPackedSignedAcceleratedVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR60719                             setIntegerDotProduct4x8BitPackedSignedAccelerated(
60720                               VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedSignedAccelerated_ ) VULKAN_HPP_NOEXCEPT
60721     {
60722       integerDotProduct4x8BitPackedSignedAccelerated = integerDotProduct4x8BitPackedSignedAccelerated_;
60723       return *this;
60724     }
60725 
60726     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductPropertiesKHR &
setIntegerDotProduct4x8BitPackedMixedSignednessAcceleratedVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR60727                             setIntegerDotProduct4x8BitPackedMixedSignednessAccelerated(
60728                               VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedMixedSignednessAccelerated_ ) VULKAN_HPP_NOEXCEPT
60729     {
60730       integerDotProduct4x8BitPackedMixedSignednessAccelerated =
60731         integerDotProduct4x8BitPackedMixedSignednessAccelerated_;
60732       return *this;
60733     }
60734 
60735     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductPropertiesKHR &
setIntegerDotProduct16BitUnsignedAcceleratedVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR60736                             setIntegerDotProduct16BitUnsignedAccelerated(
60737                               VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitUnsignedAccelerated_ ) VULKAN_HPP_NOEXCEPT
60738     {
60739       integerDotProduct16BitUnsignedAccelerated = integerDotProduct16BitUnsignedAccelerated_;
60740       return *this;
60741     }
60742 
60743     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductPropertiesKHR &
setIntegerDotProduct16BitSignedAcceleratedVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR60744                             setIntegerDotProduct16BitSignedAccelerated(
60745                               VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitSignedAccelerated_ ) VULKAN_HPP_NOEXCEPT
60746     {
60747       integerDotProduct16BitSignedAccelerated = integerDotProduct16BitSignedAccelerated_;
60748       return *this;
60749     }
60750 
60751     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductPropertiesKHR &
setIntegerDotProduct16BitMixedSignednessAcceleratedVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR60752                             setIntegerDotProduct16BitMixedSignednessAccelerated(
60753                               VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitMixedSignednessAccelerated_ ) VULKAN_HPP_NOEXCEPT
60754     {
60755       integerDotProduct16BitMixedSignednessAccelerated = integerDotProduct16BitMixedSignednessAccelerated_;
60756       return *this;
60757     }
60758 
60759     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductPropertiesKHR &
setIntegerDotProduct32BitUnsignedAcceleratedVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR60760                             setIntegerDotProduct32BitUnsignedAccelerated(
60761                               VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitUnsignedAccelerated_ ) VULKAN_HPP_NOEXCEPT
60762     {
60763       integerDotProduct32BitUnsignedAccelerated = integerDotProduct32BitUnsignedAccelerated_;
60764       return *this;
60765     }
60766 
60767     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductPropertiesKHR &
setIntegerDotProduct32BitSignedAcceleratedVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR60768                             setIntegerDotProduct32BitSignedAccelerated(
60769                               VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitSignedAccelerated_ ) VULKAN_HPP_NOEXCEPT
60770     {
60771       integerDotProduct32BitSignedAccelerated = integerDotProduct32BitSignedAccelerated_;
60772       return *this;
60773     }
60774 
60775     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductPropertiesKHR &
setIntegerDotProduct32BitMixedSignednessAcceleratedVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR60776                             setIntegerDotProduct32BitMixedSignednessAccelerated(
60777                               VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitMixedSignednessAccelerated_ ) VULKAN_HPP_NOEXCEPT
60778     {
60779       integerDotProduct32BitMixedSignednessAccelerated = integerDotProduct32BitMixedSignednessAccelerated_;
60780       return *this;
60781     }
60782 
60783     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductPropertiesKHR &
setIntegerDotProduct64BitUnsignedAcceleratedVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR60784                             setIntegerDotProduct64BitUnsignedAccelerated(
60785                               VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitUnsignedAccelerated_ ) VULKAN_HPP_NOEXCEPT
60786     {
60787       integerDotProduct64BitUnsignedAccelerated = integerDotProduct64BitUnsignedAccelerated_;
60788       return *this;
60789     }
60790 
60791     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductPropertiesKHR &
setIntegerDotProduct64BitSignedAcceleratedVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR60792                             setIntegerDotProduct64BitSignedAccelerated(
60793                               VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitSignedAccelerated_ ) VULKAN_HPP_NOEXCEPT
60794     {
60795       integerDotProduct64BitSignedAccelerated = integerDotProduct64BitSignedAccelerated_;
60796       return *this;
60797     }
60798 
60799     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductPropertiesKHR &
setIntegerDotProduct64BitMixedSignednessAcceleratedVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR60800                             setIntegerDotProduct64BitMixedSignednessAccelerated(
60801                               VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitMixedSignednessAccelerated_ ) VULKAN_HPP_NOEXCEPT
60802     {
60803       integerDotProduct64BitMixedSignednessAccelerated = integerDotProduct64BitMixedSignednessAccelerated_;
60804       return *this;
60805     }
60806 
60807     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductPropertiesKHR &
setIntegerDotProductAccumulatingSaturating8BitUnsignedAcceleratedVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR60808                             setIntegerDotProductAccumulatingSaturating8BitUnsignedAccelerated(
60809                               VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitUnsignedAccelerated_ )
60810         VULKAN_HPP_NOEXCEPT
60811     {
60812       integerDotProductAccumulatingSaturating8BitUnsignedAccelerated =
60813         integerDotProductAccumulatingSaturating8BitUnsignedAccelerated_;
60814       return *this;
60815     }
60816 
60817     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductPropertiesKHR &
setIntegerDotProductAccumulatingSaturating8BitSignedAcceleratedVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR60818                             setIntegerDotProductAccumulatingSaturating8BitSignedAccelerated(
60819                               VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitSignedAccelerated_ ) VULKAN_HPP_NOEXCEPT
60820     {
60821       integerDotProductAccumulatingSaturating8BitSignedAccelerated =
60822         integerDotProductAccumulatingSaturating8BitSignedAccelerated_;
60823       return *this;
60824     }
60825 
60826     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductPropertiesKHR &
setIntegerDotProductAccumulatingSaturating8BitMixedSignednessAcceleratedVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR60827                             setIntegerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated(
60828                               VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated_ )
60829         VULKAN_HPP_NOEXCEPT
60830     {
60831       integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated =
60832         integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated_;
60833       return *this;
60834     }
60835 
60836     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductPropertiesKHR &
setIntegerDotProductAccumulatingSaturating4x8BitPackedUnsignedAcceleratedVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR60837                             setIntegerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated(
60838                               VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated_ )
60839         VULKAN_HPP_NOEXCEPT
60840     {
60841       integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated =
60842         integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated_;
60843       return *this;
60844     }
60845 
60846     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductPropertiesKHR &
setIntegerDotProductAccumulatingSaturating4x8BitPackedSignedAcceleratedVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR60847                             setIntegerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated(
60848                               VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated_ )
60849         VULKAN_HPP_NOEXCEPT
60850     {
60851       integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated =
60852         integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated_;
60853       return *this;
60854     }
60855 
60856     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductPropertiesKHR &
setIntegerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAcceleratedVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR60857                             setIntegerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated(
60858                               VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated_ )
60859         VULKAN_HPP_NOEXCEPT
60860     {
60861       integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated =
60862         integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated_;
60863       return *this;
60864     }
60865 
60866     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductPropertiesKHR &
setIntegerDotProductAccumulatingSaturating16BitUnsignedAcceleratedVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR60867                             setIntegerDotProductAccumulatingSaturating16BitUnsignedAccelerated(
60868                               VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitUnsignedAccelerated_ )
60869         VULKAN_HPP_NOEXCEPT
60870     {
60871       integerDotProductAccumulatingSaturating16BitUnsignedAccelerated =
60872         integerDotProductAccumulatingSaturating16BitUnsignedAccelerated_;
60873       return *this;
60874     }
60875 
60876     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductPropertiesKHR &
setIntegerDotProductAccumulatingSaturating16BitSignedAcceleratedVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR60877                             setIntegerDotProductAccumulatingSaturating16BitSignedAccelerated(
60878                               VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitSignedAccelerated_ )
60879         VULKAN_HPP_NOEXCEPT
60880     {
60881       integerDotProductAccumulatingSaturating16BitSignedAccelerated =
60882         integerDotProductAccumulatingSaturating16BitSignedAccelerated_;
60883       return *this;
60884     }
60885 
60886     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductPropertiesKHR &
setIntegerDotProductAccumulatingSaturating16BitMixedSignednessAcceleratedVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR60887                             setIntegerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated(
60888                               VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated_ )
60889         VULKAN_HPP_NOEXCEPT
60890     {
60891       integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated =
60892         integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated_;
60893       return *this;
60894     }
60895 
60896     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductPropertiesKHR &
setIntegerDotProductAccumulatingSaturating32BitUnsignedAcceleratedVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR60897                             setIntegerDotProductAccumulatingSaturating32BitUnsignedAccelerated(
60898                               VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitUnsignedAccelerated_ )
60899         VULKAN_HPP_NOEXCEPT
60900     {
60901       integerDotProductAccumulatingSaturating32BitUnsignedAccelerated =
60902         integerDotProductAccumulatingSaturating32BitUnsignedAccelerated_;
60903       return *this;
60904     }
60905 
60906     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductPropertiesKHR &
setIntegerDotProductAccumulatingSaturating32BitSignedAcceleratedVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR60907                             setIntegerDotProductAccumulatingSaturating32BitSignedAccelerated(
60908                               VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitSignedAccelerated_ )
60909         VULKAN_HPP_NOEXCEPT
60910     {
60911       integerDotProductAccumulatingSaturating32BitSignedAccelerated =
60912         integerDotProductAccumulatingSaturating32BitSignedAccelerated_;
60913       return *this;
60914     }
60915 
60916     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductPropertiesKHR &
setIntegerDotProductAccumulatingSaturating32BitMixedSignednessAcceleratedVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR60917                             setIntegerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated(
60918                               VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated_ )
60919         VULKAN_HPP_NOEXCEPT
60920     {
60921       integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated =
60922         integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated_;
60923       return *this;
60924     }
60925 
60926     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductPropertiesKHR &
setIntegerDotProductAccumulatingSaturating64BitUnsignedAcceleratedVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR60927                             setIntegerDotProductAccumulatingSaturating64BitUnsignedAccelerated(
60928                               VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitUnsignedAccelerated_ )
60929         VULKAN_HPP_NOEXCEPT
60930     {
60931       integerDotProductAccumulatingSaturating64BitUnsignedAccelerated =
60932         integerDotProductAccumulatingSaturating64BitUnsignedAccelerated_;
60933       return *this;
60934     }
60935 
60936     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductPropertiesKHR &
setIntegerDotProductAccumulatingSaturating64BitSignedAcceleratedVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR60937                             setIntegerDotProductAccumulatingSaturating64BitSignedAccelerated(
60938                               VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitSignedAccelerated_ )
60939         VULKAN_HPP_NOEXCEPT
60940     {
60941       integerDotProductAccumulatingSaturating64BitSignedAccelerated =
60942         integerDotProductAccumulatingSaturating64BitSignedAccelerated_;
60943       return *this;
60944     }
60945 
60946     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductPropertiesKHR &
setIntegerDotProductAccumulatingSaturating64BitMixedSignednessAcceleratedVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR60947                             setIntegerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated(
60948                               VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated_ )
60949         VULKAN_HPP_NOEXCEPT
60950     {
60951       integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated =
60952         integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated_;
60953       return *this;
60954     }
60955 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
60956 
operator VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR60957     explicit operator VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
60958     {
60959       return *reinterpret_cast<const VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR *>( this );
60960     }
60961 
operator VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR60962     explicit operator VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR &() VULKAN_HPP_NOEXCEPT
60963     {
60964       return *reinterpret_cast<VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR *>( this );
60965     }
60966 
60967 #if 14 <= VULKAN_HPP_CPP_VERSION
60968     auto
60969 #else
60970     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
60971                void * const &,
60972                VULKAN_HPP_NAMESPACE::Bool32 const &,
60973                VULKAN_HPP_NAMESPACE::Bool32 const &,
60974                VULKAN_HPP_NAMESPACE::Bool32 const &,
60975                VULKAN_HPP_NAMESPACE::Bool32 const &,
60976                VULKAN_HPP_NAMESPACE::Bool32 const &,
60977                VULKAN_HPP_NAMESPACE::Bool32 const &,
60978                VULKAN_HPP_NAMESPACE::Bool32 const &,
60979                VULKAN_HPP_NAMESPACE::Bool32 const &,
60980                VULKAN_HPP_NAMESPACE::Bool32 const &,
60981                VULKAN_HPP_NAMESPACE::Bool32 const &,
60982                VULKAN_HPP_NAMESPACE::Bool32 const &,
60983                VULKAN_HPP_NAMESPACE::Bool32 const &,
60984                VULKAN_HPP_NAMESPACE::Bool32 const &,
60985                VULKAN_HPP_NAMESPACE::Bool32 const &,
60986                VULKAN_HPP_NAMESPACE::Bool32 const &,
60987                VULKAN_HPP_NAMESPACE::Bool32 const &,
60988                VULKAN_HPP_NAMESPACE::Bool32 const &,
60989                VULKAN_HPP_NAMESPACE::Bool32 const &,
60990                VULKAN_HPP_NAMESPACE::Bool32 const &,
60991                VULKAN_HPP_NAMESPACE::Bool32 const &,
60992                VULKAN_HPP_NAMESPACE::Bool32 const &,
60993                VULKAN_HPP_NAMESPACE::Bool32 const &,
60994                VULKAN_HPP_NAMESPACE::Bool32 const &,
60995                VULKAN_HPP_NAMESPACE::Bool32 const &,
60996                VULKAN_HPP_NAMESPACE::Bool32 const &,
60997                VULKAN_HPP_NAMESPACE::Bool32 const &,
60998                VULKAN_HPP_NAMESPACE::Bool32 const &,
60999                VULKAN_HPP_NAMESPACE::Bool32 const &,
61000                VULKAN_HPP_NAMESPACE::Bool32 const &,
61001                VULKAN_HPP_NAMESPACE::Bool32 const &>
61002 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR61003       reflect() const VULKAN_HPP_NOEXCEPT
61004     {
61005       return std::tie( sType,
61006                        pNext,
61007                        integerDotProduct8BitUnsignedAccelerated,
61008                        integerDotProduct8BitSignedAccelerated,
61009                        integerDotProduct8BitMixedSignednessAccelerated,
61010                        integerDotProduct4x8BitPackedUnsignedAccelerated,
61011                        integerDotProduct4x8BitPackedSignedAccelerated,
61012                        integerDotProduct4x8BitPackedMixedSignednessAccelerated,
61013                        integerDotProduct16BitUnsignedAccelerated,
61014                        integerDotProduct16BitSignedAccelerated,
61015                        integerDotProduct16BitMixedSignednessAccelerated,
61016                        integerDotProduct32BitUnsignedAccelerated,
61017                        integerDotProduct32BitSignedAccelerated,
61018                        integerDotProduct32BitMixedSignednessAccelerated,
61019                        integerDotProduct64BitUnsignedAccelerated,
61020                        integerDotProduct64BitSignedAccelerated,
61021                        integerDotProduct64BitMixedSignednessAccelerated,
61022                        integerDotProductAccumulatingSaturating8BitUnsignedAccelerated,
61023                        integerDotProductAccumulatingSaturating8BitSignedAccelerated,
61024                        integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated,
61025                        integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated,
61026                        integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated,
61027                        integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated,
61028                        integerDotProductAccumulatingSaturating16BitUnsignedAccelerated,
61029                        integerDotProductAccumulatingSaturating16BitSignedAccelerated,
61030                        integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated,
61031                        integerDotProductAccumulatingSaturating32BitUnsignedAccelerated,
61032                        integerDotProductAccumulatingSaturating32BitSignedAccelerated,
61033                        integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated,
61034                        integerDotProductAccumulatingSaturating64BitUnsignedAccelerated,
61035                        integerDotProductAccumulatingSaturating64BitSignedAccelerated,
61036                        integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated );
61037     }
61038 
61039 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
61040     auto operator<=>( PhysicalDeviceShaderIntegerDotProductPropertiesKHR const & ) const = default;
61041 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR61042     bool operator==( PhysicalDeviceShaderIntegerDotProductPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
61043     {
61044       return this->reflect() == rhs.reflect();
61045     }
61046 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR61047     bool operator!=( PhysicalDeviceShaderIntegerDotProductPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
61048     {
61049       return this->reflect() != rhs.reflect();
61050     }
61051 #endif
61052 
61053   public:
61054     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderIntegerDotProductPropertiesKHR;
61055     void *                              pNext = {};
61056     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct8BitUnsignedAccelerated                               = {};
61057     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct8BitSignedAccelerated                                 = {};
61058     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct8BitMixedSignednessAccelerated                        = {};
61059     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct4x8BitPackedUnsignedAccelerated                       = {};
61060     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct4x8BitPackedSignedAccelerated                         = {};
61061     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct4x8BitPackedMixedSignednessAccelerated                = {};
61062     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct16BitUnsignedAccelerated                              = {};
61063     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct16BitSignedAccelerated                                = {};
61064     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct16BitMixedSignednessAccelerated                       = {};
61065     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct32BitUnsignedAccelerated                              = {};
61066     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct32BitSignedAccelerated                                = {};
61067     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct32BitMixedSignednessAccelerated                       = {};
61068     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct64BitUnsignedAccelerated                              = {};
61069     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct64BitSignedAccelerated                                = {};
61070     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct64BitMixedSignednessAccelerated                       = {};
61071     VULKAN_HPP_NAMESPACE::Bool32        integerDotProductAccumulatingSaturating8BitUnsignedAccelerated         = {};
61072     VULKAN_HPP_NAMESPACE::Bool32        integerDotProductAccumulatingSaturating8BitSignedAccelerated           = {};
61073     VULKAN_HPP_NAMESPACE::Bool32        integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated  = {};
61074     VULKAN_HPP_NAMESPACE::Bool32        integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated = {};
61075     VULKAN_HPP_NAMESPACE::Bool32        integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated   = {};
61076     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated = {};
61077     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitUnsignedAccelerated               = {};
61078     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitSignedAccelerated                 = {};
61079     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated        = {};
61080     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitUnsignedAccelerated               = {};
61081     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitSignedAccelerated                 = {};
61082     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated        = {};
61083     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitUnsignedAccelerated               = {};
61084     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitSignedAccelerated                 = {};
61085     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated        = {};
61086   };
61087   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR ) ==
61088                               sizeof( VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR ),
61089                             "struct and wrapper have different size!" );
61090   VULKAN_HPP_STATIC_ASSERT(
61091     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR>::value,
61092     "struct wrapper is not a standard layout!" );
61093   VULKAN_HPP_STATIC_ASSERT(
61094     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductPropertiesKHR>::value,
61095     "PhysicalDeviceShaderIntegerDotProductPropertiesKHR is not nothrow_move_constructible!" );
61096 
61097   template <>
61098   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderIntegerDotProductPropertiesKHR>
61099   {
61100     using Type = PhysicalDeviceShaderIntegerDotProductPropertiesKHR;
61101   };
61102 
61103   struct PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL
61104   {
61105     using NativeType = VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL;
61106 
61107     static const bool                                  allowDuplicate = false;
61108     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
61109       StructureType::ePhysicalDeviceShaderIntegerFunctions2FeaturesINTEL;
61110 
61111 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderIntegerFunctions2FeaturesINTELVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL61112     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL(
61113       VULKAN_HPP_NAMESPACE::Bool32 shaderIntegerFunctions2_ = {} ) VULKAN_HPP_NOEXCEPT
61114       : shaderIntegerFunctions2( shaderIntegerFunctions2_ )
61115     {}
61116 
61117     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL(
61118       PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61119 
PhysicalDeviceShaderIntegerFunctions2FeaturesINTELVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL61120     PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL(
61121       VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
61122       : PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL(
61123           *reinterpret_cast<PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const *>( &rhs ) )
61124     {}
61125 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
61126 
61127     PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL &
61128       operator=( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61129 
61130     PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL61131       operator=( VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
61132     {
61133       *this =
61134         *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const *>( &rhs );
61135       return *this;
61136     }
61137 
61138 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
61139     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL61140                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
61141     {
61142       pNext = pNext_;
61143       return *this;
61144     }
61145 
61146     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL &
setShaderIntegerFunctions2VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL61147       setShaderIntegerFunctions2( VULKAN_HPP_NAMESPACE::Bool32 shaderIntegerFunctions2_ ) VULKAN_HPP_NOEXCEPT
61148     {
61149       shaderIntegerFunctions2 = shaderIntegerFunctions2_;
61150       return *this;
61151     }
61152 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
61153 
operator VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL61154     explicit operator VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const &() const VULKAN_HPP_NOEXCEPT
61155     {
61156       return *reinterpret_cast<const VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL *>( this );
61157     }
61158 
operator VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL61159     explicit operator VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL &() VULKAN_HPP_NOEXCEPT
61160     {
61161       return *reinterpret_cast<VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL *>( this );
61162     }
61163 
61164 #if 14 <= VULKAN_HPP_CPP_VERSION
61165     auto
61166 #else
61167     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
61168 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL61169       reflect() const VULKAN_HPP_NOEXCEPT
61170     {
61171       return std::tie( sType, pNext, shaderIntegerFunctions2 );
61172     }
61173 
61174 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
61175     auto operator<=>( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & ) const = default;
61176 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL61177     bool operator==( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
61178     {
61179       return this->reflect() == rhs.reflect();
61180     }
61181 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL61182     bool operator!=( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
61183     {
61184       return this->reflect() != rhs.reflect();
61185     }
61186 #endif
61187 
61188   public:
61189     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderIntegerFunctions2FeaturesINTEL;
61190     void *                              pNext = {};
61191     VULKAN_HPP_NAMESPACE::Bool32        shaderIntegerFunctions2 = {};
61192   };
61193   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL ) ==
61194                               sizeof( VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL ),
61195                             "struct and wrapper have different size!" );
61196   VULKAN_HPP_STATIC_ASSERT(
61197     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL>::value,
61198     "struct wrapper is not a standard layout!" );
61199   VULKAN_HPP_STATIC_ASSERT(
61200     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL>::value,
61201     "PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL is not nothrow_move_constructible!" );
61202 
61203   template <>
61204   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderIntegerFunctions2FeaturesINTEL>
61205   {
61206     using Type = PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL;
61207   };
61208 
61209   struct PhysicalDeviceShaderSMBuiltinsFeaturesNV
61210   {
61211     using NativeType = VkPhysicalDeviceShaderSMBuiltinsFeaturesNV;
61212 
61213     static const bool                                  allowDuplicate = false;
61214     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
61215       StructureType::ePhysicalDeviceShaderSmBuiltinsFeaturesNV;
61216 
61217 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderSMBuiltinsFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV61218     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSMBuiltinsFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 shaderSMBuiltins_ = {} )
61219       VULKAN_HPP_NOEXCEPT : shaderSMBuiltins( shaderSMBuiltins_ )
61220     {}
61221 
61222     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSMBuiltinsFeaturesNV(
61223       PhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61224 
PhysicalDeviceShaderSMBuiltinsFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV61225     PhysicalDeviceShaderSMBuiltinsFeaturesNV( VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs )
61226       VULKAN_HPP_NOEXCEPT
61227       : PhysicalDeviceShaderSMBuiltinsFeaturesNV(
61228           *reinterpret_cast<PhysicalDeviceShaderSMBuiltinsFeaturesNV const *>( &rhs ) )
61229     {}
61230 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
61231 
61232     PhysicalDeviceShaderSMBuiltinsFeaturesNV &
61233       operator=( PhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61234 
61235     PhysicalDeviceShaderSMBuiltinsFeaturesNV &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV61236       operator=( VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
61237     {
61238       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV const *>( &rhs );
61239       return *this;
61240     }
61241 
61242 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV61243     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSMBuiltinsFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
61244     {
61245       pNext = pNext_;
61246       return *this;
61247     }
61248 
61249     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSMBuiltinsFeaturesNV &
setShaderSMBuiltinsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV61250                             setShaderSMBuiltins( VULKAN_HPP_NAMESPACE::Bool32 shaderSMBuiltins_ ) VULKAN_HPP_NOEXCEPT
61251     {
61252       shaderSMBuiltins = shaderSMBuiltins_;
61253       return *this;
61254     }
61255 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
61256 
operator VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV61257     explicit operator VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
61258     {
61259       return *reinterpret_cast<const VkPhysicalDeviceShaderSMBuiltinsFeaturesNV *>( this );
61260     }
61261 
operator VkPhysicalDeviceShaderSMBuiltinsFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV61262     explicit operator VkPhysicalDeviceShaderSMBuiltinsFeaturesNV &() VULKAN_HPP_NOEXCEPT
61263     {
61264       return *reinterpret_cast<VkPhysicalDeviceShaderSMBuiltinsFeaturesNV *>( this );
61265     }
61266 
61267 #if 14 <= VULKAN_HPP_CPP_VERSION
61268     auto
61269 #else
61270     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
61271 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV61272       reflect() const VULKAN_HPP_NOEXCEPT
61273     {
61274       return std::tie( sType, pNext, shaderSMBuiltins );
61275     }
61276 
61277 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
61278     auto operator<=>( PhysicalDeviceShaderSMBuiltinsFeaturesNV const & ) const = default;
61279 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV61280     bool operator==( PhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
61281     {
61282       return this->reflect() == rhs.reflect();
61283     }
61284 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV61285     bool operator!=( PhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
61286     {
61287       return this->reflect() != rhs.reflect();
61288     }
61289 #endif
61290 
61291   public:
61292     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::ePhysicalDeviceShaderSmBuiltinsFeaturesNV;
61293     void *                              pNext            = {};
61294     VULKAN_HPP_NAMESPACE::Bool32        shaderSMBuiltins = {};
61295   };
61296   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV ) ==
61297                               sizeof( VkPhysicalDeviceShaderSMBuiltinsFeaturesNV ),
61298                             "struct and wrapper have different size!" );
61299   VULKAN_HPP_STATIC_ASSERT(
61300     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV>::value,
61301     "struct wrapper is not a standard layout!" );
61302   VULKAN_HPP_STATIC_ASSERT(
61303     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV>::value,
61304     "PhysicalDeviceShaderSMBuiltinsFeaturesNV is not nothrow_move_constructible!" );
61305 
61306   template <>
61307   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderSmBuiltinsFeaturesNV>
61308   {
61309     using Type = PhysicalDeviceShaderSMBuiltinsFeaturesNV;
61310   };
61311 
61312   struct PhysicalDeviceShaderSMBuiltinsPropertiesNV
61313   {
61314     using NativeType = VkPhysicalDeviceShaderSMBuiltinsPropertiesNV;
61315 
61316     static const bool                                  allowDuplicate = false;
61317     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
61318       StructureType::ePhysicalDeviceShaderSmBuiltinsPropertiesNV;
61319 
61320 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
61321     VULKAN_HPP_CONSTEXPR
PhysicalDeviceShaderSMBuiltinsPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsPropertiesNV61322       PhysicalDeviceShaderSMBuiltinsPropertiesNV( uint32_t shaderSMCount_    = {},
61323                                                   uint32_t shaderWarpsPerSM_ = {} ) VULKAN_HPP_NOEXCEPT
61324       : shaderSMCount( shaderSMCount_ )
61325       , shaderWarpsPerSM( shaderWarpsPerSM_ )
61326     {}
61327 
61328     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSMBuiltinsPropertiesNV(
61329       PhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61330 
PhysicalDeviceShaderSMBuiltinsPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsPropertiesNV61331     PhysicalDeviceShaderSMBuiltinsPropertiesNV( VkPhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs )
61332       VULKAN_HPP_NOEXCEPT
61333       : PhysicalDeviceShaderSMBuiltinsPropertiesNV(
61334           *reinterpret_cast<PhysicalDeviceShaderSMBuiltinsPropertiesNV const *>( &rhs ) )
61335     {}
61336 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
61337 
61338     PhysicalDeviceShaderSMBuiltinsPropertiesNV &
61339       operator=( PhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61340 
61341     PhysicalDeviceShaderSMBuiltinsPropertiesNV &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsPropertiesNV61342       operator=( VkPhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
61343     {
61344       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsPropertiesNV const *>( &rhs );
61345       return *this;
61346     }
61347 
operator VkPhysicalDeviceShaderSMBuiltinsPropertiesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsPropertiesNV61348     explicit operator VkPhysicalDeviceShaderSMBuiltinsPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
61349     {
61350       return *reinterpret_cast<const VkPhysicalDeviceShaderSMBuiltinsPropertiesNV *>( this );
61351     }
61352 
operator VkPhysicalDeviceShaderSMBuiltinsPropertiesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsPropertiesNV61353     explicit operator VkPhysicalDeviceShaderSMBuiltinsPropertiesNV &() VULKAN_HPP_NOEXCEPT
61354     {
61355       return *reinterpret_cast<VkPhysicalDeviceShaderSMBuiltinsPropertiesNV *>( this );
61356     }
61357 
61358 #if 14 <= VULKAN_HPP_CPP_VERSION
61359     auto
61360 #else
61361     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, uint32_t const &>
61362 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsPropertiesNV61363       reflect() const VULKAN_HPP_NOEXCEPT
61364     {
61365       return std::tie( sType, pNext, shaderSMCount, shaderWarpsPerSM );
61366     }
61367 
61368 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
61369     auto operator<=>( PhysicalDeviceShaderSMBuiltinsPropertiesNV const & ) const = default;
61370 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsPropertiesNV61371     bool operator==( PhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
61372     {
61373       return this->reflect() == rhs.reflect();
61374     }
61375 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsPropertiesNV61376     bool operator!=( PhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
61377     {
61378       return this->reflect() != rhs.reflect();
61379     }
61380 #endif
61381 
61382   public:
61383     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::ePhysicalDeviceShaderSmBuiltinsPropertiesNV;
61384     void *                              pNext            = {};
61385     uint32_t                            shaderSMCount    = {};
61386     uint32_t                            shaderWarpsPerSM = {};
61387   };
61388   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsPropertiesNV ) ==
61389                               sizeof( VkPhysicalDeviceShaderSMBuiltinsPropertiesNV ),
61390                             "struct and wrapper have different size!" );
61391   VULKAN_HPP_STATIC_ASSERT(
61392     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsPropertiesNV>::value,
61393     "struct wrapper is not a standard layout!" );
61394   VULKAN_HPP_STATIC_ASSERT(
61395     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsPropertiesNV>::value,
61396     "PhysicalDeviceShaderSMBuiltinsPropertiesNV is not nothrow_move_constructible!" );
61397 
61398   template <>
61399   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderSmBuiltinsPropertiesNV>
61400   {
61401     using Type = PhysicalDeviceShaderSMBuiltinsPropertiesNV;
61402   };
61403 
61404   struct PhysicalDeviceShaderSubgroupExtendedTypesFeatures
61405   {
61406     using NativeType = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures;
61407 
61408     static const bool                                  allowDuplicate = false;
61409     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
61410       StructureType::ePhysicalDeviceShaderSubgroupExtendedTypesFeatures;
61411 
61412 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderSubgroupExtendedTypesFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures61413     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSubgroupExtendedTypesFeatures(
61414       VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupExtendedTypes_ = {} ) VULKAN_HPP_NOEXCEPT
61415       : shaderSubgroupExtendedTypes( shaderSubgroupExtendedTypes_ )
61416     {}
61417 
61418     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSubgroupExtendedTypesFeatures(
61419       PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61420 
PhysicalDeviceShaderSubgroupExtendedTypesFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures61421     PhysicalDeviceShaderSubgroupExtendedTypesFeatures( VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs )
61422       VULKAN_HPP_NOEXCEPT
61423       : PhysicalDeviceShaderSubgroupExtendedTypesFeatures(
61424           *reinterpret_cast<PhysicalDeviceShaderSubgroupExtendedTypesFeatures const *>( &rhs ) )
61425     {}
61426 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
61427 
61428     PhysicalDeviceShaderSubgroupExtendedTypesFeatures &
61429       operator=( PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61430 
61431     PhysicalDeviceShaderSubgroupExtendedTypesFeatures &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures61432       operator=( VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
61433     {
61434       *this =
61435         *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures const *>( &rhs );
61436       return *this;
61437     }
61438 
61439 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
61440     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupExtendedTypesFeatures &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures61441                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
61442     {
61443       pNext = pNext_;
61444       return *this;
61445     }
61446 
61447     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupExtendedTypesFeatures &
setShaderSubgroupExtendedTypesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures61448       setShaderSubgroupExtendedTypes( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupExtendedTypes_ ) VULKAN_HPP_NOEXCEPT
61449     {
61450       shaderSubgroupExtendedTypes = shaderSubgroupExtendedTypes_;
61451       return *this;
61452     }
61453 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
61454 
operator VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures61455     explicit operator VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures const &() const VULKAN_HPP_NOEXCEPT
61456     {
61457       return *reinterpret_cast<const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures *>( this );
61458     }
61459 
operator VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures61460     explicit operator VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures &() VULKAN_HPP_NOEXCEPT
61461     {
61462       return *reinterpret_cast<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures *>( this );
61463     }
61464 
61465 #if 14 <= VULKAN_HPP_CPP_VERSION
61466     auto
61467 #else
61468     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
61469 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures61470       reflect() const VULKAN_HPP_NOEXCEPT
61471     {
61472       return std::tie( sType, pNext, shaderSubgroupExtendedTypes );
61473     }
61474 
61475 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
61476     auto operator<=>( PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & ) const = default;
61477 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures61478     bool operator==( PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
61479     {
61480       return this->reflect() == rhs.reflect();
61481     }
61482 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures61483     bool operator!=( PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
61484     {
61485       return this->reflect() != rhs.reflect();
61486     }
61487 #endif
61488 
61489   public:
61490     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderSubgroupExtendedTypesFeatures;
61491     void *                              pNext = {};
61492     VULKAN_HPP_NAMESPACE::Bool32        shaderSubgroupExtendedTypes = {};
61493   };
61494   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures ) ==
61495                               sizeof( VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures ),
61496                             "struct and wrapper have different size!" );
61497   VULKAN_HPP_STATIC_ASSERT(
61498     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures>::value,
61499     "struct wrapper is not a standard layout!" );
61500   VULKAN_HPP_STATIC_ASSERT(
61501     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures>::value,
61502     "PhysicalDeviceShaderSubgroupExtendedTypesFeatures is not nothrow_move_constructible!" );
61503 
61504   template <>
61505   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderSubgroupExtendedTypesFeatures>
61506   {
61507     using Type = PhysicalDeviceShaderSubgroupExtendedTypesFeatures;
61508   };
61509   using PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = PhysicalDeviceShaderSubgroupExtendedTypesFeatures;
61510 
61511   struct PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR
61512   {
61513     using NativeType = VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR;
61514 
61515     static const bool                                  allowDuplicate = false;
61516     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
61517       StructureType::ePhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR;
61518 
61519 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR61520     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR(
61521       VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupUniformControlFlow_ = {} ) VULKAN_HPP_NOEXCEPT
61522       : shaderSubgroupUniformControlFlow( shaderSubgroupUniformControlFlow_ )
61523     {}
61524 
61525     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR(
61526       PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61527 
PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR61528     PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR(
61529       VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
61530       : PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR(
61531           *reinterpret_cast<PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const *>( &rhs ) )
61532     {}
61533 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
61534 
61535     PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR &
61536       operator=( PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61537 
61538     PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR61539       operator=( VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
61540     {
61541       *this =
61542         *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const *>(
61543           &rhs );
61544       return *this;
61545     }
61546 
61547 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
61548     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR61549                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
61550     {
61551       pNext = pNext_;
61552       return *this;
61553     }
61554 
61555     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR &
setShaderSubgroupUniformControlFlowVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR61556       setShaderSubgroupUniformControlFlow( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupUniformControlFlow_ )
61557         VULKAN_HPP_NOEXCEPT
61558     {
61559       shaderSubgroupUniformControlFlow = shaderSubgroupUniformControlFlow_;
61560       return *this;
61561     }
61562 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
61563 
operator VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR61564     explicit operator VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
61565     {
61566       return *reinterpret_cast<const VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR *>( this );
61567     }
61568 
operator VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR61569     explicit operator VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR &() VULKAN_HPP_NOEXCEPT
61570     {
61571       return *reinterpret_cast<VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR *>( this );
61572     }
61573 
61574 #if 14 <= VULKAN_HPP_CPP_VERSION
61575     auto
61576 #else
61577     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
61578 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR61579       reflect() const VULKAN_HPP_NOEXCEPT
61580     {
61581       return std::tie( sType, pNext, shaderSubgroupUniformControlFlow );
61582     }
61583 
61584 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
61585     auto operator<=>( PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & ) const = default;
61586 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR61587     bool operator==( PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
61588     {
61589       return this->reflect() == rhs.reflect();
61590     }
61591 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR61592     bool operator!=( PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
61593     {
61594       return this->reflect() != rhs.reflect();
61595     }
61596 #endif
61597 
61598   public:
61599     VULKAN_HPP_NAMESPACE::StructureType sType =
61600       StructureType::ePhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR;
61601     void *                       pNext                            = {};
61602     VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupUniformControlFlow = {};
61603   };
61604   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR ) ==
61605                               sizeof( VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR ),
61606                             "struct and wrapper have different size!" );
61607   VULKAN_HPP_STATIC_ASSERT(
61608     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR>::value,
61609     "struct wrapper is not a standard layout!" );
61610   VULKAN_HPP_STATIC_ASSERT(
61611     std::is_nothrow_move_constructible<
61612       VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR>::value,
61613     "PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR is not nothrow_move_constructible!" );
61614 
61615   template <>
61616   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR>
61617   {
61618     using Type = PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR;
61619   };
61620 
61621   struct PhysicalDeviceShaderTerminateInvocationFeaturesKHR
61622   {
61623     using NativeType = VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR;
61624 
61625     static const bool                                  allowDuplicate = false;
61626     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
61627       StructureType::ePhysicalDeviceShaderTerminateInvocationFeaturesKHR;
61628 
61629 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderTerminateInvocationFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeaturesKHR61630     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderTerminateInvocationFeaturesKHR(
61631       VULKAN_HPP_NAMESPACE::Bool32 shaderTerminateInvocation_ = {} ) VULKAN_HPP_NOEXCEPT
61632       : shaderTerminateInvocation( shaderTerminateInvocation_ )
61633     {}
61634 
61635     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderTerminateInvocationFeaturesKHR(
61636       PhysicalDeviceShaderTerminateInvocationFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61637 
PhysicalDeviceShaderTerminateInvocationFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeaturesKHR61638     PhysicalDeviceShaderTerminateInvocationFeaturesKHR(
61639       VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
61640       : PhysicalDeviceShaderTerminateInvocationFeaturesKHR(
61641           *reinterpret_cast<PhysicalDeviceShaderTerminateInvocationFeaturesKHR const *>( &rhs ) )
61642     {}
61643 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
61644 
61645     PhysicalDeviceShaderTerminateInvocationFeaturesKHR &
61646       operator=( PhysicalDeviceShaderTerminateInvocationFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61647 
61648     PhysicalDeviceShaderTerminateInvocationFeaturesKHR &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeaturesKHR61649       operator=( VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
61650     {
61651       *this =
61652         *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeaturesKHR const *>( &rhs );
61653       return *this;
61654     }
61655 
61656 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
61657     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderTerminateInvocationFeaturesKHR &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeaturesKHR61658                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
61659     {
61660       pNext = pNext_;
61661       return *this;
61662     }
61663 
61664     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderTerminateInvocationFeaturesKHR &
setShaderTerminateInvocationVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeaturesKHR61665       setShaderTerminateInvocation( VULKAN_HPP_NAMESPACE::Bool32 shaderTerminateInvocation_ ) VULKAN_HPP_NOEXCEPT
61666     {
61667       shaderTerminateInvocation = shaderTerminateInvocation_;
61668       return *this;
61669     }
61670 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
61671 
operator VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeaturesKHR61672     explicit operator VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
61673     {
61674       return *reinterpret_cast<const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR *>( this );
61675     }
61676 
operator VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeaturesKHR61677     explicit operator VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR &() VULKAN_HPP_NOEXCEPT
61678     {
61679       return *reinterpret_cast<VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR *>( this );
61680     }
61681 
61682 #if 14 <= VULKAN_HPP_CPP_VERSION
61683     auto
61684 #else
61685     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
61686 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeaturesKHR61687       reflect() const VULKAN_HPP_NOEXCEPT
61688     {
61689       return std::tie( sType, pNext, shaderTerminateInvocation );
61690     }
61691 
61692 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
61693     auto operator<=>( PhysicalDeviceShaderTerminateInvocationFeaturesKHR const & ) const = default;
61694 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeaturesKHR61695     bool operator==( PhysicalDeviceShaderTerminateInvocationFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
61696     {
61697       return this->reflect() == rhs.reflect();
61698     }
61699 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeaturesKHR61700     bool operator!=( PhysicalDeviceShaderTerminateInvocationFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
61701     {
61702       return this->reflect() != rhs.reflect();
61703     }
61704 #endif
61705 
61706   public:
61707     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderTerminateInvocationFeaturesKHR;
61708     void *                              pNext = {};
61709     VULKAN_HPP_NAMESPACE::Bool32        shaderTerminateInvocation = {};
61710   };
61711   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeaturesKHR ) ==
61712                               sizeof( VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR ),
61713                             "struct and wrapper have different size!" );
61714   VULKAN_HPP_STATIC_ASSERT(
61715     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeaturesKHR>::value,
61716     "struct wrapper is not a standard layout!" );
61717   VULKAN_HPP_STATIC_ASSERT(
61718     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeaturesKHR>::value,
61719     "PhysicalDeviceShaderTerminateInvocationFeaturesKHR is not nothrow_move_constructible!" );
61720 
61721   template <>
61722   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderTerminateInvocationFeaturesKHR>
61723   {
61724     using Type = PhysicalDeviceShaderTerminateInvocationFeaturesKHR;
61725   };
61726 
61727   struct PhysicalDeviceShadingRateImageFeaturesNV
61728   {
61729     using NativeType = VkPhysicalDeviceShadingRateImageFeaturesNV;
61730 
61731     static const bool                                  allowDuplicate = false;
61732     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
61733       StructureType::ePhysicalDeviceShadingRateImageFeaturesNV;
61734 
61735 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShadingRateImageFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV61736     VULKAN_HPP_CONSTEXPR PhysicalDeviceShadingRateImageFeaturesNV(
61737       VULKAN_HPP_NAMESPACE::Bool32 shadingRateImage_             = {},
61738       VULKAN_HPP_NAMESPACE::Bool32 shadingRateCoarseSampleOrder_ = {} ) VULKAN_HPP_NOEXCEPT
61739       : shadingRateImage( shadingRateImage_ )
61740       , shadingRateCoarseSampleOrder( shadingRateCoarseSampleOrder_ )
61741     {}
61742 
61743     VULKAN_HPP_CONSTEXPR PhysicalDeviceShadingRateImageFeaturesNV(
61744       PhysicalDeviceShadingRateImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61745 
PhysicalDeviceShadingRateImageFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV61746     PhysicalDeviceShadingRateImageFeaturesNV( VkPhysicalDeviceShadingRateImageFeaturesNV const & rhs )
61747       VULKAN_HPP_NOEXCEPT
61748       : PhysicalDeviceShadingRateImageFeaturesNV(
61749           *reinterpret_cast<PhysicalDeviceShadingRateImageFeaturesNV const *>( &rhs ) )
61750     {}
61751 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
61752 
61753     PhysicalDeviceShadingRateImageFeaturesNV &
61754       operator=( PhysicalDeviceShadingRateImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61755 
61756     PhysicalDeviceShadingRateImageFeaturesNV &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV61757       operator=( VkPhysicalDeviceShadingRateImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
61758     {
61759       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV const *>( &rhs );
61760       return *this;
61761     }
61762 
61763 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV61764     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShadingRateImageFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
61765     {
61766       pNext = pNext_;
61767       return *this;
61768     }
61769 
61770     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShadingRateImageFeaturesNV &
setShadingRateImageVULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV61771                             setShadingRateImage( VULKAN_HPP_NAMESPACE::Bool32 shadingRateImage_ ) VULKAN_HPP_NOEXCEPT
61772     {
61773       shadingRateImage = shadingRateImage_;
61774       return *this;
61775     }
61776 
61777     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShadingRateImageFeaturesNV &
setShadingRateCoarseSampleOrderVULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV61778       setShadingRateCoarseSampleOrder( VULKAN_HPP_NAMESPACE::Bool32 shadingRateCoarseSampleOrder_ ) VULKAN_HPP_NOEXCEPT
61779     {
61780       shadingRateCoarseSampleOrder = shadingRateCoarseSampleOrder_;
61781       return *this;
61782     }
61783 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
61784 
operator VkPhysicalDeviceShadingRateImageFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV61785     explicit operator VkPhysicalDeviceShadingRateImageFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
61786     {
61787       return *reinterpret_cast<const VkPhysicalDeviceShadingRateImageFeaturesNV *>( this );
61788     }
61789 
operator VkPhysicalDeviceShadingRateImageFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV61790     explicit operator VkPhysicalDeviceShadingRateImageFeaturesNV &() VULKAN_HPP_NOEXCEPT
61791     {
61792       return *reinterpret_cast<VkPhysicalDeviceShadingRateImageFeaturesNV *>( this );
61793     }
61794 
61795 #if 14 <= VULKAN_HPP_CPP_VERSION
61796     auto
61797 #else
61798     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
61799                void * const &,
61800                VULKAN_HPP_NAMESPACE::Bool32 const &,
61801                VULKAN_HPP_NAMESPACE::Bool32 const &>
61802 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV61803       reflect() const VULKAN_HPP_NOEXCEPT
61804     {
61805       return std::tie( sType, pNext, shadingRateImage, shadingRateCoarseSampleOrder );
61806     }
61807 
61808 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
61809     auto operator<=>( PhysicalDeviceShadingRateImageFeaturesNV const & ) const = default;
61810 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV61811     bool operator==( PhysicalDeviceShadingRateImageFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
61812     {
61813       return this->reflect() == rhs.reflect();
61814     }
61815 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV61816     bool operator!=( PhysicalDeviceShadingRateImageFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
61817     {
61818       return this->reflect() != rhs.reflect();
61819     }
61820 #endif
61821 
61822   public:
61823     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::ePhysicalDeviceShadingRateImageFeaturesNV;
61824     void *                              pNext            = {};
61825     VULKAN_HPP_NAMESPACE::Bool32        shadingRateImage = {};
61826     VULKAN_HPP_NAMESPACE::Bool32        shadingRateCoarseSampleOrder = {};
61827   };
61828   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV ) ==
61829                               sizeof( VkPhysicalDeviceShadingRateImageFeaturesNV ),
61830                             "struct and wrapper have different size!" );
61831   VULKAN_HPP_STATIC_ASSERT(
61832     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV>::value,
61833     "struct wrapper is not a standard layout!" );
61834   VULKAN_HPP_STATIC_ASSERT(
61835     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV>::value,
61836     "PhysicalDeviceShadingRateImageFeaturesNV is not nothrow_move_constructible!" );
61837 
61838   template <>
61839   struct CppType<StructureType, StructureType::ePhysicalDeviceShadingRateImageFeaturesNV>
61840   {
61841     using Type = PhysicalDeviceShadingRateImageFeaturesNV;
61842   };
61843 
61844   struct PhysicalDeviceShadingRateImagePropertiesNV
61845   {
61846     using NativeType = VkPhysicalDeviceShadingRateImagePropertiesNV;
61847 
61848     static const bool                                  allowDuplicate = false;
61849     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
61850       StructureType::ePhysicalDeviceShadingRateImagePropertiesNV;
61851 
61852 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
61853     VULKAN_HPP_CONSTEXPR
PhysicalDeviceShadingRateImagePropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImagePropertiesNV61854       PhysicalDeviceShadingRateImagePropertiesNV( VULKAN_HPP_NAMESPACE::Extent2D shadingRateTexelSize_   = {},
61855                                                   uint32_t                       shadingRatePaletteSize_ = {},
61856                                                   uint32_t shadingRateMaxCoarseSamples_ = {} ) VULKAN_HPP_NOEXCEPT
61857       : shadingRateTexelSize( shadingRateTexelSize_ )
61858       , shadingRatePaletteSize( shadingRatePaletteSize_ )
61859       , shadingRateMaxCoarseSamples( shadingRateMaxCoarseSamples_ )
61860     {}
61861 
61862     VULKAN_HPP_CONSTEXPR PhysicalDeviceShadingRateImagePropertiesNV(
61863       PhysicalDeviceShadingRateImagePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61864 
PhysicalDeviceShadingRateImagePropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImagePropertiesNV61865     PhysicalDeviceShadingRateImagePropertiesNV( VkPhysicalDeviceShadingRateImagePropertiesNV const & rhs )
61866       VULKAN_HPP_NOEXCEPT
61867       : PhysicalDeviceShadingRateImagePropertiesNV(
61868           *reinterpret_cast<PhysicalDeviceShadingRateImagePropertiesNV const *>( &rhs ) )
61869     {}
61870 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
61871 
61872     PhysicalDeviceShadingRateImagePropertiesNV &
61873       operator=( PhysicalDeviceShadingRateImagePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61874 
61875     PhysicalDeviceShadingRateImagePropertiesNV &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImagePropertiesNV61876       operator=( VkPhysicalDeviceShadingRateImagePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
61877     {
61878       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImagePropertiesNV const *>( &rhs );
61879       return *this;
61880     }
61881 
operator VkPhysicalDeviceShadingRateImagePropertiesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImagePropertiesNV61882     explicit operator VkPhysicalDeviceShadingRateImagePropertiesNV const &() const VULKAN_HPP_NOEXCEPT
61883     {
61884       return *reinterpret_cast<const VkPhysicalDeviceShadingRateImagePropertiesNV *>( this );
61885     }
61886 
operator VkPhysicalDeviceShadingRateImagePropertiesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImagePropertiesNV61887     explicit operator VkPhysicalDeviceShadingRateImagePropertiesNV &() VULKAN_HPP_NOEXCEPT
61888     {
61889       return *reinterpret_cast<VkPhysicalDeviceShadingRateImagePropertiesNV *>( this );
61890     }
61891 
61892 #if 14 <= VULKAN_HPP_CPP_VERSION
61893     auto
61894 #else
61895     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
61896                void * const &,
61897                VULKAN_HPP_NAMESPACE::Extent2D const &,
61898                uint32_t const &,
61899                uint32_t const &>
61900 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImagePropertiesNV61901       reflect() const VULKAN_HPP_NOEXCEPT
61902     {
61903       return std::tie( sType, pNext, shadingRateTexelSize, shadingRatePaletteSize, shadingRateMaxCoarseSamples );
61904     }
61905 
61906 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
61907     auto operator<=>( PhysicalDeviceShadingRateImagePropertiesNV const & ) const = default;
61908 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImagePropertiesNV61909     bool operator==( PhysicalDeviceShadingRateImagePropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
61910     {
61911       return this->reflect() == rhs.reflect();
61912     }
61913 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImagePropertiesNV61914     bool operator!=( PhysicalDeviceShadingRateImagePropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
61915     {
61916       return this->reflect() != rhs.reflect();
61917     }
61918 #endif
61919 
61920   public:
61921     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShadingRateImagePropertiesNV;
61922     void *                              pNext = {};
61923     VULKAN_HPP_NAMESPACE::Extent2D      shadingRateTexelSize        = {};
61924     uint32_t                            shadingRatePaletteSize      = {};
61925     uint32_t                            shadingRateMaxCoarseSamples = {};
61926   };
61927   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImagePropertiesNV ) ==
61928                               sizeof( VkPhysicalDeviceShadingRateImagePropertiesNV ),
61929                             "struct and wrapper have different size!" );
61930   VULKAN_HPP_STATIC_ASSERT(
61931     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImagePropertiesNV>::value,
61932     "struct wrapper is not a standard layout!" );
61933   VULKAN_HPP_STATIC_ASSERT(
61934     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImagePropertiesNV>::value,
61935     "PhysicalDeviceShadingRateImagePropertiesNV is not nothrow_move_constructible!" );
61936 
61937   template <>
61938   struct CppType<StructureType, StructureType::ePhysicalDeviceShadingRateImagePropertiesNV>
61939   {
61940     using Type = PhysicalDeviceShadingRateImagePropertiesNV;
61941   };
61942 
61943   struct PhysicalDeviceSparseImageFormatInfo2
61944   {
61945     using NativeType = VkPhysicalDeviceSparseImageFormatInfo2;
61946 
61947     static const bool                                  allowDuplicate = false;
61948     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
61949       StructureType::ePhysicalDeviceSparseImageFormatInfo2;
61950 
61951 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSparseImageFormatInfo2VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo261952     VULKAN_HPP_CONSTEXPR PhysicalDeviceSparseImageFormatInfo2(
61953       VULKAN_HPP_NAMESPACE::Format              format_  = VULKAN_HPP_NAMESPACE::Format::eUndefined,
61954       VULKAN_HPP_NAMESPACE::ImageType           type_    = VULKAN_HPP_NAMESPACE::ImageType::e1D,
61955       VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1,
61956       VULKAN_HPP_NAMESPACE::ImageUsageFlags     usage_   = {},
61957       VULKAN_HPP_NAMESPACE::ImageTiling tiling_ = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal ) VULKAN_HPP_NOEXCEPT
61958       : format( format_ )
61959       , type( type_ )
61960       , samples( samples_ )
61961       , usage( usage_ )
61962       , tiling( tiling_ )
61963     {}
61964 
61965     VULKAN_HPP_CONSTEXPR PhysicalDeviceSparseImageFormatInfo2( PhysicalDeviceSparseImageFormatInfo2 const & rhs )
61966       VULKAN_HPP_NOEXCEPT = default;
61967 
PhysicalDeviceSparseImageFormatInfo2VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo261968     PhysicalDeviceSparseImageFormatInfo2( VkPhysicalDeviceSparseImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
61969       : PhysicalDeviceSparseImageFormatInfo2( *reinterpret_cast<PhysicalDeviceSparseImageFormatInfo2 const *>( &rhs ) )
61970     {}
61971 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
61972 
61973     PhysicalDeviceSparseImageFormatInfo2 &
61974       operator=( PhysicalDeviceSparseImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61975 
61976     PhysicalDeviceSparseImageFormatInfo2 &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo261977       operator=( VkPhysicalDeviceSparseImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
61978     {
61979       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 const *>( &rhs );
61980       return *this;
61981     }
61982 
61983 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo261984     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
61985     {
61986       pNext = pNext_;
61987       return *this;
61988     }
61989 
61990     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 &
setFormatVULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo261991                             setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
61992     {
61993       format = format_;
61994       return *this;
61995     }
61996 
61997     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 &
setTypeVULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo261998                             setType( VULKAN_HPP_NAMESPACE::ImageType type_ ) VULKAN_HPP_NOEXCEPT
61999     {
62000       type = type_;
62001       return *this;
62002     }
62003 
62004     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 &
setSamplesVULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo262005                             setSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_ ) VULKAN_HPP_NOEXCEPT
62006     {
62007       samples = samples_;
62008       return *this;
62009     }
62010 
62011     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 &
setUsageVULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo262012                             setUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT
62013     {
62014       usage = usage_;
62015       return *this;
62016     }
62017 
62018     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 &
setTilingVULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo262019                             setTiling( VULKAN_HPP_NAMESPACE::ImageTiling tiling_ ) VULKAN_HPP_NOEXCEPT
62020     {
62021       tiling = tiling_;
62022       return *this;
62023     }
62024 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
62025 
operator VkPhysicalDeviceSparseImageFormatInfo2 const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo262026     explicit operator VkPhysicalDeviceSparseImageFormatInfo2 const &() const VULKAN_HPP_NOEXCEPT
62027     {
62028       return *reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2 *>( this );
62029     }
62030 
operator VkPhysicalDeviceSparseImageFormatInfo2&VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo262031     explicit operator VkPhysicalDeviceSparseImageFormatInfo2 &() VULKAN_HPP_NOEXCEPT
62032     {
62033       return *reinterpret_cast<VkPhysicalDeviceSparseImageFormatInfo2 *>( this );
62034     }
62035 
62036 #if 14 <= VULKAN_HPP_CPP_VERSION
62037     auto
62038 #else
62039     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
62040                const void * const &,
62041                VULKAN_HPP_NAMESPACE::Format const &,
62042                VULKAN_HPP_NAMESPACE::ImageType const &,
62043                VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &,
62044                VULKAN_HPP_NAMESPACE::ImageUsageFlags const &,
62045                VULKAN_HPP_NAMESPACE::ImageTiling const &>
62046 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo262047       reflect() const VULKAN_HPP_NOEXCEPT
62048     {
62049       return std::tie( sType, pNext, format, type, samples, usage, tiling );
62050     }
62051 
62052 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
62053     auto operator<=>( PhysicalDeviceSparseImageFormatInfo2 const & ) const = default;
62054 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo262055     bool operator==( PhysicalDeviceSparseImageFormatInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
62056     {
62057       return this->reflect() == rhs.reflect();
62058     }
62059 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo262060     bool operator!=( PhysicalDeviceSparseImageFormatInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
62061     {
62062       return this->reflect() != rhs.reflect();
62063     }
62064 #endif
62065 
62066   public:
62067     VULKAN_HPP_NAMESPACE::StructureType       sType   = StructureType::ePhysicalDeviceSparseImageFormatInfo2;
62068     const void *                              pNext   = {};
62069     VULKAN_HPP_NAMESPACE::Format              format  = VULKAN_HPP_NAMESPACE::Format::eUndefined;
62070     VULKAN_HPP_NAMESPACE::ImageType           type    = VULKAN_HPP_NAMESPACE::ImageType::e1D;
62071     VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
62072     VULKAN_HPP_NAMESPACE::ImageUsageFlags     usage   = {};
62073     VULKAN_HPP_NAMESPACE::ImageTiling         tiling  = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal;
62074   };
62075   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 ) ==
62076                               sizeof( VkPhysicalDeviceSparseImageFormatInfo2 ),
62077                             "struct and wrapper have different size!" );
62078   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2>::value,
62079                             "struct wrapper is not a standard layout!" );
62080   VULKAN_HPP_STATIC_ASSERT(
62081     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2>::value,
62082     "PhysicalDeviceSparseImageFormatInfo2 is not nothrow_move_constructible!" );
62083 
62084   template <>
62085   struct CppType<StructureType, StructureType::ePhysicalDeviceSparseImageFormatInfo2>
62086   {
62087     using Type = PhysicalDeviceSparseImageFormatInfo2;
62088   };
62089   using PhysicalDeviceSparseImageFormatInfo2KHR = PhysicalDeviceSparseImageFormatInfo2;
62090 
62091   struct PhysicalDeviceSubgroupProperties
62092   {
62093     using NativeType = VkPhysicalDeviceSubgroupProperties;
62094 
62095     static const bool                                  allowDuplicate = false;
62096     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSubgroupProperties;
62097 
62098 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSubgroupPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties62099     VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupProperties(
62100       uint32_t                                   subgroupSize_              = {},
62101       VULKAN_HPP_NAMESPACE::ShaderStageFlags     supportedStages_           = {},
62102       VULKAN_HPP_NAMESPACE::SubgroupFeatureFlags supportedOperations_       = {},
62103       VULKAN_HPP_NAMESPACE::Bool32               quadOperationsInAllStages_ = {} ) VULKAN_HPP_NOEXCEPT
62104       : subgroupSize( subgroupSize_ )
62105       , supportedStages( supportedStages_ )
62106       , supportedOperations( supportedOperations_ )
62107       , quadOperationsInAllStages( quadOperationsInAllStages_ )
62108     {}
62109 
62110     VULKAN_HPP_CONSTEXPR
62111       PhysicalDeviceSubgroupProperties( PhysicalDeviceSubgroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62112 
PhysicalDeviceSubgroupPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties62113     PhysicalDeviceSubgroupProperties( VkPhysicalDeviceSubgroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT
62114       : PhysicalDeviceSubgroupProperties( *reinterpret_cast<PhysicalDeviceSubgroupProperties const *>( &rhs ) )
62115     {}
62116 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
62117 
62118     PhysicalDeviceSubgroupProperties &
62119       operator=( PhysicalDeviceSubgroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62120 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties62121     PhysicalDeviceSubgroupProperties & operator=( VkPhysicalDeviceSubgroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT
62122     {
62123       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties const *>( &rhs );
62124       return *this;
62125     }
62126 
operator VkPhysicalDeviceSubgroupProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties62127     explicit operator VkPhysicalDeviceSubgroupProperties const &() const VULKAN_HPP_NOEXCEPT
62128     {
62129       return *reinterpret_cast<const VkPhysicalDeviceSubgroupProperties *>( this );
62130     }
62131 
operator VkPhysicalDeviceSubgroupProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties62132     explicit operator VkPhysicalDeviceSubgroupProperties &() VULKAN_HPP_NOEXCEPT
62133     {
62134       return *reinterpret_cast<VkPhysicalDeviceSubgroupProperties *>( this );
62135     }
62136 
62137 #if 14 <= VULKAN_HPP_CPP_VERSION
62138     auto
62139 #else
62140     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
62141                void * const &,
62142                uint32_t const &,
62143                VULKAN_HPP_NAMESPACE::ShaderStageFlags const &,
62144                VULKAN_HPP_NAMESPACE::SubgroupFeatureFlags const &,
62145                VULKAN_HPP_NAMESPACE::Bool32 const &>
62146 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties62147       reflect() const VULKAN_HPP_NOEXCEPT
62148     {
62149       return std::tie( sType, pNext, subgroupSize, supportedStages, supportedOperations, quadOperationsInAllStages );
62150     }
62151 
62152 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
62153     auto operator<=>( PhysicalDeviceSubgroupProperties const & ) const = default;
62154 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties62155     bool operator==( PhysicalDeviceSubgroupProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
62156     {
62157       return this->reflect() == rhs.reflect();
62158     }
62159 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties62160     bool operator!=( PhysicalDeviceSubgroupProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
62161     {
62162       return this->reflect() != rhs.reflect();
62163     }
62164 #endif
62165 
62166   public:
62167     VULKAN_HPP_NAMESPACE::StructureType        sType               = StructureType::ePhysicalDeviceSubgroupProperties;
62168     void *                                     pNext               = {};
62169     uint32_t                                   subgroupSize        = {};
62170     VULKAN_HPP_NAMESPACE::ShaderStageFlags     supportedStages     = {};
62171     VULKAN_HPP_NAMESPACE::SubgroupFeatureFlags supportedOperations = {};
62172     VULKAN_HPP_NAMESPACE::Bool32               quadOperationsInAllStages = {};
62173   };
62174   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties ) ==
62175                               sizeof( VkPhysicalDeviceSubgroupProperties ),
62176                             "struct and wrapper have different size!" );
62177   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties>::value,
62178                             "struct wrapper is not a standard layout!" );
62179   VULKAN_HPP_STATIC_ASSERT(
62180     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties>::value,
62181     "PhysicalDeviceSubgroupProperties is not nothrow_move_constructible!" );
62182 
62183   template <>
62184   struct CppType<StructureType, StructureType::ePhysicalDeviceSubgroupProperties>
62185   {
62186     using Type = PhysicalDeviceSubgroupProperties;
62187   };
62188 
62189   struct PhysicalDeviceSubgroupSizeControlFeaturesEXT
62190   {
62191     using NativeType = VkPhysicalDeviceSubgroupSizeControlFeaturesEXT;
62192 
62193     static const bool                                  allowDuplicate = false;
62194     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
62195       StructureType::ePhysicalDeviceSubgroupSizeControlFeaturesEXT;
62196 
62197 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSubgroupSizeControlFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeaturesEXT62198     VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupSizeControlFeaturesEXT(
62199       VULKAN_HPP_NAMESPACE::Bool32 subgroupSizeControl_  = {},
62200       VULKAN_HPP_NAMESPACE::Bool32 computeFullSubgroups_ = {} ) VULKAN_HPP_NOEXCEPT
62201       : subgroupSizeControl( subgroupSizeControl_ )
62202       , computeFullSubgroups( computeFullSubgroups_ )
62203     {}
62204 
62205     VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupSizeControlFeaturesEXT(
62206       PhysicalDeviceSubgroupSizeControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62207 
PhysicalDeviceSubgroupSizeControlFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeaturesEXT62208     PhysicalDeviceSubgroupSizeControlFeaturesEXT( VkPhysicalDeviceSubgroupSizeControlFeaturesEXT const & rhs )
62209       VULKAN_HPP_NOEXCEPT
62210       : PhysicalDeviceSubgroupSizeControlFeaturesEXT(
62211           *reinterpret_cast<PhysicalDeviceSubgroupSizeControlFeaturesEXT const *>( &rhs ) )
62212     {}
62213 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
62214 
62215     PhysicalDeviceSubgroupSizeControlFeaturesEXT &
62216       operator=( PhysicalDeviceSubgroupSizeControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62217 
62218     PhysicalDeviceSubgroupSizeControlFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeaturesEXT62219       operator=( VkPhysicalDeviceSubgroupSizeControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
62220     {
62221       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeaturesEXT const *>( &rhs );
62222       return *this;
62223     }
62224 
62225 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeaturesEXT62226     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubgroupSizeControlFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
62227     {
62228       pNext = pNext_;
62229       return *this;
62230     }
62231 
62232     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubgroupSizeControlFeaturesEXT &
setSubgroupSizeControlVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeaturesEXT62233       setSubgroupSizeControl( VULKAN_HPP_NAMESPACE::Bool32 subgroupSizeControl_ ) VULKAN_HPP_NOEXCEPT
62234     {
62235       subgroupSizeControl = subgroupSizeControl_;
62236       return *this;
62237     }
62238 
62239     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubgroupSizeControlFeaturesEXT &
setComputeFullSubgroupsVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeaturesEXT62240       setComputeFullSubgroups( VULKAN_HPP_NAMESPACE::Bool32 computeFullSubgroups_ ) VULKAN_HPP_NOEXCEPT
62241     {
62242       computeFullSubgroups = computeFullSubgroups_;
62243       return *this;
62244     }
62245 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
62246 
operator VkPhysicalDeviceSubgroupSizeControlFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeaturesEXT62247     explicit operator VkPhysicalDeviceSubgroupSizeControlFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
62248     {
62249       return *reinterpret_cast<const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT *>( this );
62250     }
62251 
operator VkPhysicalDeviceSubgroupSizeControlFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeaturesEXT62252     explicit operator VkPhysicalDeviceSubgroupSizeControlFeaturesEXT &() VULKAN_HPP_NOEXCEPT
62253     {
62254       return *reinterpret_cast<VkPhysicalDeviceSubgroupSizeControlFeaturesEXT *>( this );
62255     }
62256 
62257 #if 14 <= VULKAN_HPP_CPP_VERSION
62258     auto
62259 #else
62260     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
62261                void * const &,
62262                VULKAN_HPP_NAMESPACE::Bool32 const &,
62263                VULKAN_HPP_NAMESPACE::Bool32 const &>
62264 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeaturesEXT62265       reflect() const VULKAN_HPP_NOEXCEPT
62266     {
62267       return std::tie( sType, pNext, subgroupSizeControl, computeFullSubgroups );
62268     }
62269 
62270 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
62271     auto operator<=>( PhysicalDeviceSubgroupSizeControlFeaturesEXT const & ) const = default;
62272 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeaturesEXT62273     bool operator==( PhysicalDeviceSubgroupSizeControlFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
62274     {
62275       return this->reflect() == rhs.reflect();
62276     }
62277 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeaturesEXT62278     bool operator!=( PhysicalDeviceSubgroupSizeControlFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
62279     {
62280       return this->reflect() != rhs.reflect();
62281     }
62282 #endif
62283 
62284   public:
62285     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSubgroupSizeControlFeaturesEXT;
62286     void *                              pNext = {};
62287     VULKAN_HPP_NAMESPACE::Bool32        subgroupSizeControl  = {};
62288     VULKAN_HPP_NAMESPACE::Bool32        computeFullSubgroups = {};
62289   };
62290   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeaturesEXT ) ==
62291                               sizeof( VkPhysicalDeviceSubgroupSizeControlFeaturesEXT ),
62292                             "struct and wrapper have different size!" );
62293   VULKAN_HPP_STATIC_ASSERT(
62294     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeaturesEXT>::value,
62295     "struct wrapper is not a standard layout!" );
62296   VULKAN_HPP_STATIC_ASSERT(
62297     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeaturesEXT>::value,
62298     "PhysicalDeviceSubgroupSizeControlFeaturesEXT is not nothrow_move_constructible!" );
62299 
62300   template <>
62301   struct CppType<StructureType, StructureType::ePhysicalDeviceSubgroupSizeControlFeaturesEXT>
62302   {
62303     using Type = PhysicalDeviceSubgroupSizeControlFeaturesEXT;
62304   };
62305 
62306   struct PhysicalDeviceSubgroupSizeControlPropertiesEXT
62307   {
62308     using NativeType = VkPhysicalDeviceSubgroupSizeControlPropertiesEXT;
62309 
62310     static const bool                                  allowDuplicate = false;
62311     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
62312       StructureType::ePhysicalDeviceSubgroupSizeControlPropertiesEXT;
62313 
62314 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSubgroupSizeControlPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlPropertiesEXT62315     VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupSizeControlPropertiesEXT(
62316       uint32_t                               minSubgroupSize_              = {},
62317       uint32_t                               maxSubgroupSize_              = {},
62318       uint32_t                               maxComputeWorkgroupSubgroups_ = {},
62319       VULKAN_HPP_NAMESPACE::ShaderStageFlags requiredSubgroupSizeStages_   = {} ) VULKAN_HPP_NOEXCEPT
62320       : minSubgroupSize( minSubgroupSize_ )
62321       , maxSubgroupSize( maxSubgroupSize_ )
62322       , maxComputeWorkgroupSubgroups( maxComputeWorkgroupSubgroups_ )
62323       , requiredSubgroupSizeStages( requiredSubgroupSizeStages_ )
62324     {}
62325 
62326     VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupSizeControlPropertiesEXT(
62327       PhysicalDeviceSubgroupSizeControlPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62328 
PhysicalDeviceSubgroupSizeControlPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlPropertiesEXT62329     PhysicalDeviceSubgroupSizeControlPropertiesEXT( VkPhysicalDeviceSubgroupSizeControlPropertiesEXT const & rhs )
62330       VULKAN_HPP_NOEXCEPT
62331       : PhysicalDeviceSubgroupSizeControlPropertiesEXT(
62332           *reinterpret_cast<PhysicalDeviceSubgroupSizeControlPropertiesEXT const *>( &rhs ) )
62333     {}
62334 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
62335 
62336     PhysicalDeviceSubgroupSizeControlPropertiesEXT &
62337       operator=( PhysicalDeviceSubgroupSizeControlPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62338 
62339     PhysicalDeviceSubgroupSizeControlPropertiesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlPropertiesEXT62340       operator=( VkPhysicalDeviceSubgroupSizeControlPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
62341     {
62342       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlPropertiesEXT const *>( &rhs );
62343       return *this;
62344     }
62345 
operator VkPhysicalDeviceSubgroupSizeControlPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlPropertiesEXT62346     explicit operator VkPhysicalDeviceSubgroupSizeControlPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
62347     {
62348       return *reinterpret_cast<const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT *>( this );
62349     }
62350 
operator VkPhysicalDeviceSubgroupSizeControlPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlPropertiesEXT62351     explicit operator VkPhysicalDeviceSubgroupSizeControlPropertiesEXT &() VULKAN_HPP_NOEXCEPT
62352     {
62353       return *reinterpret_cast<VkPhysicalDeviceSubgroupSizeControlPropertiesEXT *>( this );
62354     }
62355 
62356 #if 14 <= VULKAN_HPP_CPP_VERSION
62357     auto
62358 #else
62359     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
62360                void * const &,
62361                uint32_t const &,
62362                uint32_t const &,
62363                uint32_t const &,
62364                VULKAN_HPP_NAMESPACE::ShaderStageFlags const &>
62365 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlPropertiesEXT62366       reflect() const VULKAN_HPP_NOEXCEPT
62367     {
62368       return std::tie(
62369         sType, pNext, minSubgroupSize, maxSubgroupSize, maxComputeWorkgroupSubgroups, requiredSubgroupSizeStages );
62370     }
62371 
62372 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
62373     auto operator<=>( PhysicalDeviceSubgroupSizeControlPropertiesEXT const & ) const = default;
62374 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlPropertiesEXT62375     bool operator==( PhysicalDeviceSubgroupSizeControlPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
62376     {
62377       return this->reflect() == rhs.reflect();
62378     }
62379 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlPropertiesEXT62380     bool operator!=( PhysicalDeviceSubgroupSizeControlPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
62381     {
62382       return this->reflect() != rhs.reflect();
62383     }
62384 #endif
62385 
62386   public:
62387     VULKAN_HPP_NAMESPACE::StructureType    sType = StructureType::ePhysicalDeviceSubgroupSizeControlPropertiesEXT;
62388     void *                                 pNext = {};
62389     uint32_t                               minSubgroupSize              = {};
62390     uint32_t                               maxSubgroupSize              = {};
62391     uint32_t                               maxComputeWorkgroupSubgroups = {};
62392     VULKAN_HPP_NAMESPACE::ShaderStageFlags requiredSubgroupSizeStages   = {};
62393   };
62394   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlPropertiesEXT ) ==
62395                               sizeof( VkPhysicalDeviceSubgroupSizeControlPropertiesEXT ),
62396                             "struct and wrapper have different size!" );
62397   VULKAN_HPP_STATIC_ASSERT(
62398     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlPropertiesEXT>::value,
62399     "struct wrapper is not a standard layout!" );
62400   VULKAN_HPP_STATIC_ASSERT(
62401     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlPropertiesEXT>::value,
62402     "PhysicalDeviceSubgroupSizeControlPropertiesEXT is not nothrow_move_constructible!" );
62403 
62404   template <>
62405   struct CppType<StructureType, StructureType::ePhysicalDeviceSubgroupSizeControlPropertiesEXT>
62406   {
62407     using Type = PhysicalDeviceSubgroupSizeControlPropertiesEXT;
62408   };
62409 
62410   struct PhysicalDeviceSubpassShadingFeaturesHUAWEI
62411   {
62412     using NativeType = VkPhysicalDeviceSubpassShadingFeaturesHUAWEI;
62413 
62414     static const bool                                  allowDuplicate = false;
62415     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
62416       StructureType::ePhysicalDeviceSubpassShadingFeaturesHUAWEI;
62417 
62418 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSubpassShadingFeaturesHUAWEIVULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI62419     VULKAN_HPP_CONSTEXPR PhysicalDeviceSubpassShadingFeaturesHUAWEI( VULKAN_HPP_NAMESPACE::Bool32 subpassShading_ = {} )
62420       VULKAN_HPP_NOEXCEPT : subpassShading( subpassShading_ )
62421     {}
62422 
62423     VULKAN_HPP_CONSTEXPR PhysicalDeviceSubpassShadingFeaturesHUAWEI(
62424       PhysicalDeviceSubpassShadingFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62425 
PhysicalDeviceSubpassShadingFeaturesHUAWEIVULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI62426     PhysicalDeviceSubpassShadingFeaturesHUAWEI( VkPhysicalDeviceSubpassShadingFeaturesHUAWEI const & rhs )
62427       VULKAN_HPP_NOEXCEPT
62428       : PhysicalDeviceSubpassShadingFeaturesHUAWEI(
62429           *reinterpret_cast<PhysicalDeviceSubpassShadingFeaturesHUAWEI const *>( &rhs ) )
62430     {}
62431 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
62432 
62433     PhysicalDeviceSubpassShadingFeaturesHUAWEI &
62434       operator=( PhysicalDeviceSubpassShadingFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62435 
62436     PhysicalDeviceSubpassShadingFeaturesHUAWEI &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI62437       operator=( VkPhysicalDeviceSubpassShadingFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT
62438     {
62439       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI const *>( &rhs );
62440       return *this;
62441     }
62442 
62443 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI62444     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubpassShadingFeaturesHUAWEI & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
62445     {
62446       pNext = pNext_;
62447       return *this;
62448     }
62449 
62450     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubpassShadingFeaturesHUAWEI &
setSubpassShadingVULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI62451                             setSubpassShading( VULKAN_HPP_NAMESPACE::Bool32 subpassShading_ ) VULKAN_HPP_NOEXCEPT
62452     {
62453       subpassShading = subpassShading_;
62454       return *this;
62455     }
62456 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
62457 
operator VkPhysicalDeviceSubpassShadingFeaturesHUAWEI const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI62458     explicit operator VkPhysicalDeviceSubpassShadingFeaturesHUAWEI const &() const VULKAN_HPP_NOEXCEPT
62459     {
62460       return *reinterpret_cast<const VkPhysicalDeviceSubpassShadingFeaturesHUAWEI *>( this );
62461     }
62462 
operator VkPhysicalDeviceSubpassShadingFeaturesHUAWEI&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI62463     explicit operator VkPhysicalDeviceSubpassShadingFeaturesHUAWEI &() VULKAN_HPP_NOEXCEPT
62464     {
62465       return *reinterpret_cast<VkPhysicalDeviceSubpassShadingFeaturesHUAWEI *>( this );
62466     }
62467 
62468 #if 14 <= VULKAN_HPP_CPP_VERSION
62469     auto
62470 #else
62471     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
62472 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI62473       reflect() const VULKAN_HPP_NOEXCEPT
62474     {
62475       return std::tie( sType, pNext, subpassShading );
62476     }
62477 
62478 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
62479     auto operator<=>( PhysicalDeviceSubpassShadingFeaturesHUAWEI const & ) const = default;
62480 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI62481     bool operator==( PhysicalDeviceSubpassShadingFeaturesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
62482     {
62483       return this->reflect() == rhs.reflect();
62484     }
62485 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI62486     bool operator!=( PhysicalDeviceSubpassShadingFeaturesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
62487     {
62488       return this->reflect() != rhs.reflect();
62489     }
62490 #endif
62491 
62492   public:
62493     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::ePhysicalDeviceSubpassShadingFeaturesHUAWEI;
62494     void *                              pNext          = {};
62495     VULKAN_HPP_NAMESPACE::Bool32        subpassShading = {};
62496   };
62497   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI ) ==
62498                               sizeof( VkPhysicalDeviceSubpassShadingFeaturesHUAWEI ),
62499                             "struct and wrapper have different size!" );
62500   VULKAN_HPP_STATIC_ASSERT(
62501     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI>::value,
62502     "struct wrapper is not a standard layout!" );
62503   VULKAN_HPP_STATIC_ASSERT(
62504     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI>::value,
62505     "PhysicalDeviceSubpassShadingFeaturesHUAWEI is not nothrow_move_constructible!" );
62506 
62507   template <>
62508   struct CppType<StructureType, StructureType::ePhysicalDeviceSubpassShadingFeaturesHUAWEI>
62509   {
62510     using Type = PhysicalDeviceSubpassShadingFeaturesHUAWEI;
62511   };
62512 
62513   struct PhysicalDeviceSubpassShadingPropertiesHUAWEI
62514   {
62515     using NativeType = VkPhysicalDeviceSubpassShadingPropertiesHUAWEI;
62516 
62517     static const bool                                  allowDuplicate = false;
62518     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
62519       StructureType::ePhysicalDeviceSubpassShadingPropertiesHUAWEI;
62520 
62521 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSubpassShadingPropertiesHUAWEIVULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingPropertiesHUAWEI62522     VULKAN_HPP_CONSTEXPR PhysicalDeviceSubpassShadingPropertiesHUAWEI(
62523       uint32_t maxSubpassShadingWorkgroupSizeAspectRatio_ = {} ) VULKAN_HPP_NOEXCEPT
62524       : maxSubpassShadingWorkgroupSizeAspectRatio( maxSubpassShadingWorkgroupSizeAspectRatio_ )
62525     {}
62526 
62527     VULKAN_HPP_CONSTEXPR PhysicalDeviceSubpassShadingPropertiesHUAWEI(
62528       PhysicalDeviceSubpassShadingPropertiesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62529 
PhysicalDeviceSubpassShadingPropertiesHUAWEIVULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingPropertiesHUAWEI62530     PhysicalDeviceSubpassShadingPropertiesHUAWEI( VkPhysicalDeviceSubpassShadingPropertiesHUAWEI const & rhs )
62531       VULKAN_HPP_NOEXCEPT
62532       : PhysicalDeviceSubpassShadingPropertiesHUAWEI(
62533           *reinterpret_cast<PhysicalDeviceSubpassShadingPropertiesHUAWEI const *>( &rhs ) )
62534     {}
62535 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
62536 
62537     PhysicalDeviceSubpassShadingPropertiesHUAWEI &
62538       operator=( PhysicalDeviceSubpassShadingPropertiesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62539 
62540     PhysicalDeviceSubpassShadingPropertiesHUAWEI &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingPropertiesHUAWEI62541       operator=( VkPhysicalDeviceSubpassShadingPropertiesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT
62542     {
62543       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingPropertiesHUAWEI const *>( &rhs );
62544       return *this;
62545     }
62546 
operator VkPhysicalDeviceSubpassShadingPropertiesHUAWEI const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingPropertiesHUAWEI62547     explicit operator VkPhysicalDeviceSubpassShadingPropertiesHUAWEI const &() const VULKAN_HPP_NOEXCEPT
62548     {
62549       return *reinterpret_cast<const VkPhysicalDeviceSubpassShadingPropertiesHUAWEI *>( this );
62550     }
62551 
operator VkPhysicalDeviceSubpassShadingPropertiesHUAWEI&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingPropertiesHUAWEI62552     explicit operator VkPhysicalDeviceSubpassShadingPropertiesHUAWEI &() VULKAN_HPP_NOEXCEPT
62553     {
62554       return *reinterpret_cast<VkPhysicalDeviceSubpassShadingPropertiesHUAWEI *>( this );
62555     }
62556 
62557 #if 14 <= VULKAN_HPP_CPP_VERSION
62558     auto
62559 #else
62560     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
62561 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingPropertiesHUAWEI62562       reflect() const VULKAN_HPP_NOEXCEPT
62563     {
62564       return std::tie( sType, pNext, maxSubpassShadingWorkgroupSizeAspectRatio );
62565     }
62566 
62567 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
62568     auto operator<=>( PhysicalDeviceSubpassShadingPropertiesHUAWEI const & ) const = default;
62569 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingPropertiesHUAWEI62570     bool operator==( PhysicalDeviceSubpassShadingPropertiesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
62571     {
62572       return this->reflect() == rhs.reflect();
62573     }
62574 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingPropertiesHUAWEI62575     bool operator!=( PhysicalDeviceSubpassShadingPropertiesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
62576     {
62577       return this->reflect() != rhs.reflect();
62578     }
62579 #endif
62580 
62581   public:
62582     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSubpassShadingPropertiesHUAWEI;
62583     void *                              pNext = {};
62584     uint32_t                            maxSubpassShadingWorkgroupSizeAspectRatio = {};
62585   };
62586   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingPropertiesHUAWEI ) ==
62587                               sizeof( VkPhysicalDeviceSubpassShadingPropertiesHUAWEI ),
62588                             "struct and wrapper have different size!" );
62589   VULKAN_HPP_STATIC_ASSERT(
62590     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingPropertiesHUAWEI>::value,
62591     "struct wrapper is not a standard layout!" );
62592   VULKAN_HPP_STATIC_ASSERT(
62593     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingPropertiesHUAWEI>::value,
62594     "PhysicalDeviceSubpassShadingPropertiesHUAWEI is not nothrow_move_constructible!" );
62595 
62596   template <>
62597   struct CppType<StructureType, StructureType::ePhysicalDeviceSubpassShadingPropertiesHUAWEI>
62598   {
62599     using Type = PhysicalDeviceSubpassShadingPropertiesHUAWEI;
62600   };
62601 
62602   struct PhysicalDeviceSurfaceInfo2KHR
62603   {
62604     using NativeType = VkPhysicalDeviceSurfaceInfo2KHR;
62605 
62606     static const bool                                  allowDuplicate = false;
62607     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceSurfaceInfo2KHR;
62608 
62609 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
62610     VULKAN_HPP_CONSTEXPR
PhysicalDeviceSurfaceInfo2KHRVULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR62611       PhysicalDeviceSurfaceInfo2KHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface_ = {} ) VULKAN_HPP_NOEXCEPT
62612       : surface( surface_ )
62613     {}
62614 
62615     VULKAN_HPP_CONSTEXPR
62616       PhysicalDeviceSurfaceInfo2KHR( PhysicalDeviceSurfaceInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62617 
PhysicalDeviceSurfaceInfo2KHRVULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR62618     PhysicalDeviceSurfaceInfo2KHR( VkPhysicalDeviceSurfaceInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
62619       : PhysicalDeviceSurfaceInfo2KHR( *reinterpret_cast<PhysicalDeviceSurfaceInfo2KHR const *>( &rhs ) )
62620     {}
62621 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
62622 
62623     PhysicalDeviceSurfaceInfo2KHR &
62624       operator=( PhysicalDeviceSurfaceInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62625 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR62626     PhysicalDeviceSurfaceInfo2KHR & operator=( VkPhysicalDeviceSurfaceInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
62627     {
62628       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR const *>( &rhs );
62629       return *this;
62630     }
62631 
62632 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR62633     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSurfaceInfo2KHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
62634     {
62635       pNext = pNext_;
62636       return *this;
62637     }
62638 
62639     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSurfaceInfo2KHR &
setSurfaceVULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR62640                             setSurface( VULKAN_HPP_NAMESPACE::SurfaceKHR surface_ ) VULKAN_HPP_NOEXCEPT
62641     {
62642       surface = surface_;
62643       return *this;
62644     }
62645 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
62646 
operator VkPhysicalDeviceSurfaceInfo2KHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR62647     explicit operator VkPhysicalDeviceSurfaceInfo2KHR const &() const VULKAN_HPP_NOEXCEPT
62648     {
62649       return *reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR *>( this );
62650     }
62651 
operator VkPhysicalDeviceSurfaceInfo2KHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR62652     explicit operator VkPhysicalDeviceSurfaceInfo2KHR &() VULKAN_HPP_NOEXCEPT
62653     {
62654       return *reinterpret_cast<VkPhysicalDeviceSurfaceInfo2KHR *>( this );
62655     }
62656 
62657 #if 14 <= VULKAN_HPP_CPP_VERSION
62658     auto
62659 #else
62660     std::
62661       tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SurfaceKHR const &>
62662 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR62663       reflect() const VULKAN_HPP_NOEXCEPT
62664     {
62665       return std::tie( sType, pNext, surface );
62666     }
62667 
62668 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
62669     auto operator<=>( PhysicalDeviceSurfaceInfo2KHR const & ) const = default;
62670 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR62671     bool operator==( PhysicalDeviceSurfaceInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
62672     {
62673       return this->reflect() == rhs.reflect();
62674     }
62675 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR62676     bool operator!=( PhysicalDeviceSurfaceInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
62677     {
62678       return this->reflect() != rhs.reflect();
62679     }
62680 #endif
62681 
62682   public:
62683     VULKAN_HPP_NAMESPACE::StructureType sType   = StructureType::ePhysicalDeviceSurfaceInfo2KHR;
62684     const void *                        pNext   = {};
62685     VULKAN_HPP_NAMESPACE::SurfaceKHR    surface = {};
62686   };
62687   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR ) ==
62688                               sizeof( VkPhysicalDeviceSurfaceInfo2KHR ),
62689                             "struct and wrapper have different size!" );
62690   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR>::value,
62691                             "struct wrapper is not a standard layout!" );
62692   VULKAN_HPP_STATIC_ASSERT(
62693     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR>::value,
62694     "PhysicalDeviceSurfaceInfo2KHR is not nothrow_move_constructible!" );
62695 
62696   template <>
62697   struct CppType<StructureType, StructureType::ePhysicalDeviceSurfaceInfo2KHR>
62698   {
62699     using Type = PhysicalDeviceSurfaceInfo2KHR;
62700   };
62701 
62702   struct PhysicalDeviceSynchronization2FeaturesKHR
62703   {
62704     using NativeType = VkPhysicalDeviceSynchronization2FeaturesKHR;
62705 
62706     static const bool                                  allowDuplicate = false;
62707     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
62708       StructureType::ePhysicalDeviceSynchronization2FeaturesKHR;
62709 
62710 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSynchronization2FeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2FeaturesKHR62711     VULKAN_HPP_CONSTEXPR PhysicalDeviceSynchronization2FeaturesKHR(
62712       VULKAN_HPP_NAMESPACE::Bool32 synchronization2_ = {} ) VULKAN_HPP_NOEXCEPT : synchronization2( synchronization2_ )
62713     {}
62714 
62715     VULKAN_HPP_CONSTEXPR PhysicalDeviceSynchronization2FeaturesKHR(
62716       PhysicalDeviceSynchronization2FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62717 
PhysicalDeviceSynchronization2FeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2FeaturesKHR62718     PhysicalDeviceSynchronization2FeaturesKHR( VkPhysicalDeviceSynchronization2FeaturesKHR const & rhs )
62719       VULKAN_HPP_NOEXCEPT
62720       : PhysicalDeviceSynchronization2FeaturesKHR(
62721           *reinterpret_cast<PhysicalDeviceSynchronization2FeaturesKHR const *>( &rhs ) )
62722     {}
62723 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
62724 
62725     PhysicalDeviceSynchronization2FeaturesKHR &
62726       operator=( PhysicalDeviceSynchronization2FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62727 
62728     PhysicalDeviceSynchronization2FeaturesKHR &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2FeaturesKHR62729       operator=( VkPhysicalDeviceSynchronization2FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
62730     {
62731       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2FeaturesKHR const *>( &rhs );
62732       return *this;
62733     }
62734 
62735 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2FeaturesKHR62736     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSynchronization2FeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
62737     {
62738       pNext = pNext_;
62739       return *this;
62740     }
62741 
62742     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSynchronization2FeaturesKHR &
setSynchronization2VULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2FeaturesKHR62743                             setSynchronization2( VULKAN_HPP_NAMESPACE::Bool32 synchronization2_ ) VULKAN_HPP_NOEXCEPT
62744     {
62745       synchronization2 = synchronization2_;
62746       return *this;
62747     }
62748 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
62749 
operator VkPhysicalDeviceSynchronization2FeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2FeaturesKHR62750     explicit operator VkPhysicalDeviceSynchronization2FeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
62751     {
62752       return *reinterpret_cast<const VkPhysicalDeviceSynchronization2FeaturesKHR *>( this );
62753     }
62754 
operator VkPhysicalDeviceSynchronization2FeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2FeaturesKHR62755     explicit operator VkPhysicalDeviceSynchronization2FeaturesKHR &() VULKAN_HPP_NOEXCEPT
62756     {
62757       return *reinterpret_cast<VkPhysicalDeviceSynchronization2FeaturesKHR *>( this );
62758     }
62759 
62760 #if 14 <= VULKAN_HPP_CPP_VERSION
62761     auto
62762 #else
62763     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
62764 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2FeaturesKHR62765       reflect() const VULKAN_HPP_NOEXCEPT
62766     {
62767       return std::tie( sType, pNext, synchronization2 );
62768     }
62769 
62770 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
62771     auto operator<=>( PhysicalDeviceSynchronization2FeaturesKHR const & ) const = default;
62772 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2FeaturesKHR62773     bool operator==( PhysicalDeviceSynchronization2FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
62774     {
62775       return this->reflect() == rhs.reflect();
62776     }
62777 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2FeaturesKHR62778     bool operator!=( PhysicalDeviceSynchronization2FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
62779     {
62780       return this->reflect() != rhs.reflect();
62781     }
62782 #endif
62783 
62784   public:
62785     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::ePhysicalDeviceSynchronization2FeaturesKHR;
62786     void *                              pNext            = {};
62787     VULKAN_HPP_NAMESPACE::Bool32        synchronization2 = {};
62788   };
62789   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2FeaturesKHR ) ==
62790                               sizeof( VkPhysicalDeviceSynchronization2FeaturesKHR ),
62791                             "struct and wrapper have different size!" );
62792   VULKAN_HPP_STATIC_ASSERT(
62793     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2FeaturesKHR>::value,
62794     "struct wrapper is not a standard layout!" );
62795   VULKAN_HPP_STATIC_ASSERT(
62796     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2FeaturesKHR>::value,
62797     "PhysicalDeviceSynchronization2FeaturesKHR is not nothrow_move_constructible!" );
62798 
62799   template <>
62800   struct CppType<StructureType, StructureType::ePhysicalDeviceSynchronization2FeaturesKHR>
62801   {
62802     using Type = PhysicalDeviceSynchronization2FeaturesKHR;
62803   };
62804 
62805   struct PhysicalDeviceTexelBufferAlignmentFeaturesEXT
62806   {
62807     using NativeType = VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT;
62808 
62809     static const bool                                  allowDuplicate = false;
62810     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
62811       StructureType::ePhysicalDeviceTexelBufferAlignmentFeaturesEXT;
62812 
62813 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceTexelBufferAlignmentFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT62814     VULKAN_HPP_CONSTEXPR PhysicalDeviceTexelBufferAlignmentFeaturesEXT(
62815       VULKAN_HPP_NAMESPACE::Bool32 texelBufferAlignment_ = {} ) VULKAN_HPP_NOEXCEPT
62816       : texelBufferAlignment( texelBufferAlignment_ )
62817     {}
62818 
62819     VULKAN_HPP_CONSTEXPR PhysicalDeviceTexelBufferAlignmentFeaturesEXT(
62820       PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62821 
PhysicalDeviceTexelBufferAlignmentFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT62822     PhysicalDeviceTexelBufferAlignmentFeaturesEXT( VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs )
62823       VULKAN_HPP_NOEXCEPT
62824       : PhysicalDeviceTexelBufferAlignmentFeaturesEXT(
62825           *reinterpret_cast<PhysicalDeviceTexelBufferAlignmentFeaturesEXT const *>( &rhs ) )
62826     {}
62827 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
62828 
62829     PhysicalDeviceTexelBufferAlignmentFeaturesEXT &
62830       operator=( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62831 
62832     PhysicalDeviceTexelBufferAlignmentFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT62833       operator=( VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
62834     {
62835       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT const *>( &rhs );
62836       return *this;
62837     }
62838 
62839 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
62840     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTexelBufferAlignmentFeaturesEXT &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT62841                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
62842     {
62843       pNext = pNext_;
62844       return *this;
62845     }
62846 
62847     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTexelBufferAlignmentFeaturesEXT &
setTexelBufferAlignmentVULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT62848       setTexelBufferAlignment( VULKAN_HPP_NAMESPACE::Bool32 texelBufferAlignment_ ) VULKAN_HPP_NOEXCEPT
62849     {
62850       texelBufferAlignment = texelBufferAlignment_;
62851       return *this;
62852     }
62853 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
62854 
operator VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT62855     explicit operator VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
62856     {
62857       return *reinterpret_cast<const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT *>( this );
62858     }
62859 
operator VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT62860     explicit operator VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT &() VULKAN_HPP_NOEXCEPT
62861     {
62862       return *reinterpret_cast<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT *>( this );
62863     }
62864 
62865 #if 14 <= VULKAN_HPP_CPP_VERSION
62866     auto
62867 #else
62868     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
62869 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT62870       reflect() const VULKAN_HPP_NOEXCEPT
62871     {
62872       return std::tie( sType, pNext, texelBufferAlignment );
62873     }
62874 
62875 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
62876     auto operator<=>( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & ) const = default;
62877 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT62878     bool operator==( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
62879     {
62880       return this->reflect() == rhs.reflect();
62881     }
62882 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT62883     bool operator!=( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
62884     {
62885       return this->reflect() != rhs.reflect();
62886     }
62887 #endif
62888 
62889   public:
62890     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTexelBufferAlignmentFeaturesEXT;
62891     void *                              pNext = {};
62892     VULKAN_HPP_NAMESPACE::Bool32        texelBufferAlignment = {};
62893   };
62894   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT ) ==
62895                               sizeof( VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT ),
62896                             "struct and wrapper have different size!" );
62897   VULKAN_HPP_STATIC_ASSERT(
62898     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT>::value,
62899     "struct wrapper is not a standard layout!" );
62900   VULKAN_HPP_STATIC_ASSERT(
62901     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT>::value,
62902     "PhysicalDeviceTexelBufferAlignmentFeaturesEXT is not nothrow_move_constructible!" );
62903 
62904   template <>
62905   struct CppType<StructureType, StructureType::ePhysicalDeviceTexelBufferAlignmentFeaturesEXT>
62906   {
62907     using Type = PhysicalDeviceTexelBufferAlignmentFeaturesEXT;
62908   };
62909 
62910   struct PhysicalDeviceTexelBufferAlignmentPropertiesEXT
62911   {
62912     using NativeType = VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT;
62913 
62914     static const bool                                  allowDuplicate = false;
62915     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
62916       StructureType::ePhysicalDeviceTexelBufferAlignmentPropertiesEXT;
62917 
62918 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceTexelBufferAlignmentPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentPropertiesEXT62919     VULKAN_HPP_CONSTEXPR PhysicalDeviceTexelBufferAlignmentPropertiesEXT(
62920       VULKAN_HPP_NAMESPACE::DeviceSize storageTexelBufferOffsetAlignmentBytes_       = {},
62921       VULKAN_HPP_NAMESPACE::Bool32     storageTexelBufferOffsetSingleTexelAlignment_ = {},
62922       VULKAN_HPP_NAMESPACE::DeviceSize uniformTexelBufferOffsetAlignmentBytes_       = {},
62923       VULKAN_HPP_NAMESPACE::Bool32     uniformTexelBufferOffsetSingleTexelAlignment_ = {} ) VULKAN_HPP_NOEXCEPT
62924       : storageTexelBufferOffsetAlignmentBytes( storageTexelBufferOffsetAlignmentBytes_ )
62925       , storageTexelBufferOffsetSingleTexelAlignment( storageTexelBufferOffsetSingleTexelAlignment_ )
62926       , uniformTexelBufferOffsetAlignmentBytes( uniformTexelBufferOffsetAlignmentBytes_ )
62927       , uniformTexelBufferOffsetSingleTexelAlignment( uniformTexelBufferOffsetSingleTexelAlignment_ )
62928     {}
62929 
62930     VULKAN_HPP_CONSTEXPR PhysicalDeviceTexelBufferAlignmentPropertiesEXT(
62931       PhysicalDeviceTexelBufferAlignmentPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62932 
PhysicalDeviceTexelBufferAlignmentPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentPropertiesEXT62933     PhysicalDeviceTexelBufferAlignmentPropertiesEXT( VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT const & rhs )
62934       VULKAN_HPP_NOEXCEPT
62935       : PhysicalDeviceTexelBufferAlignmentPropertiesEXT(
62936           *reinterpret_cast<PhysicalDeviceTexelBufferAlignmentPropertiesEXT const *>( &rhs ) )
62937     {}
62938 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
62939 
62940     PhysicalDeviceTexelBufferAlignmentPropertiesEXT &
62941       operator=( PhysicalDeviceTexelBufferAlignmentPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62942 
62943     PhysicalDeviceTexelBufferAlignmentPropertiesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentPropertiesEXT62944       operator=( VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
62945     {
62946       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentPropertiesEXT const *>( &rhs );
62947       return *this;
62948     }
62949 
operator VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentPropertiesEXT62950     explicit operator VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
62951     {
62952       return *reinterpret_cast<const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT *>( this );
62953     }
62954 
operator VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentPropertiesEXT62955     explicit operator VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT &() VULKAN_HPP_NOEXCEPT
62956     {
62957       return *reinterpret_cast<VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT *>( this );
62958     }
62959 
62960 #if 14 <= VULKAN_HPP_CPP_VERSION
62961     auto
62962 #else
62963     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
62964                void * const &,
62965                VULKAN_HPP_NAMESPACE::DeviceSize const &,
62966                VULKAN_HPP_NAMESPACE::Bool32 const &,
62967                VULKAN_HPP_NAMESPACE::DeviceSize const &,
62968                VULKAN_HPP_NAMESPACE::Bool32 const &>
62969 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentPropertiesEXT62970       reflect() const VULKAN_HPP_NOEXCEPT
62971     {
62972       return std::tie( sType,
62973                        pNext,
62974                        storageTexelBufferOffsetAlignmentBytes,
62975                        storageTexelBufferOffsetSingleTexelAlignment,
62976                        uniformTexelBufferOffsetAlignmentBytes,
62977                        uniformTexelBufferOffsetSingleTexelAlignment );
62978     }
62979 
62980 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
62981     auto operator<=>( PhysicalDeviceTexelBufferAlignmentPropertiesEXT const & ) const = default;
62982 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentPropertiesEXT62983     bool operator==( PhysicalDeviceTexelBufferAlignmentPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
62984     {
62985       return this->reflect() == rhs.reflect();
62986     }
62987 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentPropertiesEXT62988     bool operator!=( PhysicalDeviceTexelBufferAlignmentPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
62989     {
62990       return this->reflect() != rhs.reflect();
62991     }
62992 #endif
62993 
62994   public:
62995     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTexelBufferAlignmentPropertiesEXT;
62996     void *                              pNext = {};
62997     VULKAN_HPP_NAMESPACE::DeviceSize    storageTexelBufferOffsetAlignmentBytes       = {};
62998     VULKAN_HPP_NAMESPACE::Bool32        storageTexelBufferOffsetSingleTexelAlignment = {};
62999     VULKAN_HPP_NAMESPACE::DeviceSize    uniformTexelBufferOffsetAlignmentBytes       = {};
63000     VULKAN_HPP_NAMESPACE::Bool32        uniformTexelBufferOffsetSingleTexelAlignment = {};
63001   };
63002   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentPropertiesEXT ) ==
63003                               sizeof( VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT ),
63004                             "struct and wrapper have different size!" );
63005   VULKAN_HPP_STATIC_ASSERT(
63006     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentPropertiesEXT>::value,
63007     "struct wrapper is not a standard layout!" );
63008   VULKAN_HPP_STATIC_ASSERT(
63009     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentPropertiesEXT>::value,
63010     "PhysicalDeviceTexelBufferAlignmentPropertiesEXT is not nothrow_move_constructible!" );
63011 
63012   template <>
63013   struct CppType<StructureType, StructureType::ePhysicalDeviceTexelBufferAlignmentPropertiesEXT>
63014   {
63015     using Type = PhysicalDeviceTexelBufferAlignmentPropertiesEXT;
63016   };
63017 
63018   struct PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT
63019   {
63020     using NativeType = VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT;
63021 
63022     static const bool                                  allowDuplicate = false;
63023     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
63024       StructureType::ePhysicalDeviceTextureCompressionAstcHdrFeaturesEXT;
63025 
63026 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceTextureCompressionASTCHDRFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT63027     VULKAN_HPP_CONSTEXPR PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT(
63028       VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_HDR_ = {} ) VULKAN_HPP_NOEXCEPT
63029       : textureCompressionASTC_HDR( textureCompressionASTC_HDR_ )
63030     {}
63031 
63032     VULKAN_HPP_CONSTEXPR PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT(
63033       PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63034 
PhysicalDeviceTextureCompressionASTCHDRFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT63035     PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT(
63036       VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
63037       : PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT(
63038           *reinterpret_cast<PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const *>( &rhs ) )
63039     {}
63040 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
63041 
63042     PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT &
63043       operator=( PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63044 
63045     PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT63046       operator=( VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
63047     {
63048       *this =
63049         *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const *>( &rhs );
63050       return *this;
63051     }
63052 
63053 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
63054     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT63055                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
63056     {
63057       pNext = pNext_;
63058       return *this;
63059     }
63060 
63061     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT &
setTextureCompressionASTC_HDRVULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT63062       setTextureCompressionASTC_HDR( VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_HDR_ ) VULKAN_HPP_NOEXCEPT
63063     {
63064       textureCompressionASTC_HDR = textureCompressionASTC_HDR_;
63065       return *this;
63066     }
63067 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
63068 
operator VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT63069     explicit operator VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
63070     {
63071       return *reinterpret_cast<const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT *>( this );
63072     }
63073 
operator VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT63074     explicit operator VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT &() VULKAN_HPP_NOEXCEPT
63075     {
63076       return *reinterpret_cast<VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT *>( this );
63077     }
63078 
63079 #if 14 <= VULKAN_HPP_CPP_VERSION
63080     auto
63081 #else
63082     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
63083 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT63084       reflect() const VULKAN_HPP_NOEXCEPT
63085     {
63086       return std::tie( sType, pNext, textureCompressionASTC_HDR );
63087     }
63088 
63089 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
63090     auto operator<=>( PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const & ) const = default;
63091 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT63092     bool operator==( PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
63093     {
63094       return this->reflect() == rhs.reflect();
63095     }
63096 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT63097     bool operator!=( PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
63098     {
63099       return this->reflect() != rhs.reflect();
63100     }
63101 #endif
63102 
63103   public:
63104     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTextureCompressionAstcHdrFeaturesEXT;
63105     void *                              pNext = {};
63106     VULKAN_HPP_NAMESPACE::Bool32        textureCompressionASTC_HDR = {};
63107   };
63108   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT ) ==
63109                               sizeof( VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT ),
63110                             "struct and wrapper have different size!" );
63111   VULKAN_HPP_STATIC_ASSERT(
63112     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT>::value,
63113     "struct wrapper is not a standard layout!" );
63114   VULKAN_HPP_STATIC_ASSERT(
63115     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT>::value,
63116     "PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT is not nothrow_move_constructible!" );
63117 
63118   template <>
63119   struct CppType<StructureType, StructureType::ePhysicalDeviceTextureCompressionAstcHdrFeaturesEXT>
63120   {
63121     using Type = PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT;
63122   };
63123 
63124   struct PhysicalDeviceTimelineSemaphoreFeatures
63125   {
63126     using NativeType = VkPhysicalDeviceTimelineSemaphoreFeatures;
63127 
63128     static const bool                                  allowDuplicate = false;
63129     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
63130       StructureType::ePhysicalDeviceTimelineSemaphoreFeatures;
63131 
63132 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceTimelineSemaphoreFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures63133     VULKAN_HPP_CONSTEXPR PhysicalDeviceTimelineSemaphoreFeatures( VULKAN_HPP_NAMESPACE::Bool32 timelineSemaphore_ = {} )
63134       VULKAN_HPP_NOEXCEPT : timelineSemaphore( timelineSemaphore_ )
63135     {}
63136 
63137     VULKAN_HPP_CONSTEXPR PhysicalDeviceTimelineSemaphoreFeatures( PhysicalDeviceTimelineSemaphoreFeatures const & rhs )
63138       VULKAN_HPP_NOEXCEPT = default;
63139 
PhysicalDeviceTimelineSemaphoreFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures63140     PhysicalDeviceTimelineSemaphoreFeatures( VkPhysicalDeviceTimelineSemaphoreFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
63141       : PhysicalDeviceTimelineSemaphoreFeatures(
63142           *reinterpret_cast<PhysicalDeviceTimelineSemaphoreFeatures const *>( &rhs ) )
63143     {}
63144 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
63145 
63146     PhysicalDeviceTimelineSemaphoreFeatures &
63147       operator=( PhysicalDeviceTimelineSemaphoreFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63148 
63149     PhysicalDeviceTimelineSemaphoreFeatures &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures63150       operator=( VkPhysicalDeviceTimelineSemaphoreFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
63151     {
63152       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures const *>( &rhs );
63153       return *this;
63154     }
63155 
63156 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures63157     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTimelineSemaphoreFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
63158     {
63159       pNext = pNext_;
63160       return *this;
63161     }
63162 
63163     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTimelineSemaphoreFeatures &
setTimelineSemaphoreVULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures63164                             setTimelineSemaphore( VULKAN_HPP_NAMESPACE::Bool32 timelineSemaphore_ ) VULKAN_HPP_NOEXCEPT
63165     {
63166       timelineSemaphore = timelineSemaphore_;
63167       return *this;
63168     }
63169 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
63170 
operator VkPhysicalDeviceTimelineSemaphoreFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures63171     explicit operator VkPhysicalDeviceTimelineSemaphoreFeatures const &() const VULKAN_HPP_NOEXCEPT
63172     {
63173       return *reinterpret_cast<const VkPhysicalDeviceTimelineSemaphoreFeatures *>( this );
63174     }
63175 
operator VkPhysicalDeviceTimelineSemaphoreFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures63176     explicit operator VkPhysicalDeviceTimelineSemaphoreFeatures &() VULKAN_HPP_NOEXCEPT
63177     {
63178       return *reinterpret_cast<VkPhysicalDeviceTimelineSemaphoreFeatures *>( this );
63179     }
63180 
63181 #if 14 <= VULKAN_HPP_CPP_VERSION
63182     auto
63183 #else
63184     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
63185 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures63186       reflect() const VULKAN_HPP_NOEXCEPT
63187     {
63188       return std::tie( sType, pNext, timelineSemaphore );
63189     }
63190 
63191 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
63192     auto operator<=>( PhysicalDeviceTimelineSemaphoreFeatures const & ) const = default;
63193 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures63194     bool operator==( PhysicalDeviceTimelineSemaphoreFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
63195     {
63196       return this->reflect() == rhs.reflect();
63197     }
63198 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures63199     bool operator!=( PhysicalDeviceTimelineSemaphoreFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
63200     {
63201       return this->reflect() != rhs.reflect();
63202     }
63203 #endif
63204 
63205   public:
63206     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::ePhysicalDeviceTimelineSemaphoreFeatures;
63207     void *                              pNext             = {};
63208     VULKAN_HPP_NAMESPACE::Bool32        timelineSemaphore = {};
63209   };
63210   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures ) ==
63211                               sizeof( VkPhysicalDeviceTimelineSemaphoreFeatures ),
63212                             "struct and wrapper have different size!" );
63213   VULKAN_HPP_STATIC_ASSERT(
63214     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures>::value,
63215     "struct wrapper is not a standard layout!" );
63216   VULKAN_HPP_STATIC_ASSERT(
63217     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures>::value,
63218     "PhysicalDeviceTimelineSemaphoreFeatures is not nothrow_move_constructible!" );
63219 
63220   template <>
63221   struct CppType<StructureType, StructureType::ePhysicalDeviceTimelineSemaphoreFeatures>
63222   {
63223     using Type = PhysicalDeviceTimelineSemaphoreFeatures;
63224   };
63225   using PhysicalDeviceTimelineSemaphoreFeaturesKHR = PhysicalDeviceTimelineSemaphoreFeatures;
63226 
63227   struct PhysicalDeviceTimelineSemaphoreProperties
63228   {
63229     using NativeType = VkPhysicalDeviceTimelineSemaphoreProperties;
63230 
63231     static const bool                                  allowDuplicate = false;
63232     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
63233       StructureType::ePhysicalDeviceTimelineSemaphoreProperties;
63234 
63235 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceTimelineSemaphorePropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties63236     VULKAN_HPP_CONSTEXPR PhysicalDeviceTimelineSemaphoreProperties( uint64_t maxTimelineSemaphoreValueDifference_ = {} )
63237       VULKAN_HPP_NOEXCEPT : maxTimelineSemaphoreValueDifference( maxTimelineSemaphoreValueDifference_ )
63238     {}
63239 
63240     VULKAN_HPP_CONSTEXPR PhysicalDeviceTimelineSemaphoreProperties(
63241       PhysicalDeviceTimelineSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63242 
PhysicalDeviceTimelineSemaphorePropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties63243     PhysicalDeviceTimelineSemaphoreProperties( VkPhysicalDeviceTimelineSemaphoreProperties const & rhs )
63244       VULKAN_HPP_NOEXCEPT
63245       : PhysicalDeviceTimelineSemaphoreProperties(
63246           *reinterpret_cast<PhysicalDeviceTimelineSemaphoreProperties const *>( &rhs ) )
63247     {}
63248 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
63249 
63250     PhysicalDeviceTimelineSemaphoreProperties &
63251       operator=( PhysicalDeviceTimelineSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63252 
63253     PhysicalDeviceTimelineSemaphoreProperties &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties63254       operator=( VkPhysicalDeviceTimelineSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT
63255     {
63256       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties const *>( &rhs );
63257       return *this;
63258     }
63259 
operator VkPhysicalDeviceTimelineSemaphoreProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties63260     explicit operator VkPhysicalDeviceTimelineSemaphoreProperties const &() const VULKAN_HPP_NOEXCEPT
63261     {
63262       return *reinterpret_cast<const VkPhysicalDeviceTimelineSemaphoreProperties *>( this );
63263     }
63264 
operator VkPhysicalDeviceTimelineSemaphoreProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties63265     explicit operator VkPhysicalDeviceTimelineSemaphoreProperties &() VULKAN_HPP_NOEXCEPT
63266     {
63267       return *reinterpret_cast<VkPhysicalDeviceTimelineSemaphoreProperties *>( this );
63268     }
63269 
63270 #if 14 <= VULKAN_HPP_CPP_VERSION
63271     auto
63272 #else
63273     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint64_t const &>
63274 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties63275       reflect() const VULKAN_HPP_NOEXCEPT
63276     {
63277       return std::tie( sType, pNext, maxTimelineSemaphoreValueDifference );
63278     }
63279 
63280 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
63281     auto operator<=>( PhysicalDeviceTimelineSemaphoreProperties const & ) const = default;
63282 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties63283     bool operator==( PhysicalDeviceTimelineSemaphoreProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
63284     {
63285       return this->reflect() == rhs.reflect();
63286     }
63287 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties63288     bool operator!=( PhysicalDeviceTimelineSemaphoreProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
63289     {
63290       return this->reflect() != rhs.reflect();
63291     }
63292 #endif
63293 
63294   public:
63295     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTimelineSemaphoreProperties;
63296     void *                              pNext = {};
63297     uint64_t                            maxTimelineSemaphoreValueDifference = {};
63298   };
63299   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties ) ==
63300                               sizeof( VkPhysicalDeviceTimelineSemaphoreProperties ),
63301                             "struct and wrapper have different size!" );
63302   VULKAN_HPP_STATIC_ASSERT(
63303     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties>::value,
63304     "struct wrapper is not a standard layout!" );
63305   VULKAN_HPP_STATIC_ASSERT(
63306     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties>::value,
63307     "PhysicalDeviceTimelineSemaphoreProperties is not nothrow_move_constructible!" );
63308 
63309   template <>
63310   struct CppType<StructureType, StructureType::ePhysicalDeviceTimelineSemaphoreProperties>
63311   {
63312     using Type = PhysicalDeviceTimelineSemaphoreProperties;
63313   };
63314   using PhysicalDeviceTimelineSemaphorePropertiesKHR = PhysicalDeviceTimelineSemaphoreProperties;
63315 
63316   struct PhysicalDeviceToolPropertiesEXT
63317   {
63318     using NativeType = VkPhysicalDeviceToolPropertiesEXT;
63319 
63320     static const bool                                  allowDuplicate = false;
63321     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceToolPropertiesEXT;
63322 
63323 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceToolPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceToolPropertiesEXT63324     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceToolPropertiesEXT(
63325       std::array<char, VK_MAX_EXTENSION_NAME_SIZE> const & name_        = {},
63326       std::array<char, VK_MAX_EXTENSION_NAME_SIZE> const & version_     = {},
63327       VULKAN_HPP_NAMESPACE::ToolPurposeFlagsEXT            purposes_    = {},
63328       std::array<char, VK_MAX_DESCRIPTION_SIZE> const &    description_ = {},
63329       std::array<char, VK_MAX_EXTENSION_NAME_SIZE> const & layer_       = {} ) VULKAN_HPP_NOEXCEPT
63330       : name( name_ )
63331       , version( version_ )
63332       , purposes( purposes_ )
63333       , description( description_ )
63334       , layer( layer_ )
63335     {}
63336 
63337     VULKAN_HPP_CONSTEXPR_14
63338       PhysicalDeviceToolPropertiesEXT( PhysicalDeviceToolPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63339 
PhysicalDeviceToolPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceToolPropertiesEXT63340     PhysicalDeviceToolPropertiesEXT( VkPhysicalDeviceToolPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
63341       : PhysicalDeviceToolPropertiesEXT( *reinterpret_cast<PhysicalDeviceToolPropertiesEXT const *>( &rhs ) )
63342     {}
63343 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
63344 
63345     PhysicalDeviceToolPropertiesEXT &
63346       operator=( PhysicalDeviceToolPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63347 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceToolPropertiesEXT63348     PhysicalDeviceToolPropertiesEXT & operator=( VkPhysicalDeviceToolPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
63349     {
63350       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceToolPropertiesEXT const *>( &rhs );
63351       return *this;
63352     }
63353 
operator VkPhysicalDeviceToolPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceToolPropertiesEXT63354     explicit operator VkPhysicalDeviceToolPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
63355     {
63356       return *reinterpret_cast<const VkPhysicalDeviceToolPropertiesEXT *>( this );
63357     }
63358 
operator VkPhysicalDeviceToolPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceToolPropertiesEXT63359     explicit operator VkPhysicalDeviceToolPropertiesEXT &() VULKAN_HPP_NOEXCEPT
63360     {
63361       return *reinterpret_cast<VkPhysicalDeviceToolPropertiesEXT *>( this );
63362     }
63363 
63364 #if 14 <= VULKAN_HPP_CPP_VERSION
63365     auto
63366 #else
63367     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
63368                void * const &,
63369                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> const &,
63370                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> const &,
63371                VULKAN_HPP_NAMESPACE::ToolPurposeFlagsEXT const &,
63372                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &,
63373                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> const &>
63374 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceToolPropertiesEXT63375       reflect() const VULKAN_HPP_NOEXCEPT
63376     {
63377       return std::tie( sType, pNext, name, version, purposes, description, layer );
63378     }
63379 
63380 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
63381     auto operator<=>( PhysicalDeviceToolPropertiesEXT const & ) const = default;
63382 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceToolPropertiesEXT63383     bool operator==( PhysicalDeviceToolPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
63384     {
63385       return this->reflect() == rhs.reflect();
63386     }
63387 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceToolPropertiesEXT63388     bool operator!=( PhysicalDeviceToolPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
63389     {
63390       return this->reflect() != rhs.reflect();
63391     }
63392 #endif
63393 
63394   public:
63395     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceToolPropertiesEXT;
63396     void *                              pNext = {};
63397     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> name        = {};
63398     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> version     = {};
63399     VULKAN_HPP_NAMESPACE::ToolPurposeFlagsEXT                              purposes    = {};
63400     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE>    description = {};
63401     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> layer       = {};
63402   };
63403   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceToolPropertiesEXT ) ==
63404                               sizeof( VkPhysicalDeviceToolPropertiesEXT ),
63405                             "struct and wrapper have different size!" );
63406   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceToolPropertiesEXT>::value,
63407                             "struct wrapper is not a standard layout!" );
63408   VULKAN_HPP_STATIC_ASSERT(
63409     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceToolPropertiesEXT>::value,
63410     "PhysicalDeviceToolPropertiesEXT is not nothrow_move_constructible!" );
63411 
63412   template <>
63413   struct CppType<StructureType, StructureType::ePhysicalDeviceToolPropertiesEXT>
63414   {
63415     using Type = PhysicalDeviceToolPropertiesEXT;
63416   };
63417 
63418   struct PhysicalDeviceTransformFeedbackFeaturesEXT
63419   {
63420     using NativeType = VkPhysicalDeviceTransformFeedbackFeaturesEXT;
63421 
63422     static const bool                                  allowDuplicate = false;
63423     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
63424       StructureType::ePhysicalDeviceTransformFeedbackFeaturesEXT;
63425 
63426 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceTransformFeedbackFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT63427     VULKAN_HPP_CONSTEXPR PhysicalDeviceTransformFeedbackFeaturesEXT(
63428       VULKAN_HPP_NAMESPACE::Bool32 transformFeedback_ = {},
63429       VULKAN_HPP_NAMESPACE::Bool32 geometryStreams_   = {} ) VULKAN_HPP_NOEXCEPT
63430       : transformFeedback( transformFeedback_ )
63431       , geometryStreams( geometryStreams_ )
63432     {}
63433 
63434     VULKAN_HPP_CONSTEXPR PhysicalDeviceTransformFeedbackFeaturesEXT(
63435       PhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63436 
PhysicalDeviceTransformFeedbackFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT63437     PhysicalDeviceTransformFeedbackFeaturesEXT( VkPhysicalDeviceTransformFeedbackFeaturesEXT const & rhs )
63438       VULKAN_HPP_NOEXCEPT
63439       : PhysicalDeviceTransformFeedbackFeaturesEXT(
63440           *reinterpret_cast<PhysicalDeviceTransformFeedbackFeaturesEXT const *>( &rhs ) )
63441     {}
63442 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
63443 
63444     PhysicalDeviceTransformFeedbackFeaturesEXT &
63445       operator=( PhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63446 
63447     PhysicalDeviceTransformFeedbackFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT63448       operator=( VkPhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
63449     {
63450       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT const *>( &rhs );
63451       return *this;
63452     }
63453 
63454 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT63455     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTransformFeedbackFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
63456     {
63457       pNext = pNext_;
63458       return *this;
63459     }
63460 
63461     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTransformFeedbackFeaturesEXT &
setTransformFeedbackVULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT63462                             setTransformFeedback( VULKAN_HPP_NAMESPACE::Bool32 transformFeedback_ ) VULKAN_HPP_NOEXCEPT
63463     {
63464       transformFeedback = transformFeedback_;
63465       return *this;
63466     }
63467 
63468     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTransformFeedbackFeaturesEXT &
setGeometryStreamsVULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT63469                             setGeometryStreams( VULKAN_HPP_NAMESPACE::Bool32 geometryStreams_ ) VULKAN_HPP_NOEXCEPT
63470     {
63471       geometryStreams = geometryStreams_;
63472       return *this;
63473     }
63474 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
63475 
operator VkPhysicalDeviceTransformFeedbackFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT63476     explicit operator VkPhysicalDeviceTransformFeedbackFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
63477     {
63478       return *reinterpret_cast<const VkPhysicalDeviceTransformFeedbackFeaturesEXT *>( this );
63479     }
63480 
operator VkPhysicalDeviceTransformFeedbackFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT63481     explicit operator VkPhysicalDeviceTransformFeedbackFeaturesEXT &() VULKAN_HPP_NOEXCEPT
63482     {
63483       return *reinterpret_cast<VkPhysicalDeviceTransformFeedbackFeaturesEXT *>( this );
63484     }
63485 
63486 #if 14 <= VULKAN_HPP_CPP_VERSION
63487     auto
63488 #else
63489     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
63490                void * const &,
63491                VULKAN_HPP_NAMESPACE::Bool32 const &,
63492                VULKAN_HPP_NAMESPACE::Bool32 const &>
63493 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT63494       reflect() const VULKAN_HPP_NOEXCEPT
63495     {
63496       return std::tie( sType, pNext, transformFeedback, geometryStreams );
63497     }
63498 
63499 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
63500     auto operator<=>( PhysicalDeviceTransformFeedbackFeaturesEXT const & ) const = default;
63501 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT63502     bool operator==( PhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
63503     {
63504       return this->reflect() == rhs.reflect();
63505     }
63506 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT63507     bool operator!=( PhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
63508     {
63509       return this->reflect() != rhs.reflect();
63510     }
63511 #endif
63512 
63513   public:
63514     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::ePhysicalDeviceTransformFeedbackFeaturesEXT;
63515     void *                              pNext             = {};
63516     VULKAN_HPP_NAMESPACE::Bool32        transformFeedback = {};
63517     VULKAN_HPP_NAMESPACE::Bool32        geometryStreams   = {};
63518   };
63519   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT ) ==
63520                               sizeof( VkPhysicalDeviceTransformFeedbackFeaturesEXT ),
63521                             "struct and wrapper have different size!" );
63522   VULKAN_HPP_STATIC_ASSERT(
63523     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT>::value,
63524     "struct wrapper is not a standard layout!" );
63525   VULKAN_HPP_STATIC_ASSERT(
63526     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT>::value,
63527     "PhysicalDeviceTransformFeedbackFeaturesEXT is not nothrow_move_constructible!" );
63528 
63529   template <>
63530   struct CppType<StructureType, StructureType::ePhysicalDeviceTransformFeedbackFeaturesEXT>
63531   {
63532     using Type = PhysicalDeviceTransformFeedbackFeaturesEXT;
63533   };
63534 
63535   struct PhysicalDeviceTransformFeedbackPropertiesEXT
63536   {
63537     using NativeType = VkPhysicalDeviceTransformFeedbackPropertiesEXT;
63538 
63539     static const bool                                  allowDuplicate = false;
63540     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
63541       StructureType::ePhysicalDeviceTransformFeedbackPropertiesEXT;
63542 
63543 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceTransformFeedbackPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackPropertiesEXT63544     VULKAN_HPP_CONSTEXPR PhysicalDeviceTransformFeedbackPropertiesEXT(
63545       uint32_t                         maxTransformFeedbackStreams_                = {},
63546       uint32_t                         maxTransformFeedbackBuffers_                = {},
63547       VULKAN_HPP_NAMESPACE::DeviceSize maxTransformFeedbackBufferSize_             = {},
63548       uint32_t                         maxTransformFeedbackStreamDataSize_         = {},
63549       uint32_t                         maxTransformFeedbackBufferDataSize_         = {},
63550       uint32_t                         maxTransformFeedbackBufferDataStride_       = {},
63551       VULKAN_HPP_NAMESPACE::Bool32     transformFeedbackQueries_                   = {},
63552       VULKAN_HPP_NAMESPACE::Bool32     transformFeedbackStreamsLinesTriangles_     = {},
63553       VULKAN_HPP_NAMESPACE::Bool32     transformFeedbackRasterizationStreamSelect_ = {},
63554       VULKAN_HPP_NAMESPACE::Bool32     transformFeedbackDraw_                      = {} ) VULKAN_HPP_NOEXCEPT
63555       : maxTransformFeedbackStreams( maxTransformFeedbackStreams_ )
63556       , maxTransformFeedbackBuffers( maxTransformFeedbackBuffers_ )
63557       , maxTransformFeedbackBufferSize( maxTransformFeedbackBufferSize_ )
63558       , maxTransformFeedbackStreamDataSize( maxTransformFeedbackStreamDataSize_ )
63559       , maxTransformFeedbackBufferDataSize( maxTransformFeedbackBufferDataSize_ )
63560       , maxTransformFeedbackBufferDataStride( maxTransformFeedbackBufferDataStride_ )
63561       , transformFeedbackQueries( transformFeedbackQueries_ )
63562       , transformFeedbackStreamsLinesTriangles( transformFeedbackStreamsLinesTriangles_ )
63563       , transformFeedbackRasterizationStreamSelect( transformFeedbackRasterizationStreamSelect_ )
63564       , transformFeedbackDraw( transformFeedbackDraw_ )
63565     {}
63566 
63567     VULKAN_HPP_CONSTEXPR PhysicalDeviceTransformFeedbackPropertiesEXT(
63568       PhysicalDeviceTransformFeedbackPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63569 
PhysicalDeviceTransformFeedbackPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackPropertiesEXT63570     PhysicalDeviceTransformFeedbackPropertiesEXT( VkPhysicalDeviceTransformFeedbackPropertiesEXT const & rhs )
63571       VULKAN_HPP_NOEXCEPT
63572       : PhysicalDeviceTransformFeedbackPropertiesEXT(
63573           *reinterpret_cast<PhysicalDeviceTransformFeedbackPropertiesEXT const *>( &rhs ) )
63574     {}
63575 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
63576 
63577     PhysicalDeviceTransformFeedbackPropertiesEXT &
63578       operator=( PhysicalDeviceTransformFeedbackPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63579 
63580     PhysicalDeviceTransformFeedbackPropertiesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackPropertiesEXT63581       operator=( VkPhysicalDeviceTransformFeedbackPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
63582     {
63583       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackPropertiesEXT const *>( &rhs );
63584       return *this;
63585     }
63586 
operator VkPhysicalDeviceTransformFeedbackPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackPropertiesEXT63587     explicit operator VkPhysicalDeviceTransformFeedbackPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
63588     {
63589       return *reinterpret_cast<const VkPhysicalDeviceTransformFeedbackPropertiesEXT *>( this );
63590     }
63591 
operator VkPhysicalDeviceTransformFeedbackPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackPropertiesEXT63592     explicit operator VkPhysicalDeviceTransformFeedbackPropertiesEXT &() VULKAN_HPP_NOEXCEPT
63593     {
63594       return *reinterpret_cast<VkPhysicalDeviceTransformFeedbackPropertiesEXT *>( this );
63595     }
63596 
63597 #if 14 <= VULKAN_HPP_CPP_VERSION
63598     auto
63599 #else
63600     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
63601                void * const &,
63602                uint32_t const &,
63603                uint32_t const &,
63604                VULKAN_HPP_NAMESPACE::DeviceSize const &,
63605                uint32_t const &,
63606                uint32_t const &,
63607                uint32_t const &,
63608                VULKAN_HPP_NAMESPACE::Bool32 const &,
63609                VULKAN_HPP_NAMESPACE::Bool32 const &,
63610                VULKAN_HPP_NAMESPACE::Bool32 const &,
63611                VULKAN_HPP_NAMESPACE::Bool32 const &>
63612 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackPropertiesEXT63613       reflect() const VULKAN_HPP_NOEXCEPT
63614     {
63615       return std::tie( sType,
63616                        pNext,
63617                        maxTransformFeedbackStreams,
63618                        maxTransformFeedbackBuffers,
63619                        maxTransformFeedbackBufferSize,
63620                        maxTransformFeedbackStreamDataSize,
63621                        maxTransformFeedbackBufferDataSize,
63622                        maxTransformFeedbackBufferDataStride,
63623                        transformFeedbackQueries,
63624                        transformFeedbackStreamsLinesTriangles,
63625                        transformFeedbackRasterizationStreamSelect,
63626                        transformFeedbackDraw );
63627     }
63628 
63629 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
63630     auto operator<=>( PhysicalDeviceTransformFeedbackPropertiesEXT const & ) const = default;
63631 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackPropertiesEXT63632     bool operator==( PhysicalDeviceTransformFeedbackPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
63633     {
63634       return this->reflect() == rhs.reflect();
63635     }
63636 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackPropertiesEXT63637     bool operator!=( PhysicalDeviceTransformFeedbackPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
63638     {
63639       return this->reflect() != rhs.reflect();
63640     }
63641 #endif
63642 
63643   public:
63644     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTransformFeedbackPropertiesEXT;
63645     void *                              pNext = {};
63646     uint32_t                            maxTransformFeedbackStreams                = {};
63647     uint32_t                            maxTransformFeedbackBuffers                = {};
63648     VULKAN_HPP_NAMESPACE::DeviceSize    maxTransformFeedbackBufferSize             = {};
63649     uint32_t                            maxTransformFeedbackStreamDataSize         = {};
63650     uint32_t                            maxTransformFeedbackBufferDataSize         = {};
63651     uint32_t                            maxTransformFeedbackBufferDataStride       = {};
63652     VULKAN_HPP_NAMESPACE::Bool32        transformFeedbackQueries                   = {};
63653     VULKAN_HPP_NAMESPACE::Bool32        transformFeedbackStreamsLinesTriangles     = {};
63654     VULKAN_HPP_NAMESPACE::Bool32        transformFeedbackRasterizationStreamSelect = {};
63655     VULKAN_HPP_NAMESPACE::Bool32        transformFeedbackDraw                      = {};
63656   };
63657   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackPropertiesEXT ) ==
63658                               sizeof( VkPhysicalDeviceTransformFeedbackPropertiesEXT ),
63659                             "struct and wrapper have different size!" );
63660   VULKAN_HPP_STATIC_ASSERT(
63661     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackPropertiesEXT>::value,
63662     "struct wrapper is not a standard layout!" );
63663   VULKAN_HPP_STATIC_ASSERT(
63664     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackPropertiesEXT>::value,
63665     "PhysicalDeviceTransformFeedbackPropertiesEXT is not nothrow_move_constructible!" );
63666 
63667   template <>
63668   struct CppType<StructureType, StructureType::ePhysicalDeviceTransformFeedbackPropertiesEXT>
63669   {
63670     using Type = PhysicalDeviceTransformFeedbackPropertiesEXT;
63671   };
63672 
63673   struct PhysicalDeviceUniformBufferStandardLayoutFeatures
63674   {
63675     using NativeType = VkPhysicalDeviceUniformBufferStandardLayoutFeatures;
63676 
63677     static const bool                                  allowDuplicate = false;
63678     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
63679       StructureType::ePhysicalDeviceUniformBufferStandardLayoutFeatures;
63680 
63681 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceUniformBufferStandardLayoutFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures63682     VULKAN_HPP_CONSTEXPR PhysicalDeviceUniformBufferStandardLayoutFeatures(
63683       VULKAN_HPP_NAMESPACE::Bool32 uniformBufferStandardLayout_ = {} ) VULKAN_HPP_NOEXCEPT
63684       : uniformBufferStandardLayout( uniformBufferStandardLayout_ )
63685     {}
63686 
63687     VULKAN_HPP_CONSTEXPR PhysicalDeviceUniformBufferStandardLayoutFeatures(
63688       PhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63689 
PhysicalDeviceUniformBufferStandardLayoutFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures63690     PhysicalDeviceUniformBufferStandardLayoutFeatures( VkPhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs )
63691       VULKAN_HPP_NOEXCEPT
63692       : PhysicalDeviceUniformBufferStandardLayoutFeatures(
63693           *reinterpret_cast<PhysicalDeviceUniformBufferStandardLayoutFeatures const *>( &rhs ) )
63694     {}
63695 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
63696 
63697     PhysicalDeviceUniformBufferStandardLayoutFeatures &
63698       operator=( PhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63699 
63700     PhysicalDeviceUniformBufferStandardLayoutFeatures &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures63701       operator=( VkPhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
63702     {
63703       *this =
63704         *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures const *>( &rhs );
63705       return *this;
63706     }
63707 
63708 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
63709     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceUniformBufferStandardLayoutFeatures &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures63710                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
63711     {
63712       pNext = pNext_;
63713       return *this;
63714     }
63715 
63716     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceUniformBufferStandardLayoutFeatures &
setUniformBufferStandardLayoutVULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures63717       setUniformBufferStandardLayout( VULKAN_HPP_NAMESPACE::Bool32 uniformBufferStandardLayout_ ) VULKAN_HPP_NOEXCEPT
63718     {
63719       uniformBufferStandardLayout = uniformBufferStandardLayout_;
63720       return *this;
63721     }
63722 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
63723 
operator VkPhysicalDeviceUniformBufferStandardLayoutFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures63724     explicit operator VkPhysicalDeviceUniformBufferStandardLayoutFeatures const &() const VULKAN_HPP_NOEXCEPT
63725     {
63726       return *reinterpret_cast<const VkPhysicalDeviceUniformBufferStandardLayoutFeatures *>( this );
63727     }
63728 
operator VkPhysicalDeviceUniformBufferStandardLayoutFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures63729     explicit operator VkPhysicalDeviceUniformBufferStandardLayoutFeatures &() VULKAN_HPP_NOEXCEPT
63730     {
63731       return *reinterpret_cast<VkPhysicalDeviceUniformBufferStandardLayoutFeatures *>( this );
63732     }
63733 
63734 #if 14 <= VULKAN_HPP_CPP_VERSION
63735     auto
63736 #else
63737     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
63738 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures63739       reflect() const VULKAN_HPP_NOEXCEPT
63740     {
63741       return std::tie( sType, pNext, uniformBufferStandardLayout );
63742     }
63743 
63744 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
63745     auto operator<=>( PhysicalDeviceUniformBufferStandardLayoutFeatures const & ) const = default;
63746 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures63747     bool operator==( PhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
63748     {
63749       return this->reflect() == rhs.reflect();
63750     }
63751 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures63752     bool operator!=( PhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
63753     {
63754       return this->reflect() != rhs.reflect();
63755     }
63756 #endif
63757 
63758   public:
63759     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceUniformBufferStandardLayoutFeatures;
63760     void *                              pNext = {};
63761     VULKAN_HPP_NAMESPACE::Bool32        uniformBufferStandardLayout = {};
63762   };
63763   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures ) ==
63764                               sizeof( VkPhysicalDeviceUniformBufferStandardLayoutFeatures ),
63765                             "struct and wrapper have different size!" );
63766   VULKAN_HPP_STATIC_ASSERT(
63767     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures>::value,
63768     "struct wrapper is not a standard layout!" );
63769   VULKAN_HPP_STATIC_ASSERT(
63770     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures>::value,
63771     "PhysicalDeviceUniformBufferStandardLayoutFeatures is not nothrow_move_constructible!" );
63772 
63773   template <>
63774   struct CppType<StructureType, StructureType::ePhysicalDeviceUniformBufferStandardLayoutFeatures>
63775   {
63776     using Type = PhysicalDeviceUniformBufferStandardLayoutFeatures;
63777   };
63778   using PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = PhysicalDeviceUniformBufferStandardLayoutFeatures;
63779 
63780   struct PhysicalDeviceVariablePointersFeatures
63781   {
63782     using NativeType = VkPhysicalDeviceVariablePointersFeatures;
63783 
63784     static const bool                                  allowDuplicate = false;
63785     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
63786       StructureType::ePhysicalDeviceVariablePointersFeatures;
63787 
63788 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
63789     VULKAN_HPP_CONSTEXPR
PhysicalDeviceVariablePointersFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures63790       PhysicalDeviceVariablePointersFeatures( VULKAN_HPP_NAMESPACE::Bool32 variablePointersStorageBuffer_ = {},
63791                                               VULKAN_HPP_NAMESPACE::Bool32 variablePointers_ = {} ) VULKAN_HPP_NOEXCEPT
63792       : variablePointersStorageBuffer( variablePointersStorageBuffer_ )
63793       , variablePointers( variablePointers_ )
63794     {}
63795 
63796     VULKAN_HPP_CONSTEXPR PhysicalDeviceVariablePointersFeatures( PhysicalDeviceVariablePointersFeatures const & rhs )
63797       VULKAN_HPP_NOEXCEPT = default;
63798 
PhysicalDeviceVariablePointersFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures63799     PhysicalDeviceVariablePointersFeatures( VkPhysicalDeviceVariablePointersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
63800       : PhysicalDeviceVariablePointersFeatures(
63801           *reinterpret_cast<PhysicalDeviceVariablePointersFeatures const *>( &rhs ) )
63802     {}
63803 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
63804 
63805     PhysicalDeviceVariablePointersFeatures &
63806       operator=( PhysicalDeviceVariablePointersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63807 
63808     PhysicalDeviceVariablePointersFeatures &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures63809       operator=( VkPhysicalDeviceVariablePointersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
63810     {
63811       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures const *>( &rhs );
63812       return *this;
63813     }
63814 
63815 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures63816     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVariablePointersFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
63817     {
63818       pNext = pNext_;
63819       return *this;
63820     }
63821 
setVariablePointersStorageBufferVULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures63822     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVariablePointersFeatures & setVariablePointersStorageBuffer(
63823       VULKAN_HPP_NAMESPACE::Bool32 variablePointersStorageBuffer_ ) VULKAN_HPP_NOEXCEPT
63824     {
63825       variablePointersStorageBuffer = variablePointersStorageBuffer_;
63826       return *this;
63827     }
63828 
63829     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVariablePointersFeatures &
setVariablePointersVULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures63830                             setVariablePointers( VULKAN_HPP_NAMESPACE::Bool32 variablePointers_ ) VULKAN_HPP_NOEXCEPT
63831     {
63832       variablePointers = variablePointers_;
63833       return *this;
63834     }
63835 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
63836 
operator VkPhysicalDeviceVariablePointersFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures63837     explicit operator VkPhysicalDeviceVariablePointersFeatures const &() const VULKAN_HPP_NOEXCEPT
63838     {
63839       return *reinterpret_cast<const VkPhysicalDeviceVariablePointersFeatures *>( this );
63840     }
63841 
operator VkPhysicalDeviceVariablePointersFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures63842     explicit operator VkPhysicalDeviceVariablePointersFeatures &() VULKAN_HPP_NOEXCEPT
63843     {
63844       return *reinterpret_cast<VkPhysicalDeviceVariablePointersFeatures *>( this );
63845     }
63846 
63847 #if 14 <= VULKAN_HPP_CPP_VERSION
63848     auto
63849 #else
63850     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
63851                void * const &,
63852                VULKAN_HPP_NAMESPACE::Bool32 const &,
63853                VULKAN_HPP_NAMESPACE::Bool32 const &>
63854 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures63855       reflect() const VULKAN_HPP_NOEXCEPT
63856     {
63857       return std::tie( sType, pNext, variablePointersStorageBuffer, variablePointers );
63858     }
63859 
63860 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
63861     auto operator<=>( PhysicalDeviceVariablePointersFeatures const & ) const = default;
63862 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures63863     bool operator==( PhysicalDeviceVariablePointersFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
63864     {
63865       return this->reflect() == rhs.reflect();
63866     }
63867 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures63868     bool operator!=( PhysicalDeviceVariablePointersFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
63869     {
63870       return this->reflect() != rhs.reflect();
63871     }
63872 #endif
63873 
63874   public:
63875     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVariablePointersFeatures;
63876     void *                              pNext = {};
63877     VULKAN_HPP_NAMESPACE::Bool32        variablePointersStorageBuffer = {};
63878     VULKAN_HPP_NAMESPACE::Bool32        variablePointers              = {};
63879   };
63880   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures ) ==
63881                               sizeof( VkPhysicalDeviceVariablePointersFeatures ),
63882                             "struct and wrapper have different size!" );
63883   VULKAN_HPP_STATIC_ASSERT(
63884     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures>::value,
63885     "struct wrapper is not a standard layout!" );
63886   VULKAN_HPP_STATIC_ASSERT(
63887     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures>::value,
63888     "PhysicalDeviceVariablePointersFeatures is not nothrow_move_constructible!" );
63889 
63890   template <>
63891   struct CppType<StructureType, StructureType::ePhysicalDeviceVariablePointersFeatures>
63892   {
63893     using Type = PhysicalDeviceVariablePointersFeatures;
63894   };
63895   using PhysicalDeviceVariablePointerFeatures     = PhysicalDeviceVariablePointersFeatures;
63896   using PhysicalDeviceVariablePointerFeaturesKHR  = PhysicalDeviceVariablePointersFeatures;
63897   using PhysicalDeviceVariablePointersFeaturesKHR = PhysicalDeviceVariablePointersFeatures;
63898 
63899   struct PhysicalDeviceVertexAttributeDivisorFeaturesEXT
63900   {
63901     using NativeType = VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT;
63902 
63903     static const bool                                  allowDuplicate = false;
63904     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
63905       StructureType::ePhysicalDeviceVertexAttributeDivisorFeaturesEXT;
63906 
63907 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVertexAttributeDivisorFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesEXT63908     VULKAN_HPP_CONSTEXPR PhysicalDeviceVertexAttributeDivisorFeaturesEXT(
63909       VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeInstanceRateDivisor_     = {},
63910       VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeInstanceRateZeroDivisor_ = {} ) VULKAN_HPP_NOEXCEPT
63911       : vertexAttributeInstanceRateDivisor( vertexAttributeInstanceRateDivisor_ )
63912       , vertexAttributeInstanceRateZeroDivisor( vertexAttributeInstanceRateZeroDivisor_ )
63913     {}
63914 
63915     VULKAN_HPP_CONSTEXPR PhysicalDeviceVertexAttributeDivisorFeaturesEXT(
63916       PhysicalDeviceVertexAttributeDivisorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63917 
PhysicalDeviceVertexAttributeDivisorFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesEXT63918     PhysicalDeviceVertexAttributeDivisorFeaturesEXT( VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT const & rhs )
63919       VULKAN_HPP_NOEXCEPT
63920       : PhysicalDeviceVertexAttributeDivisorFeaturesEXT(
63921           *reinterpret_cast<PhysicalDeviceVertexAttributeDivisorFeaturesEXT const *>( &rhs ) )
63922     {}
63923 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
63924 
63925     PhysicalDeviceVertexAttributeDivisorFeaturesEXT &
63926       operator=( PhysicalDeviceVertexAttributeDivisorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63927 
63928     PhysicalDeviceVertexAttributeDivisorFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesEXT63929       operator=( VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
63930     {
63931       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesEXT const *>( &rhs );
63932       return *this;
63933     }
63934 
63935 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
63936     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexAttributeDivisorFeaturesEXT &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesEXT63937                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
63938     {
63939       pNext = pNext_;
63940       return *this;
63941     }
63942 
setVertexAttributeInstanceRateDivisorVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesEXT63943     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexAttributeDivisorFeaturesEXT & setVertexAttributeInstanceRateDivisor(
63944       VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeInstanceRateDivisor_ ) VULKAN_HPP_NOEXCEPT
63945     {
63946       vertexAttributeInstanceRateDivisor = vertexAttributeInstanceRateDivisor_;
63947       return *this;
63948     }
63949 
setVertexAttributeInstanceRateZeroDivisorVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesEXT63950     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexAttributeDivisorFeaturesEXT & setVertexAttributeInstanceRateZeroDivisor(
63951       VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeInstanceRateZeroDivisor_ ) VULKAN_HPP_NOEXCEPT
63952     {
63953       vertexAttributeInstanceRateZeroDivisor = vertexAttributeInstanceRateZeroDivisor_;
63954       return *this;
63955     }
63956 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
63957 
operator VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesEXT63958     explicit operator VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
63959     {
63960       return *reinterpret_cast<const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT *>( this );
63961     }
63962 
operator VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesEXT63963     explicit operator VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT &() VULKAN_HPP_NOEXCEPT
63964     {
63965       return *reinterpret_cast<VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT *>( this );
63966     }
63967 
63968 #if 14 <= VULKAN_HPP_CPP_VERSION
63969     auto
63970 #else
63971     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
63972                void * const &,
63973                VULKAN_HPP_NAMESPACE::Bool32 const &,
63974                VULKAN_HPP_NAMESPACE::Bool32 const &>
63975 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesEXT63976       reflect() const VULKAN_HPP_NOEXCEPT
63977     {
63978       return std::tie( sType, pNext, vertexAttributeInstanceRateDivisor, vertexAttributeInstanceRateZeroDivisor );
63979     }
63980 
63981 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
63982     auto operator<=>( PhysicalDeviceVertexAttributeDivisorFeaturesEXT const & ) const = default;
63983 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesEXT63984     bool operator==( PhysicalDeviceVertexAttributeDivisorFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
63985     {
63986       return this->reflect() == rhs.reflect();
63987     }
63988 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesEXT63989     bool operator!=( PhysicalDeviceVertexAttributeDivisorFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
63990     {
63991       return this->reflect() != rhs.reflect();
63992     }
63993 #endif
63994 
63995   public:
63996     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVertexAttributeDivisorFeaturesEXT;
63997     void *                              pNext = {};
63998     VULKAN_HPP_NAMESPACE::Bool32        vertexAttributeInstanceRateDivisor     = {};
63999     VULKAN_HPP_NAMESPACE::Bool32        vertexAttributeInstanceRateZeroDivisor = {};
64000   };
64001   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesEXT ) ==
64002                               sizeof( VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT ),
64003                             "struct and wrapper have different size!" );
64004   VULKAN_HPP_STATIC_ASSERT(
64005     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesEXT>::value,
64006     "struct wrapper is not a standard layout!" );
64007   VULKAN_HPP_STATIC_ASSERT(
64008     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesEXT>::value,
64009     "PhysicalDeviceVertexAttributeDivisorFeaturesEXT is not nothrow_move_constructible!" );
64010 
64011   template <>
64012   struct CppType<StructureType, StructureType::ePhysicalDeviceVertexAttributeDivisorFeaturesEXT>
64013   {
64014     using Type = PhysicalDeviceVertexAttributeDivisorFeaturesEXT;
64015   };
64016 
64017   struct PhysicalDeviceVertexAttributeDivisorPropertiesEXT
64018   {
64019     using NativeType = VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT;
64020 
64021     static const bool                                  allowDuplicate = false;
64022     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
64023       StructureType::ePhysicalDeviceVertexAttributeDivisorPropertiesEXT;
64024 
64025 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
64026     VULKAN_HPP_CONSTEXPR
PhysicalDeviceVertexAttributeDivisorPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT64027       PhysicalDeviceVertexAttributeDivisorPropertiesEXT( uint32_t maxVertexAttribDivisor_ = {} ) VULKAN_HPP_NOEXCEPT
64028       : maxVertexAttribDivisor( maxVertexAttribDivisor_ )
64029     {}
64030 
64031     VULKAN_HPP_CONSTEXPR PhysicalDeviceVertexAttributeDivisorPropertiesEXT(
64032       PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64033 
PhysicalDeviceVertexAttributeDivisorPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT64034     PhysicalDeviceVertexAttributeDivisorPropertiesEXT( VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs )
64035       VULKAN_HPP_NOEXCEPT
64036       : PhysicalDeviceVertexAttributeDivisorPropertiesEXT(
64037           *reinterpret_cast<PhysicalDeviceVertexAttributeDivisorPropertiesEXT const *>( &rhs ) )
64038     {}
64039 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
64040 
64041     PhysicalDeviceVertexAttributeDivisorPropertiesEXT &
64042       operator=( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64043 
64044     PhysicalDeviceVertexAttributeDivisorPropertiesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT64045       operator=( VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
64046     {
64047       *this =
64048         *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT const *>( &rhs );
64049       return *this;
64050     }
64051 
operator VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT64052     explicit operator VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
64053     {
64054       return *reinterpret_cast<const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT *>( this );
64055     }
64056 
operator VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT64057     explicit operator VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT &() VULKAN_HPP_NOEXCEPT
64058     {
64059       return *reinterpret_cast<VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT *>( this );
64060     }
64061 
64062 #if 14 <= VULKAN_HPP_CPP_VERSION
64063     auto
64064 #else
64065     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
64066 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT64067       reflect() const VULKAN_HPP_NOEXCEPT
64068     {
64069       return std::tie( sType, pNext, maxVertexAttribDivisor );
64070     }
64071 
64072 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
64073     auto operator<=>( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & ) const = default;
64074 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT64075     bool operator==( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
64076     {
64077       return this->reflect() == rhs.reflect();
64078     }
64079 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT64080     bool operator!=( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
64081     {
64082       return this->reflect() != rhs.reflect();
64083     }
64084 #endif
64085 
64086   public:
64087     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVertexAttributeDivisorPropertiesEXT;
64088     void *                              pNext = {};
64089     uint32_t                            maxVertexAttribDivisor = {};
64090   };
64091   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT ) ==
64092                               sizeof( VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT ),
64093                             "struct and wrapper have different size!" );
64094   VULKAN_HPP_STATIC_ASSERT(
64095     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT>::value,
64096     "struct wrapper is not a standard layout!" );
64097   VULKAN_HPP_STATIC_ASSERT(
64098     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT>::value,
64099     "PhysicalDeviceVertexAttributeDivisorPropertiesEXT is not nothrow_move_constructible!" );
64100 
64101   template <>
64102   struct CppType<StructureType, StructureType::ePhysicalDeviceVertexAttributeDivisorPropertiesEXT>
64103   {
64104     using Type = PhysicalDeviceVertexAttributeDivisorPropertiesEXT;
64105   };
64106 
64107   struct PhysicalDeviceVertexInputDynamicStateFeaturesEXT
64108   {
64109     using NativeType = VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT;
64110 
64111     static const bool                                  allowDuplicate = false;
64112     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
64113       StructureType::ePhysicalDeviceVertexInputDynamicStateFeaturesEXT;
64114 
64115 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVertexInputDynamicStateFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT64116     VULKAN_HPP_CONSTEXPR PhysicalDeviceVertexInputDynamicStateFeaturesEXT(
64117       VULKAN_HPP_NAMESPACE::Bool32 vertexInputDynamicState_ = {} ) VULKAN_HPP_NOEXCEPT
64118       : vertexInputDynamicState( vertexInputDynamicState_ )
64119     {}
64120 
64121     VULKAN_HPP_CONSTEXPR PhysicalDeviceVertexInputDynamicStateFeaturesEXT(
64122       PhysicalDeviceVertexInputDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64123 
PhysicalDeviceVertexInputDynamicStateFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT64124     PhysicalDeviceVertexInputDynamicStateFeaturesEXT( VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT const & rhs )
64125       VULKAN_HPP_NOEXCEPT
64126       : PhysicalDeviceVertexInputDynamicStateFeaturesEXT(
64127           *reinterpret_cast<PhysicalDeviceVertexInputDynamicStateFeaturesEXT const *>( &rhs ) )
64128     {}
64129 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
64130 
64131     PhysicalDeviceVertexInputDynamicStateFeaturesEXT &
64132       operator=( PhysicalDeviceVertexInputDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64133 
64134     PhysicalDeviceVertexInputDynamicStateFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT64135       operator=( VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
64136     {
64137       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT const *>( &rhs );
64138       return *this;
64139     }
64140 
64141 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
64142     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexInputDynamicStateFeaturesEXT &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT64143                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
64144     {
64145       pNext = pNext_;
64146       return *this;
64147     }
64148 
64149     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexInputDynamicStateFeaturesEXT &
setVertexInputDynamicStateVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT64150       setVertexInputDynamicState( VULKAN_HPP_NAMESPACE::Bool32 vertexInputDynamicState_ ) VULKAN_HPP_NOEXCEPT
64151     {
64152       vertexInputDynamicState = vertexInputDynamicState_;
64153       return *this;
64154     }
64155 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
64156 
operator VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT64157     explicit operator VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
64158     {
64159       return *reinterpret_cast<const VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT *>( this );
64160     }
64161 
operator VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT64162     explicit operator VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT &() VULKAN_HPP_NOEXCEPT
64163     {
64164       return *reinterpret_cast<VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT *>( this );
64165     }
64166 
64167 #if 14 <= VULKAN_HPP_CPP_VERSION
64168     auto
64169 #else
64170     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
64171 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT64172       reflect() const VULKAN_HPP_NOEXCEPT
64173     {
64174       return std::tie( sType, pNext, vertexInputDynamicState );
64175     }
64176 
64177 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
64178     auto operator<=>( PhysicalDeviceVertexInputDynamicStateFeaturesEXT const & ) const = default;
64179 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT64180     bool operator==( PhysicalDeviceVertexInputDynamicStateFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
64181     {
64182       return this->reflect() == rhs.reflect();
64183     }
64184 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT64185     bool operator!=( PhysicalDeviceVertexInputDynamicStateFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
64186     {
64187       return this->reflect() != rhs.reflect();
64188     }
64189 #endif
64190 
64191   public:
64192     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVertexInputDynamicStateFeaturesEXT;
64193     void *                              pNext = {};
64194     VULKAN_HPP_NAMESPACE::Bool32        vertexInputDynamicState = {};
64195   };
64196   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT ) ==
64197                               sizeof( VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT ),
64198                             "struct and wrapper have different size!" );
64199   VULKAN_HPP_STATIC_ASSERT(
64200     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT>::value,
64201     "struct wrapper is not a standard layout!" );
64202   VULKAN_HPP_STATIC_ASSERT(
64203     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT>::value,
64204     "PhysicalDeviceVertexInputDynamicStateFeaturesEXT is not nothrow_move_constructible!" );
64205 
64206   template <>
64207   struct CppType<StructureType, StructureType::ePhysicalDeviceVertexInputDynamicStateFeaturesEXT>
64208   {
64209     using Type = PhysicalDeviceVertexInputDynamicStateFeaturesEXT;
64210   };
64211 
64212 #if defined( VK_ENABLE_BETA_EXTENSIONS )
64213   struct VideoProfileKHR
64214   {
64215     using NativeType = VkVideoProfileKHR;
64216 
64217     static const bool                                  allowDuplicate = false;
64218     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoProfileKHR;
64219 
64220 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
64221     VULKAN_HPP_CONSTEXPR
VideoProfileKHRVULKAN_HPP_NAMESPACE::VideoProfileKHR64222       VideoProfileKHR( VULKAN_HPP_NAMESPACE::VideoCodecOperationFlagBitsKHR videoCodecOperation_ =
64223                          VULKAN_HPP_NAMESPACE::VideoCodecOperationFlagBitsKHR::eInvalid,
64224                        VULKAN_HPP_NAMESPACE::VideoChromaSubsamplingFlagsKHR chromaSubsampling_ = {},
64225                        VULKAN_HPP_NAMESPACE::VideoComponentBitDepthFlagsKHR lumaBitDepth_      = {},
64226                        VULKAN_HPP_NAMESPACE::VideoComponentBitDepthFlagsKHR chromaBitDepth_ = {} ) VULKAN_HPP_NOEXCEPT
64227       : videoCodecOperation( videoCodecOperation_ )
64228       , chromaSubsampling( chromaSubsampling_ )
64229       , lumaBitDepth( lumaBitDepth_ )
64230       , chromaBitDepth( chromaBitDepth_ )
64231     {}
64232 
64233     VULKAN_HPP_CONSTEXPR VideoProfileKHR( VideoProfileKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64234 
VideoProfileKHRVULKAN_HPP_NAMESPACE::VideoProfileKHR64235     VideoProfileKHR( VkVideoProfileKHR const & rhs ) VULKAN_HPP_NOEXCEPT
64236       : VideoProfileKHR( *reinterpret_cast<VideoProfileKHR const *>( &rhs ) )
64237     {}
64238 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
64239 
64240     VideoProfileKHR & operator=( VideoProfileKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64241 
operator =VULKAN_HPP_NAMESPACE::VideoProfileKHR64242     VideoProfileKHR & operator=( VkVideoProfileKHR const & rhs ) VULKAN_HPP_NOEXCEPT
64243     {
64244       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoProfileKHR const *>( &rhs );
64245       return *this;
64246     }
64247 
64248 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoProfileKHR64249     VULKAN_HPP_CONSTEXPR_14 VideoProfileKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
64250     {
64251       pNext = pNext_;
64252       return *this;
64253     }
64254 
setVideoCodecOperationVULKAN_HPP_NAMESPACE::VideoProfileKHR64255     VULKAN_HPP_CONSTEXPR_14 VideoProfileKHR & setVideoCodecOperation(
64256       VULKAN_HPP_NAMESPACE::VideoCodecOperationFlagBitsKHR videoCodecOperation_ ) VULKAN_HPP_NOEXCEPT
64257     {
64258       videoCodecOperation = videoCodecOperation_;
64259       return *this;
64260     }
64261 
setChromaSubsamplingVULKAN_HPP_NAMESPACE::VideoProfileKHR64262     VULKAN_HPP_CONSTEXPR_14 VideoProfileKHR & setChromaSubsampling(
64263       VULKAN_HPP_NAMESPACE::VideoChromaSubsamplingFlagsKHR chromaSubsampling_ ) VULKAN_HPP_NOEXCEPT
64264     {
64265       chromaSubsampling = chromaSubsampling_;
64266       return *this;
64267     }
64268 
64269     VULKAN_HPP_CONSTEXPR_14 VideoProfileKHR &
setLumaBitDepthVULKAN_HPP_NAMESPACE::VideoProfileKHR64270       setLumaBitDepth( VULKAN_HPP_NAMESPACE::VideoComponentBitDepthFlagsKHR lumaBitDepth_ ) VULKAN_HPP_NOEXCEPT
64271     {
64272       lumaBitDepth = lumaBitDepth_;
64273       return *this;
64274     }
64275 
64276     VULKAN_HPP_CONSTEXPR_14 VideoProfileKHR &
setChromaBitDepthVULKAN_HPP_NAMESPACE::VideoProfileKHR64277       setChromaBitDepth( VULKAN_HPP_NAMESPACE::VideoComponentBitDepthFlagsKHR chromaBitDepth_ ) VULKAN_HPP_NOEXCEPT
64278     {
64279       chromaBitDepth = chromaBitDepth_;
64280       return *this;
64281     }
64282 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
64283 
operator VkVideoProfileKHR const&VULKAN_HPP_NAMESPACE::VideoProfileKHR64284     explicit operator VkVideoProfileKHR const &() const VULKAN_HPP_NOEXCEPT
64285     {
64286       return *reinterpret_cast<const VkVideoProfileKHR *>( this );
64287     }
64288 
operator VkVideoProfileKHR&VULKAN_HPP_NAMESPACE::VideoProfileKHR64289     explicit operator VkVideoProfileKHR &() VULKAN_HPP_NOEXCEPT
64290     {
64291       return *reinterpret_cast<VkVideoProfileKHR *>( this );
64292     }
64293 
64294 #  if 14 <= VULKAN_HPP_CPP_VERSION
64295     auto
64296 #  else
64297     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
64298                void * const &,
64299                VULKAN_HPP_NAMESPACE::VideoCodecOperationFlagBitsKHR const &,
64300                VULKAN_HPP_NAMESPACE::VideoChromaSubsamplingFlagsKHR const &,
64301                VULKAN_HPP_NAMESPACE::VideoComponentBitDepthFlagsKHR const &,
64302                VULKAN_HPP_NAMESPACE::VideoComponentBitDepthFlagsKHR const &>
64303 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoProfileKHR64304       reflect() const VULKAN_HPP_NOEXCEPT
64305     {
64306       return std::tie( sType, pNext, videoCodecOperation, chromaSubsampling, lumaBitDepth, chromaBitDepth );
64307     }
64308 
64309 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
64310     auto operator<=>( VideoProfileKHR const & ) const = default;
64311 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoProfileKHR64312     bool operator==( VideoProfileKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
64313     {
64314       return this->reflect() == rhs.reflect();
64315     }
64316 
operator !=VULKAN_HPP_NAMESPACE::VideoProfileKHR64317     bool operator!=( VideoProfileKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
64318     {
64319       return this->reflect() != rhs.reflect();
64320     }
64321 #  endif
64322 
64323   public:
64324     VULKAN_HPP_NAMESPACE::StructureType                  sType = StructureType::eVideoProfileKHR;
64325     void *                                               pNext = {};
64326     VULKAN_HPP_NAMESPACE::VideoCodecOperationFlagBitsKHR videoCodecOperation =
64327       VULKAN_HPP_NAMESPACE::VideoCodecOperationFlagBitsKHR::eInvalid;
64328     VULKAN_HPP_NAMESPACE::VideoChromaSubsamplingFlagsKHR chromaSubsampling = {};
64329     VULKAN_HPP_NAMESPACE::VideoComponentBitDepthFlagsKHR lumaBitDepth      = {};
64330     VULKAN_HPP_NAMESPACE::VideoComponentBitDepthFlagsKHR chromaBitDepth    = {};
64331   };
64332   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoProfileKHR ) == sizeof( VkVideoProfileKHR ),
64333                             "struct and wrapper have different size!" );
64334   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoProfileKHR>::value,
64335                             "struct wrapper is not a standard layout!" );
64336   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoProfileKHR>::value,
64337                             "VideoProfileKHR is not nothrow_move_constructible!" );
64338 
64339   template <>
64340   struct CppType<StructureType, StructureType::eVideoProfileKHR>
64341   {
64342     using Type = VideoProfileKHR;
64343   };
64344 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
64345 
64346 #if defined( VK_ENABLE_BETA_EXTENSIONS )
64347   struct VideoProfilesKHR
64348   {
64349     using NativeType = VkVideoProfilesKHR;
64350 
64351     static const bool                                  allowDuplicate = false;
64352     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoProfilesKHR;
64353 
64354 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
64355     VULKAN_HPP_CONSTEXPR
VideoProfilesKHRVULKAN_HPP_NAMESPACE::VideoProfilesKHR64356       VideoProfilesKHR( uint32_t                                      profileCount_ = {},
64357                         const VULKAN_HPP_NAMESPACE::VideoProfileKHR * pProfiles_    = {} ) VULKAN_HPP_NOEXCEPT
64358       : profileCount( profileCount_ )
64359       , pProfiles( pProfiles_ )
64360     {}
64361 
64362     VULKAN_HPP_CONSTEXPR VideoProfilesKHR( VideoProfilesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64363 
VideoProfilesKHRVULKAN_HPP_NAMESPACE::VideoProfilesKHR64364     VideoProfilesKHR( VkVideoProfilesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
64365       : VideoProfilesKHR( *reinterpret_cast<VideoProfilesKHR const *>( &rhs ) )
64366     {}
64367 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
64368 
64369     VideoProfilesKHR & operator=( VideoProfilesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64370 
operator =VULKAN_HPP_NAMESPACE::VideoProfilesKHR64371     VideoProfilesKHR & operator=( VkVideoProfilesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
64372     {
64373       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoProfilesKHR const *>( &rhs );
64374       return *this;
64375     }
64376 
64377 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoProfilesKHR64378     VULKAN_HPP_CONSTEXPR_14 VideoProfilesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
64379     {
64380       pNext = pNext_;
64381       return *this;
64382     }
64383 
setProfileCountVULKAN_HPP_NAMESPACE::VideoProfilesKHR64384     VULKAN_HPP_CONSTEXPR_14 VideoProfilesKHR & setProfileCount( uint32_t profileCount_ ) VULKAN_HPP_NOEXCEPT
64385     {
64386       profileCount = profileCount_;
64387       return *this;
64388     }
64389 
64390     VULKAN_HPP_CONSTEXPR_14 VideoProfilesKHR &
setPProfilesVULKAN_HPP_NAMESPACE::VideoProfilesKHR64391                             setPProfiles( const VULKAN_HPP_NAMESPACE::VideoProfileKHR * pProfiles_ ) VULKAN_HPP_NOEXCEPT
64392     {
64393       pProfiles = pProfiles_;
64394       return *this;
64395     }
64396 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
64397 
operator VkVideoProfilesKHR const&VULKAN_HPP_NAMESPACE::VideoProfilesKHR64398     explicit operator VkVideoProfilesKHR const &() const VULKAN_HPP_NOEXCEPT
64399     {
64400       return *reinterpret_cast<const VkVideoProfilesKHR *>( this );
64401     }
64402 
operator VkVideoProfilesKHR&VULKAN_HPP_NAMESPACE::VideoProfilesKHR64403     explicit operator VkVideoProfilesKHR &() VULKAN_HPP_NOEXCEPT
64404     {
64405       return *reinterpret_cast<VkVideoProfilesKHR *>( this );
64406     }
64407 
64408 #  if 14 <= VULKAN_HPP_CPP_VERSION
64409     auto
64410 #  else
64411     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
64412                void * const &,
64413                uint32_t const &,
64414                const VULKAN_HPP_NAMESPACE::VideoProfileKHR * const &>
64415 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoProfilesKHR64416       reflect() const VULKAN_HPP_NOEXCEPT
64417     {
64418       return std::tie( sType, pNext, profileCount, pProfiles );
64419     }
64420 
64421 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
64422     auto operator<=>( VideoProfilesKHR const & ) const = default;
64423 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoProfilesKHR64424     bool operator==( VideoProfilesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
64425     {
64426       return this->reflect() == rhs.reflect();
64427     }
64428 
operator !=VULKAN_HPP_NAMESPACE::VideoProfilesKHR64429     bool operator!=( VideoProfilesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
64430     {
64431       return this->reflect() != rhs.reflect();
64432     }
64433 #  endif
64434 
64435   public:
64436     VULKAN_HPP_NAMESPACE::StructureType           sType        = StructureType::eVideoProfilesKHR;
64437     void *                                        pNext        = {};
64438     uint32_t                                      profileCount = {};
64439     const VULKAN_HPP_NAMESPACE::VideoProfileKHR * pProfiles    = {};
64440   };
64441   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoProfilesKHR ) == sizeof( VkVideoProfilesKHR ),
64442                             "struct and wrapper have different size!" );
64443   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoProfilesKHR>::value,
64444                             "struct wrapper is not a standard layout!" );
64445   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoProfilesKHR>::value,
64446                             "VideoProfilesKHR is not nothrow_move_constructible!" );
64447 
64448   template <>
64449   struct CppType<StructureType, StructureType::eVideoProfilesKHR>
64450   {
64451     using Type = VideoProfilesKHR;
64452   };
64453 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
64454 
64455 #if defined( VK_ENABLE_BETA_EXTENSIONS )
64456   struct PhysicalDeviceVideoFormatInfoKHR
64457   {
64458     using NativeType = VkPhysicalDeviceVideoFormatInfoKHR;
64459 
64460     static const bool                                  allowDuplicate = false;
64461     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVideoFormatInfoKHR;
64462 
64463 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVideoFormatInfoKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR64464     VULKAN_HPP_CONSTEXPR PhysicalDeviceVideoFormatInfoKHR(
64465       VULKAN_HPP_NAMESPACE::ImageUsageFlags          imageUsage_     = {},
64466       const VULKAN_HPP_NAMESPACE::VideoProfilesKHR * pVideoProfiles_ = {} ) VULKAN_HPP_NOEXCEPT
64467       : imageUsage( imageUsage_ )
64468       , pVideoProfiles( pVideoProfiles_ )
64469     {}
64470 
64471     VULKAN_HPP_CONSTEXPR
64472       PhysicalDeviceVideoFormatInfoKHR( PhysicalDeviceVideoFormatInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64473 
PhysicalDeviceVideoFormatInfoKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR64474     PhysicalDeviceVideoFormatInfoKHR( VkPhysicalDeviceVideoFormatInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
64475       : PhysicalDeviceVideoFormatInfoKHR( *reinterpret_cast<PhysicalDeviceVideoFormatInfoKHR const *>( &rhs ) )
64476     {}
64477 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
64478 
64479     PhysicalDeviceVideoFormatInfoKHR &
64480       operator=( PhysicalDeviceVideoFormatInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64481 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR64482     PhysicalDeviceVideoFormatInfoKHR & operator=( VkPhysicalDeviceVideoFormatInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
64483     {
64484       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR const *>( &rhs );
64485       return *this;
64486     }
64487 
operator VkPhysicalDeviceVideoFormatInfoKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR64488     explicit operator VkPhysicalDeviceVideoFormatInfoKHR const &() const VULKAN_HPP_NOEXCEPT
64489     {
64490       return *reinterpret_cast<const VkPhysicalDeviceVideoFormatInfoKHR *>( this );
64491     }
64492 
operator VkPhysicalDeviceVideoFormatInfoKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR64493     explicit operator VkPhysicalDeviceVideoFormatInfoKHR &() VULKAN_HPP_NOEXCEPT
64494     {
64495       return *reinterpret_cast<VkPhysicalDeviceVideoFormatInfoKHR *>( this );
64496     }
64497 
64498 #  if 14 <= VULKAN_HPP_CPP_VERSION
64499     auto
64500 #  else
64501     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
64502                void * const &,
64503                VULKAN_HPP_NAMESPACE::ImageUsageFlags const &,
64504                const VULKAN_HPP_NAMESPACE::VideoProfilesKHR * const &>
64505 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR64506       reflect() const VULKAN_HPP_NOEXCEPT
64507     {
64508       return std::tie( sType, pNext, imageUsage, pVideoProfiles );
64509     }
64510 
64511 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
64512     auto operator<=>( PhysicalDeviceVideoFormatInfoKHR const & ) const = default;
64513 #  else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR64514     bool operator==( PhysicalDeviceVideoFormatInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
64515     {
64516       return this->reflect() == rhs.reflect();
64517     }
64518 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR64519     bool operator!=( PhysicalDeviceVideoFormatInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
64520     {
64521       return this->reflect() != rhs.reflect();
64522     }
64523 #  endif
64524 
64525   public:
64526     VULKAN_HPP_NAMESPACE::StructureType            sType          = StructureType::ePhysicalDeviceVideoFormatInfoKHR;
64527     void *                                         pNext          = {};
64528     VULKAN_HPP_NAMESPACE::ImageUsageFlags          imageUsage     = {};
64529     const VULKAN_HPP_NAMESPACE::VideoProfilesKHR * pVideoProfiles = {};
64530   };
64531   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR ) ==
64532                               sizeof( VkPhysicalDeviceVideoFormatInfoKHR ),
64533                             "struct and wrapper have different size!" );
64534   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR>::value,
64535                             "struct wrapper is not a standard layout!" );
64536   VULKAN_HPP_STATIC_ASSERT(
64537     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR>::value,
64538     "PhysicalDeviceVideoFormatInfoKHR is not nothrow_move_constructible!" );
64539 
64540   template <>
64541   struct CppType<StructureType, StructureType::ePhysicalDeviceVideoFormatInfoKHR>
64542   {
64543     using Type = PhysicalDeviceVideoFormatInfoKHR;
64544   };
64545 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
64546 
64547   struct PhysicalDeviceVulkan11Features
64548   {
64549     using NativeType = VkPhysicalDeviceVulkan11Features;
64550 
64551     static const bool                                  allowDuplicate = false;
64552     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceVulkan11Features;
64553 
64554 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
64555     VULKAN_HPP_CONSTEXPR
PhysicalDeviceVulkan11FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features64556       PhysicalDeviceVulkan11Features( VULKAN_HPP_NAMESPACE::Bool32 storageBuffer16BitAccess_           = {},
64557                                       VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer16BitAccess_ = {},
64558                                       VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant16_              = {},
64559                                       VULKAN_HPP_NAMESPACE::Bool32 storageInputOutput16_               = {},
64560                                       VULKAN_HPP_NAMESPACE::Bool32 multiview_                          = {},
64561                                       VULKAN_HPP_NAMESPACE::Bool32 multiviewGeometryShader_            = {},
64562                                       VULKAN_HPP_NAMESPACE::Bool32 multiviewTessellationShader_        = {},
64563                                       VULKAN_HPP_NAMESPACE::Bool32 variablePointersStorageBuffer_      = {},
64564                                       VULKAN_HPP_NAMESPACE::Bool32 variablePointers_                   = {},
64565                                       VULKAN_HPP_NAMESPACE::Bool32 protectedMemory_                    = {},
64566                                       VULKAN_HPP_NAMESPACE::Bool32 samplerYcbcrConversion_             = {},
64567                                       VULKAN_HPP_NAMESPACE::Bool32 shaderDrawParameters_ = {} ) VULKAN_HPP_NOEXCEPT
64568       : storageBuffer16BitAccess( storageBuffer16BitAccess_ )
64569       , uniformAndStorageBuffer16BitAccess( uniformAndStorageBuffer16BitAccess_ )
64570       , storagePushConstant16( storagePushConstant16_ )
64571       , storageInputOutput16( storageInputOutput16_ )
64572       , multiview( multiview_ )
64573       , multiviewGeometryShader( multiviewGeometryShader_ )
64574       , multiviewTessellationShader( multiviewTessellationShader_ )
64575       , variablePointersStorageBuffer( variablePointersStorageBuffer_ )
64576       , variablePointers( variablePointers_ )
64577       , protectedMemory( protectedMemory_ )
64578       , samplerYcbcrConversion( samplerYcbcrConversion_ )
64579       , shaderDrawParameters( shaderDrawParameters_ )
64580     {}
64581 
64582     VULKAN_HPP_CONSTEXPR
64583       PhysicalDeviceVulkan11Features( PhysicalDeviceVulkan11Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64584 
PhysicalDeviceVulkan11FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features64585     PhysicalDeviceVulkan11Features( VkPhysicalDeviceVulkan11Features const & rhs ) VULKAN_HPP_NOEXCEPT
64586       : PhysicalDeviceVulkan11Features( *reinterpret_cast<PhysicalDeviceVulkan11Features const *>( &rhs ) )
64587     {}
64588 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
64589 
64590     PhysicalDeviceVulkan11Features &
64591       operator=( PhysicalDeviceVulkan11Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64592 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features64593     PhysicalDeviceVulkan11Features & operator=( VkPhysicalDeviceVulkan11Features const & rhs ) VULKAN_HPP_NOEXCEPT
64594     {
64595       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features const *>( &rhs );
64596       return *this;
64597     }
64598 
64599 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features64600     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
64601     {
64602       pNext = pNext_;
64603       return *this;
64604     }
64605 
64606     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features &
setStorageBuffer16BitAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features64607       setStorageBuffer16BitAccess( VULKAN_HPP_NAMESPACE::Bool32 storageBuffer16BitAccess_ ) VULKAN_HPP_NOEXCEPT
64608     {
64609       storageBuffer16BitAccess = storageBuffer16BitAccess_;
64610       return *this;
64611     }
64612 
setUniformAndStorageBuffer16BitAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features64613     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setUniformAndStorageBuffer16BitAccess(
64614       VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer16BitAccess_ ) VULKAN_HPP_NOEXCEPT
64615     {
64616       uniformAndStorageBuffer16BitAccess = uniformAndStorageBuffer16BitAccess_;
64617       return *this;
64618     }
64619 
64620     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features &
setStoragePushConstant16VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features64621       setStoragePushConstant16( VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant16_ ) VULKAN_HPP_NOEXCEPT
64622     {
64623       storagePushConstant16 = storagePushConstant16_;
64624       return *this;
64625     }
64626 
64627     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features &
setStorageInputOutput16VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features64628       setStorageInputOutput16( VULKAN_HPP_NAMESPACE::Bool32 storageInputOutput16_ ) VULKAN_HPP_NOEXCEPT
64629     {
64630       storageInputOutput16 = storageInputOutput16_;
64631       return *this;
64632     }
64633 
64634     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features &
setMultiviewVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features64635                             setMultiview( VULKAN_HPP_NAMESPACE::Bool32 multiview_ ) VULKAN_HPP_NOEXCEPT
64636     {
64637       multiview = multiview_;
64638       return *this;
64639     }
64640 
64641     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features &
setMultiviewGeometryShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features64642       setMultiviewGeometryShader( VULKAN_HPP_NAMESPACE::Bool32 multiviewGeometryShader_ ) VULKAN_HPP_NOEXCEPT
64643     {
64644       multiviewGeometryShader = multiviewGeometryShader_;
64645       return *this;
64646     }
64647 
64648     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features &
setMultiviewTessellationShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features64649       setMultiviewTessellationShader( VULKAN_HPP_NAMESPACE::Bool32 multiviewTessellationShader_ ) VULKAN_HPP_NOEXCEPT
64650     {
64651       multiviewTessellationShader = multiviewTessellationShader_;
64652       return *this;
64653     }
64654 
setVariablePointersStorageBufferVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features64655     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setVariablePointersStorageBuffer(
64656       VULKAN_HPP_NAMESPACE::Bool32 variablePointersStorageBuffer_ ) VULKAN_HPP_NOEXCEPT
64657     {
64658       variablePointersStorageBuffer = variablePointersStorageBuffer_;
64659       return *this;
64660     }
64661 
64662     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features &
setVariablePointersVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features64663                             setVariablePointers( VULKAN_HPP_NAMESPACE::Bool32 variablePointers_ ) VULKAN_HPP_NOEXCEPT
64664     {
64665       variablePointers = variablePointers_;
64666       return *this;
64667     }
64668 
64669     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features &
setProtectedMemoryVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features64670                             setProtectedMemory( VULKAN_HPP_NAMESPACE::Bool32 protectedMemory_ ) VULKAN_HPP_NOEXCEPT
64671     {
64672       protectedMemory = protectedMemory_;
64673       return *this;
64674     }
64675 
64676     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features &
setSamplerYcbcrConversionVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features64677       setSamplerYcbcrConversion( VULKAN_HPP_NAMESPACE::Bool32 samplerYcbcrConversion_ ) VULKAN_HPP_NOEXCEPT
64678     {
64679       samplerYcbcrConversion = samplerYcbcrConversion_;
64680       return *this;
64681     }
64682 
64683     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features &
setShaderDrawParametersVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features64684       setShaderDrawParameters( VULKAN_HPP_NAMESPACE::Bool32 shaderDrawParameters_ ) VULKAN_HPP_NOEXCEPT
64685     {
64686       shaderDrawParameters = shaderDrawParameters_;
64687       return *this;
64688     }
64689 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
64690 
operator VkPhysicalDeviceVulkan11Features const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features64691     explicit operator VkPhysicalDeviceVulkan11Features const &() const VULKAN_HPP_NOEXCEPT
64692     {
64693       return *reinterpret_cast<const VkPhysicalDeviceVulkan11Features *>( this );
64694     }
64695 
operator VkPhysicalDeviceVulkan11Features&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features64696     explicit operator VkPhysicalDeviceVulkan11Features &() VULKAN_HPP_NOEXCEPT
64697     {
64698       return *reinterpret_cast<VkPhysicalDeviceVulkan11Features *>( this );
64699     }
64700 
64701 #if 14 <= VULKAN_HPP_CPP_VERSION
64702     auto
64703 #else
64704     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
64705                void * const &,
64706                VULKAN_HPP_NAMESPACE::Bool32 const &,
64707                VULKAN_HPP_NAMESPACE::Bool32 const &,
64708                VULKAN_HPP_NAMESPACE::Bool32 const &,
64709                VULKAN_HPP_NAMESPACE::Bool32 const &,
64710                VULKAN_HPP_NAMESPACE::Bool32 const &,
64711                VULKAN_HPP_NAMESPACE::Bool32 const &,
64712                VULKAN_HPP_NAMESPACE::Bool32 const &,
64713                VULKAN_HPP_NAMESPACE::Bool32 const &,
64714                VULKAN_HPP_NAMESPACE::Bool32 const &,
64715                VULKAN_HPP_NAMESPACE::Bool32 const &,
64716                VULKAN_HPP_NAMESPACE::Bool32 const &,
64717                VULKAN_HPP_NAMESPACE::Bool32 const &>
64718 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features64719       reflect() const VULKAN_HPP_NOEXCEPT
64720     {
64721       return std::tie( sType,
64722                        pNext,
64723                        storageBuffer16BitAccess,
64724                        uniformAndStorageBuffer16BitAccess,
64725                        storagePushConstant16,
64726                        storageInputOutput16,
64727                        multiview,
64728                        multiviewGeometryShader,
64729                        multiviewTessellationShader,
64730                        variablePointersStorageBuffer,
64731                        variablePointers,
64732                        protectedMemory,
64733                        samplerYcbcrConversion,
64734                        shaderDrawParameters );
64735     }
64736 
64737 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
64738     auto operator<=>( PhysicalDeviceVulkan11Features const & ) const = default;
64739 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features64740     bool operator==( PhysicalDeviceVulkan11Features const & rhs ) const VULKAN_HPP_NOEXCEPT
64741     {
64742       return this->reflect() == rhs.reflect();
64743     }
64744 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features64745     bool operator!=( PhysicalDeviceVulkan11Features const & rhs ) const VULKAN_HPP_NOEXCEPT
64746     {
64747       return this->reflect() != rhs.reflect();
64748     }
64749 #endif
64750 
64751   public:
64752     VULKAN_HPP_NAMESPACE::StructureType sType                    = StructureType::ePhysicalDeviceVulkan11Features;
64753     void *                              pNext                    = {};
64754     VULKAN_HPP_NAMESPACE::Bool32        storageBuffer16BitAccess = {};
64755     VULKAN_HPP_NAMESPACE::Bool32        uniformAndStorageBuffer16BitAccess = {};
64756     VULKAN_HPP_NAMESPACE::Bool32        storagePushConstant16              = {};
64757     VULKAN_HPP_NAMESPACE::Bool32        storageInputOutput16               = {};
64758     VULKAN_HPP_NAMESPACE::Bool32        multiview                          = {};
64759     VULKAN_HPP_NAMESPACE::Bool32        multiviewGeometryShader            = {};
64760     VULKAN_HPP_NAMESPACE::Bool32        multiviewTessellationShader        = {};
64761     VULKAN_HPP_NAMESPACE::Bool32        variablePointersStorageBuffer      = {};
64762     VULKAN_HPP_NAMESPACE::Bool32        variablePointers                   = {};
64763     VULKAN_HPP_NAMESPACE::Bool32        protectedMemory                    = {};
64764     VULKAN_HPP_NAMESPACE::Bool32        samplerYcbcrConversion             = {};
64765     VULKAN_HPP_NAMESPACE::Bool32        shaderDrawParameters               = {};
64766   };
64767   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features ) ==
64768                               sizeof( VkPhysicalDeviceVulkan11Features ),
64769                             "struct and wrapper have different size!" );
64770   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features>::value,
64771                             "struct wrapper is not a standard layout!" );
64772   VULKAN_HPP_STATIC_ASSERT(
64773     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features>::value,
64774     "PhysicalDeviceVulkan11Features is not nothrow_move_constructible!" );
64775 
64776   template <>
64777   struct CppType<StructureType, StructureType::ePhysicalDeviceVulkan11Features>
64778   {
64779     using Type = PhysicalDeviceVulkan11Features;
64780   };
64781 
64782   struct PhysicalDeviceVulkan11Properties
64783   {
64784     using NativeType = VkPhysicalDeviceVulkan11Properties;
64785 
64786     static const bool                                  allowDuplicate = false;
64787     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVulkan11Properties;
64788 
64789 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVulkan11PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties64790     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Properties(
64791       std::array<uint8_t, VK_UUID_SIZE> const &   deviceUUID_                        = {},
64792       std::array<uint8_t, VK_UUID_SIZE> const &   driverUUID_                        = {},
64793       std::array<uint8_t, VK_LUID_SIZE> const &   deviceLUID_                        = {},
64794       uint32_t                                    deviceNodeMask_                    = {},
64795       VULKAN_HPP_NAMESPACE::Bool32                deviceLUIDValid_                   = {},
64796       uint32_t                                    subgroupSize_                      = {},
64797       VULKAN_HPP_NAMESPACE::ShaderStageFlags      subgroupSupportedStages_           = {},
64798       VULKAN_HPP_NAMESPACE::SubgroupFeatureFlags  subgroupSupportedOperations_       = {},
64799       VULKAN_HPP_NAMESPACE::Bool32                subgroupQuadOperationsInAllStages_ = {},
64800       VULKAN_HPP_NAMESPACE::PointClippingBehavior pointClippingBehavior_ =
64801         VULKAN_HPP_NAMESPACE::PointClippingBehavior::eAllClipPlanes,
64802       uint32_t                         maxMultiviewViewCount_     = {},
64803       uint32_t                         maxMultiviewInstanceIndex_ = {},
64804       VULKAN_HPP_NAMESPACE::Bool32     protectedNoFault_          = {},
64805       uint32_t                         maxPerSetDescriptors_      = {},
64806       VULKAN_HPP_NAMESPACE::DeviceSize maxMemoryAllocationSize_   = {} ) VULKAN_HPP_NOEXCEPT
64807       : deviceUUID( deviceUUID_ )
64808       , driverUUID( driverUUID_ )
64809       , deviceLUID( deviceLUID_ )
64810       , deviceNodeMask( deviceNodeMask_ )
64811       , deviceLUIDValid( deviceLUIDValid_ )
64812       , subgroupSize( subgroupSize_ )
64813       , subgroupSupportedStages( subgroupSupportedStages_ )
64814       , subgroupSupportedOperations( subgroupSupportedOperations_ )
64815       , subgroupQuadOperationsInAllStages( subgroupQuadOperationsInAllStages_ )
64816       , pointClippingBehavior( pointClippingBehavior_ )
64817       , maxMultiviewViewCount( maxMultiviewViewCount_ )
64818       , maxMultiviewInstanceIndex( maxMultiviewInstanceIndex_ )
64819       , protectedNoFault( protectedNoFault_ )
64820       , maxPerSetDescriptors( maxPerSetDescriptors_ )
64821       , maxMemoryAllocationSize( maxMemoryAllocationSize_ )
64822     {}
64823 
64824     VULKAN_HPP_CONSTEXPR_14
64825       PhysicalDeviceVulkan11Properties( PhysicalDeviceVulkan11Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64826 
PhysicalDeviceVulkan11PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties64827     PhysicalDeviceVulkan11Properties( VkPhysicalDeviceVulkan11Properties const & rhs ) VULKAN_HPP_NOEXCEPT
64828       : PhysicalDeviceVulkan11Properties( *reinterpret_cast<PhysicalDeviceVulkan11Properties const *>( &rhs ) )
64829     {}
64830 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
64831 
64832     PhysicalDeviceVulkan11Properties &
64833       operator=( PhysicalDeviceVulkan11Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64834 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties64835     PhysicalDeviceVulkan11Properties & operator=( VkPhysicalDeviceVulkan11Properties const & rhs ) VULKAN_HPP_NOEXCEPT
64836     {
64837       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties const *>( &rhs );
64838       return *this;
64839     }
64840 
operator VkPhysicalDeviceVulkan11Properties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties64841     explicit operator VkPhysicalDeviceVulkan11Properties const &() const VULKAN_HPP_NOEXCEPT
64842     {
64843       return *reinterpret_cast<const VkPhysicalDeviceVulkan11Properties *>( this );
64844     }
64845 
operator VkPhysicalDeviceVulkan11Properties&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties64846     explicit operator VkPhysicalDeviceVulkan11Properties &() VULKAN_HPP_NOEXCEPT
64847     {
64848       return *reinterpret_cast<VkPhysicalDeviceVulkan11Properties *>( this );
64849     }
64850 
64851 #if 14 <= VULKAN_HPP_CPP_VERSION
64852     auto
64853 #else
64854     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
64855                void * const &,
64856                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &,
64857                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &,
64858                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_LUID_SIZE> const &,
64859                uint32_t const &,
64860                VULKAN_HPP_NAMESPACE::Bool32 const &,
64861                uint32_t const &,
64862                VULKAN_HPP_NAMESPACE::ShaderStageFlags const &,
64863                VULKAN_HPP_NAMESPACE::SubgroupFeatureFlags const &,
64864                VULKAN_HPP_NAMESPACE::Bool32 const &,
64865                VULKAN_HPP_NAMESPACE::PointClippingBehavior const &,
64866                uint32_t const &,
64867                uint32_t const &,
64868                VULKAN_HPP_NAMESPACE::Bool32 const &,
64869                uint32_t const &,
64870                VULKAN_HPP_NAMESPACE::DeviceSize const &>
64871 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties64872       reflect() const VULKAN_HPP_NOEXCEPT
64873     {
64874       return std::tie( sType,
64875                        pNext,
64876                        deviceUUID,
64877                        driverUUID,
64878                        deviceLUID,
64879                        deviceNodeMask,
64880                        deviceLUIDValid,
64881                        subgroupSize,
64882                        subgroupSupportedStages,
64883                        subgroupSupportedOperations,
64884                        subgroupQuadOperationsInAllStages,
64885                        pointClippingBehavior,
64886                        maxMultiviewViewCount,
64887                        maxMultiviewInstanceIndex,
64888                        protectedNoFault,
64889                        maxPerSetDescriptors,
64890                        maxMemoryAllocationSize );
64891     }
64892 
64893 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
64894     auto operator<=>( PhysicalDeviceVulkan11Properties const & ) const = default;
64895 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties64896     bool operator==( PhysicalDeviceVulkan11Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
64897     {
64898       return this->reflect() == rhs.reflect();
64899     }
64900 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties64901     bool operator!=( PhysicalDeviceVulkan11Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
64902     {
64903       return this->reflect() != rhs.reflect();
64904     }
64905 #endif
64906 
64907   public:
64908     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVulkan11Properties;
64909     void *                              pNext = {};
64910     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> deviceUUID                        = {};
64911     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> driverUUID                        = {};
64912     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_LUID_SIZE> deviceLUID                        = {};
64913     uint32_t                                                    deviceNodeMask                    = {};
64914     VULKAN_HPP_NAMESPACE::Bool32                                deviceLUIDValid                   = {};
64915     uint32_t                                                    subgroupSize                      = {};
64916     VULKAN_HPP_NAMESPACE::ShaderStageFlags                      subgroupSupportedStages           = {};
64917     VULKAN_HPP_NAMESPACE::SubgroupFeatureFlags                  subgroupSupportedOperations       = {};
64918     VULKAN_HPP_NAMESPACE::Bool32                                subgroupQuadOperationsInAllStages = {};
64919     VULKAN_HPP_NAMESPACE::PointClippingBehavior                 pointClippingBehavior =
64920       VULKAN_HPP_NAMESPACE::PointClippingBehavior::eAllClipPlanes;
64921     uint32_t                         maxMultiviewViewCount     = {};
64922     uint32_t                         maxMultiviewInstanceIndex = {};
64923     VULKAN_HPP_NAMESPACE::Bool32     protectedNoFault          = {};
64924     uint32_t                         maxPerSetDescriptors      = {};
64925     VULKAN_HPP_NAMESPACE::DeviceSize maxMemoryAllocationSize   = {};
64926   };
64927   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties ) ==
64928                               sizeof( VkPhysicalDeviceVulkan11Properties ),
64929                             "struct and wrapper have different size!" );
64930   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties>::value,
64931                             "struct wrapper is not a standard layout!" );
64932   VULKAN_HPP_STATIC_ASSERT(
64933     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties>::value,
64934     "PhysicalDeviceVulkan11Properties is not nothrow_move_constructible!" );
64935 
64936   template <>
64937   struct CppType<StructureType, StructureType::ePhysicalDeviceVulkan11Properties>
64938   {
64939     using Type = PhysicalDeviceVulkan11Properties;
64940   };
64941 
64942   struct PhysicalDeviceVulkan12Features
64943   {
64944     using NativeType = VkPhysicalDeviceVulkan12Features;
64945 
64946     static const bool                                  allowDuplicate = false;
64947     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceVulkan12Features;
64948 
64949 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVulkan12FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features64950     VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan12Features(
64951       VULKAN_HPP_NAMESPACE::Bool32 samplerMirrorClampToEdge_                           = {},
64952       VULKAN_HPP_NAMESPACE::Bool32 drawIndirectCount_                                  = {},
64953       VULKAN_HPP_NAMESPACE::Bool32 storageBuffer8BitAccess_                            = {},
64954       VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer8BitAccess_                  = {},
64955       VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant8_                               = {},
64956       VULKAN_HPP_NAMESPACE::Bool32 shaderBufferInt64Atomics_                           = {},
64957       VULKAN_HPP_NAMESPACE::Bool32 shaderSharedInt64Atomics_                           = {},
64958       VULKAN_HPP_NAMESPACE::Bool32 shaderFloat16_                                      = {},
64959       VULKAN_HPP_NAMESPACE::Bool32 shaderInt8_                                         = {},
64960       VULKAN_HPP_NAMESPACE::Bool32 descriptorIndexing_                                 = {},
64961       VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayDynamicIndexing_          = {},
64962       VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayDynamicIndexing_       = {},
64963       VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayDynamicIndexing_       = {},
64964       VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexing_         = {},
64965       VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexing_          = {},
64966       VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexing_         = {},
64967       VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexing_          = {},
64968       VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexing_       = {},
64969       VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayNonUniformIndexing_    = {},
64970       VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayNonUniformIndexing_    = {},
64971       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformBufferUpdateAfterBind_      = {},
64972       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingSampledImageUpdateAfterBind_       = {},
64973       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageImageUpdateAfterBind_       = {},
64974       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageBufferUpdateAfterBind_      = {},
64975       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind_ = {},
64976       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind_ = {},
64977       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUpdateUnusedWhilePending_          = {},
64978       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingPartiallyBound_                    = {},
64979       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingVariableDescriptorCount_           = {},
64980       VULKAN_HPP_NAMESPACE::Bool32 runtimeDescriptorArray_                             = {},
64981       VULKAN_HPP_NAMESPACE::Bool32 samplerFilterMinmax_                                = {},
64982       VULKAN_HPP_NAMESPACE::Bool32 scalarBlockLayout_                                  = {},
64983       VULKAN_HPP_NAMESPACE::Bool32 imagelessFramebuffer_                               = {},
64984       VULKAN_HPP_NAMESPACE::Bool32 uniformBufferStandardLayout_                        = {},
64985       VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupExtendedTypes_                        = {},
64986       VULKAN_HPP_NAMESPACE::Bool32 separateDepthStencilLayouts_                        = {},
64987       VULKAN_HPP_NAMESPACE::Bool32 hostQueryReset_                                     = {},
64988       VULKAN_HPP_NAMESPACE::Bool32 timelineSemaphore_                                  = {},
64989       VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress_                                = {},
64990       VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay_                   = {},
64991       VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice_                     = {},
64992       VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModel_                                  = {},
64993       VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelDeviceScope_                       = {},
64994       VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelAvailabilityVisibilityChains_      = {},
64995       VULKAN_HPP_NAMESPACE::Bool32 shaderOutputViewportIndex_                          = {},
64996       VULKAN_HPP_NAMESPACE::Bool32 shaderOutputLayer_                                  = {},
64997       VULKAN_HPP_NAMESPACE::Bool32 subgroupBroadcastDynamicId_                         = {} ) VULKAN_HPP_NOEXCEPT
64998       : samplerMirrorClampToEdge( samplerMirrorClampToEdge_ )
64999       , drawIndirectCount( drawIndirectCount_ )
65000       , storageBuffer8BitAccess( storageBuffer8BitAccess_ )
65001       , uniformAndStorageBuffer8BitAccess( uniformAndStorageBuffer8BitAccess_ )
65002       , storagePushConstant8( storagePushConstant8_ )
65003       , shaderBufferInt64Atomics( shaderBufferInt64Atomics_ )
65004       , shaderSharedInt64Atomics( shaderSharedInt64Atomics_ )
65005       , shaderFloat16( shaderFloat16_ )
65006       , shaderInt8( shaderInt8_ )
65007       , descriptorIndexing( descriptorIndexing_ )
65008       , shaderInputAttachmentArrayDynamicIndexing( shaderInputAttachmentArrayDynamicIndexing_ )
65009       , shaderUniformTexelBufferArrayDynamicIndexing( shaderUniformTexelBufferArrayDynamicIndexing_ )
65010       , shaderStorageTexelBufferArrayDynamicIndexing( shaderStorageTexelBufferArrayDynamicIndexing_ )
65011       , shaderUniformBufferArrayNonUniformIndexing( shaderUniformBufferArrayNonUniformIndexing_ )
65012       , shaderSampledImageArrayNonUniformIndexing( shaderSampledImageArrayNonUniformIndexing_ )
65013       , shaderStorageBufferArrayNonUniformIndexing( shaderStorageBufferArrayNonUniformIndexing_ )
65014       , shaderStorageImageArrayNonUniformIndexing( shaderStorageImageArrayNonUniformIndexing_ )
65015       , shaderInputAttachmentArrayNonUniformIndexing( shaderInputAttachmentArrayNonUniformIndexing_ )
65016       , shaderUniformTexelBufferArrayNonUniformIndexing( shaderUniformTexelBufferArrayNonUniformIndexing_ )
65017       , shaderStorageTexelBufferArrayNonUniformIndexing( shaderStorageTexelBufferArrayNonUniformIndexing_ )
65018       , descriptorBindingUniformBufferUpdateAfterBind( descriptorBindingUniformBufferUpdateAfterBind_ )
65019       , descriptorBindingSampledImageUpdateAfterBind( descriptorBindingSampledImageUpdateAfterBind_ )
65020       , descriptorBindingStorageImageUpdateAfterBind( descriptorBindingStorageImageUpdateAfterBind_ )
65021       , descriptorBindingStorageBufferUpdateAfterBind( descriptorBindingStorageBufferUpdateAfterBind_ )
65022       , descriptorBindingUniformTexelBufferUpdateAfterBind( descriptorBindingUniformTexelBufferUpdateAfterBind_ )
65023       , descriptorBindingStorageTexelBufferUpdateAfterBind( descriptorBindingStorageTexelBufferUpdateAfterBind_ )
65024       , descriptorBindingUpdateUnusedWhilePending( descriptorBindingUpdateUnusedWhilePending_ )
65025       , descriptorBindingPartiallyBound( descriptorBindingPartiallyBound_ )
65026       , descriptorBindingVariableDescriptorCount( descriptorBindingVariableDescriptorCount_ )
65027       , runtimeDescriptorArray( runtimeDescriptorArray_ )
65028       , samplerFilterMinmax( samplerFilterMinmax_ )
65029       , scalarBlockLayout( scalarBlockLayout_ )
65030       , imagelessFramebuffer( imagelessFramebuffer_ )
65031       , uniformBufferStandardLayout( uniformBufferStandardLayout_ )
65032       , shaderSubgroupExtendedTypes( shaderSubgroupExtendedTypes_ )
65033       , separateDepthStencilLayouts( separateDepthStencilLayouts_ )
65034       , hostQueryReset( hostQueryReset_ )
65035       , timelineSemaphore( timelineSemaphore_ )
65036       , bufferDeviceAddress( bufferDeviceAddress_ )
65037       , bufferDeviceAddressCaptureReplay( bufferDeviceAddressCaptureReplay_ )
65038       , bufferDeviceAddressMultiDevice( bufferDeviceAddressMultiDevice_ )
65039       , vulkanMemoryModel( vulkanMemoryModel_ )
65040       , vulkanMemoryModelDeviceScope( vulkanMemoryModelDeviceScope_ )
65041       , vulkanMemoryModelAvailabilityVisibilityChains( vulkanMemoryModelAvailabilityVisibilityChains_ )
65042       , shaderOutputViewportIndex( shaderOutputViewportIndex_ )
65043       , shaderOutputLayer( shaderOutputLayer_ )
65044       , subgroupBroadcastDynamicId( subgroupBroadcastDynamicId_ )
65045     {}
65046 
65047     VULKAN_HPP_CONSTEXPR
65048       PhysicalDeviceVulkan12Features( PhysicalDeviceVulkan12Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65049 
PhysicalDeviceVulkan12FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65050     PhysicalDeviceVulkan12Features( VkPhysicalDeviceVulkan12Features const & rhs ) VULKAN_HPP_NOEXCEPT
65051       : PhysicalDeviceVulkan12Features( *reinterpret_cast<PhysicalDeviceVulkan12Features const *>( &rhs ) )
65052     {}
65053 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
65054 
65055     PhysicalDeviceVulkan12Features &
65056       operator=( PhysicalDeviceVulkan12Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65057 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65058     PhysicalDeviceVulkan12Features & operator=( VkPhysicalDeviceVulkan12Features const & rhs ) VULKAN_HPP_NOEXCEPT
65059     {
65060       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features const *>( &rhs );
65061       return *this;
65062     }
65063 
65064 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65065     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
65066     {
65067       pNext = pNext_;
65068       return *this;
65069     }
65070 
65071     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setSamplerMirrorClampToEdgeVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65072       setSamplerMirrorClampToEdge( VULKAN_HPP_NAMESPACE::Bool32 samplerMirrorClampToEdge_ ) VULKAN_HPP_NOEXCEPT
65073     {
65074       samplerMirrorClampToEdge = samplerMirrorClampToEdge_;
65075       return *this;
65076     }
65077 
65078     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setDrawIndirectCountVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65079                             setDrawIndirectCount( VULKAN_HPP_NAMESPACE::Bool32 drawIndirectCount_ ) VULKAN_HPP_NOEXCEPT
65080     {
65081       drawIndirectCount = drawIndirectCount_;
65082       return *this;
65083     }
65084 
65085     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setStorageBuffer8BitAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65086       setStorageBuffer8BitAccess( VULKAN_HPP_NAMESPACE::Bool32 storageBuffer8BitAccess_ ) VULKAN_HPP_NOEXCEPT
65087     {
65088       storageBuffer8BitAccess = storageBuffer8BitAccess_;
65089       return *this;
65090     }
65091 
setUniformAndStorageBuffer8BitAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65092     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setUniformAndStorageBuffer8BitAccess(
65093       VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer8BitAccess_ ) VULKAN_HPP_NOEXCEPT
65094     {
65095       uniformAndStorageBuffer8BitAccess = uniformAndStorageBuffer8BitAccess_;
65096       return *this;
65097     }
65098 
65099     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setStoragePushConstant8VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65100       setStoragePushConstant8( VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant8_ ) VULKAN_HPP_NOEXCEPT
65101     {
65102       storagePushConstant8 = storagePushConstant8_;
65103       return *this;
65104     }
65105 
65106     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setShaderBufferInt64AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65107       setShaderBufferInt64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferInt64Atomics_ ) VULKAN_HPP_NOEXCEPT
65108     {
65109       shaderBufferInt64Atomics = shaderBufferInt64Atomics_;
65110       return *this;
65111     }
65112 
65113     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setShaderSharedInt64AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65114       setShaderSharedInt64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedInt64Atomics_ ) VULKAN_HPP_NOEXCEPT
65115     {
65116       shaderSharedInt64Atomics = shaderSharedInt64Atomics_;
65117       return *this;
65118     }
65119 
65120     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setShaderFloat16VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65121                             setShaderFloat16( VULKAN_HPP_NAMESPACE::Bool32 shaderFloat16_ ) VULKAN_HPP_NOEXCEPT
65122     {
65123       shaderFloat16 = shaderFloat16_;
65124       return *this;
65125     }
65126 
65127     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setShaderInt8VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65128                             setShaderInt8( VULKAN_HPP_NAMESPACE::Bool32 shaderInt8_ ) VULKAN_HPP_NOEXCEPT
65129     {
65130       shaderInt8 = shaderInt8_;
65131       return *this;
65132     }
65133 
65134     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setDescriptorIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65135       setDescriptorIndexing( VULKAN_HPP_NAMESPACE::Bool32 descriptorIndexing_ ) VULKAN_HPP_NOEXCEPT
65136     {
65137       descriptorIndexing = descriptorIndexing_;
65138       return *this;
65139     }
65140 
setShaderInputAttachmentArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65141     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderInputAttachmentArrayDynamicIndexing(
65142       VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
65143     {
65144       shaderInputAttachmentArrayDynamicIndexing = shaderInputAttachmentArrayDynamicIndexing_;
65145       return *this;
65146     }
65147 
setShaderUniformTexelBufferArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65148     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderUniformTexelBufferArrayDynamicIndexing(
65149       VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
65150     {
65151       shaderUniformTexelBufferArrayDynamicIndexing = shaderUniformTexelBufferArrayDynamicIndexing_;
65152       return *this;
65153     }
65154 
setShaderStorageTexelBufferArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65155     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderStorageTexelBufferArrayDynamicIndexing(
65156       VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
65157     {
65158       shaderStorageTexelBufferArrayDynamicIndexing = shaderStorageTexelBufferArrayDynamicIndexing_;
65159       return *this;
65160     }
65161 
setShaderUniformBufferArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65162     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderUniformBufferArrayNonUniformIndexing(
65163       VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
65164     {
65165       shaderUniformBufferArrayNonUniformIndexing = shaderUniformBufferArrayNonUniformIndexing_;
65166       return *this;
65167     }
65168 
setShaderSampledImageArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65169     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderSampledImageArrayNonUniformIndexing(
65170       VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
65171     {
65172       shaderSampledImageArrayNonUniformIndexing = shaderSampledImageArrayNonUniformIndexing_;
65173       return *this;
65174     }
65175 
setShaderStorageBufferArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65176     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderStorageBufferArrayNonUniformIndexing(
65177       VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
65178     {
65179       shaderStorageBufferArrayNonUniformIndexing = shaderStorageBufferArrayNonUniformIndexing_;
65180       return *this;
65181     }
65182 
setShaderStorageImageArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65183     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderStorageImageArrayNonUniformIndexing(
65184       VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
65185     {
65186       shaderStorageImageArrayNonUniformIndexing = shaderStorageImageArrayNonUniformIndexing_;
65187       return *this;
65188     }
65189 
setShaderInputAttachmentArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65190     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderInputAttachmentArrayNonUniformIndexing(
65191       VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
65192     {
65193       shaderInputAttachmentArrayNonUniformIndexing = shaderInputAttachmentArrayNonUniformIndexing_;
65194       return *this;
65195     }
65196 
setShaderUniformTexelBufferArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65197     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderUniformTexelBufferArrayNonUniformIndexing(
65198       VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
65199     {
65200       shaderUniformTexelBufferArrayNonUniformIndexing = shaderUniformTexelBufferArrayNonUniformIndexing_;
65201       return *this;
65202     }
65203 
setShaderStorageTexelBufferArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65204     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderStorageTexelBufferArrayNonUniformIndexing(
65205       VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
65206     {
65207       shaderStorageTexelBufferArrayNonUniformIndexing = shaderStorageTexelBufferArrayNonUniformIndexing_;
65208       return *this;
65209     }
65210 
setDescriptorBindingUniformBufferUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65211     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorBindingUniformBufferUpdateAfterBind(
65212       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
65213     {
65214       descriptorBindingUniformBufferUpdateAfterBind = descriptorBindingUniformBufferUpdateAfterBind_;
65215       return *this;
65216     }
65217 
setDescriptorBindingSampledImageUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65218     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorBindingSampledImageUpdateAfterBind(
65219       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingSampledImageUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
65220     {
65221       descriptorBindingSampledImageUpdateAfterBind = descriptorBindingSampledImageUpdateAfterBind_;
65222       return *this;
65223     }
65224 
setDescriptorBindingStorageImageUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65225     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorBindingStorageImageUpdateAfterBind(
65226       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageImageUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
65227     {
65228       descriptorBindingStorageImageUpdateAfterBind = descriptorBindingStorageImageUpdateAfterBind_;
65229       return *this;
65230     }
65231 
setDescriptorBindingStorageBufferUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65232     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorBindingStorageBufferUpdateAfterBind(
65233       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
65234     {
65235       descriptorBindingStorageBufferUpdateAfterBind = descriptorBindingStorageBufferUpdateAfterBind_;
65236       return *this;
65237     }
65238 
setDescriptorBindingUniformTexelBufferUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65239     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorBindingUniformTexelBufferUpdateAfterBind(
65240       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
65241     {
65242       descriptorBindingUniformTexelBufferUpdateAfterBind = descriptorBindingUniformTexelBufferUpdateAfterBind_;
65243       return *this;
65244     }
65245 
setDescriptorBindingStorageTexelBufferUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65246     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorBindingStorageTexelBufferUpdateAfterBind(
65247       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
65248     {
65249       descriptorBindingStorageTexelBufferUpdateAfterBind = descriptorBindingStorageTexelBufferUpdateAfterBind_;
65250       return *this;
65251     }
65252 
setDescriptorBindingUpdateUnusedWhilePendingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65253     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorBindingUpdateUnusedWhilePending(
65254       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUpdateUnusedWhilePending_ ) VULKAN_HPP_NOEXCEPT
65255     {
65256       descriptorBindingUpdateUnusedWhilePending = descriptorBindingUpdateUnusedWhilePending_;
65257       return *this;
65258     }
65259 
setDescriptorBindingPartiallyBoundVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65260     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorBindingPartiallyBound(
65261       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingPartiallyBound_ ) VULKAN_HPP_NOEXCEPT
65262     {
65263       descriptorBindingPartiallyBound = descriptorBindingPartiallyBound_;
65264       return *this;
65265     }
65266 
setDescriptorBindingVariableDescriptorCountVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65267     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorBindingVariableDescriptorCount(
65268       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingVariableDescriptorCount_ ) VULKAN_HPP_NOEXCEPT
65269     {
65270       descriptorBindingVariableDescriptorCount = descriptorBindingVariableDescriptorCount_;
65271       return *this;
65272     }
65273 
65274     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setRuntimeDescriptorArrayVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65275       setRuntimeDescriptorArray( VULKAN_HPP_NAMESPACE::Bool32 runtimeDescriptorArray_ ) VULKAN_HPP_NOEXCEPT
65276     {
65277       runtimeDescriptorArray = runtimeDescriptorArray_;
65278       return *this;
65279     }
65280 
65281     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setSamplerFilterMinmaxVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65282       setSamplerFilterMinmax( VULKAN_HPP_NAMESPACE::Bool32 samplerFilterMinmax_ ) VULKAN_HPP_NOEXCEPT
65283     {
65284       samplerFilterMinmax = samplerFilterMinmax_;
65285       return *this;
65286     }
65287 
65288     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setScalarBlockLayoutVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65289                             setScalarBlockLayout( VULKAN_HPP_NAMESPACE::Bool32 scalarBlockLayout_ ) VULKAN_HPP_NOEXCEPT
65290     {
65291       scalarBlockLayout = scalarBlockLayout_;
65292       return *this;
65293     }
65294 
65295     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setImagelessFramebufferVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65296       setImagelessFramebuffer( VULKAN_HPP_NAMESPACE::Bool32 imagelessFramebuffer_ ) VULKAN_HPP_NOEXCEPT
65297     {
65298       imagelessFramebuffer = imagelessFramebuffer_;
65299       return *this;
65300     }
65301 
65302     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setUniformBufferStandardLayoutVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65303       setUniformBufferStandardLayout( VULKAN_HPP_NAMESPACE::Bool32 uniformBufferStandardLayout_ ) VULKAN_HPP_NOEXCEPT
65304     {
65305       uniformBufferStandardLayout = uniformBufferStandardLayout_;
65306       return *this;
65307     }
65308 
65309     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setShaderSubgroupExtendedTypesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65310       setShaderSubgroupExtendedTypes( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupExtendedTypes_ ) VULKAN_HPP_NOEXCEPT
65311     {
65312       shaderSubgroupExtendedTypes = shaderSubgroupExtendedTypes_;
65313       return *this;
65314     }
65315 
65316     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setSeparateDepthStencilLayoutsVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65317       setSeparateDepthStencilLayouts( VULKAN_HPP_NAMESPACE::Bool32 separateDepthStencilLayouts_ ) VULKAN_HPP_NOEXCEPT
65318     {
65319       separateDepthStencilLayouts = separateDepthStencilLayouts_;
65320       return *this;
65321     }
65322 
65323     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setHostQueryResetVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65324                             setHostQueryReset( VULKAN_HPP_NAMESPACE::Bool32 hostQueryReset_ ) VULKAN_HPP_NOEXCEPT
65325     {
65326       hostQueryReset = hostQueryReset_;
65327       return *this;
65328     }
65329 
65330     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setTimelineSemaphoreVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65331                             setTimelineSemaphore( VULKAN_HPP_NAMESPACE::Bool32 timelineSemaphore_ ) VULKAN_HPP_NOEXCEPT
65332     {
65333       timelineSemaphore = timelineSemaphore_;
65334       return *this;
65335     }
65336 
65337     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setBufferDeviceAddressVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65338       setBufferDeviceAddress( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress_ ) VULKAN_HPP_NOEXCEPT
65339     {
65340       bufferDeviceAddress = bufferDeviceAddress_;
65341       return *this;
65342     }
65343 
setBufferDeviceAddressCaptureReplayVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65344     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setBufferDeviceAddressCaptureReplay(
65345       VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay_ ) VULKAN_HPP_NOEXCEPT
65346     {
65347       bufferDeviceAddressCaptureReplay = bufferDeviceAddressCaptureReplay_;
65348       return *this;
65349     }
65350 
setBufferDeviceAddressMultiDeviceVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65351     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setBufferDeviceAddressMultiDevice(
65352       VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice_ ) VULKAN_HPP_NOEXCEPT
65353     {
65354       bufferDeviceAddressMultiDevice = bufferDeviceAddressMultiDevice_;
65355       return *this;
65356     }
65357 
65358     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setVulkanMemoryModelVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65359                             setVulkanMemoryModel( VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModel_ ) VULKAN_HPP_NOEXCEPT
65360     {
65361       vulkanMemoryModel = vulkanMemoryModel_;
65362       return *this;
65363     }
65364 
65365     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setVulkanMemoryModelDeviceScopeVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65366       setVulkanMemoryModelDeviceScope( VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelDeviceScope_ ) VULKAN_HPP_NOEXCEPT
65367     {
65368       vulkanMemoryModelDeviceScope = vulkanMemoryModelDeviceScope_;
65369       return *this;
65370     }
65371 
setVulkanMemoryModelAvailabilityVisibilityChainsVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65372     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setVulkanMemoryModelAvailabilityVisibilityChains(
65373       VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelAvailabilityVisibilityChains_ ) VULKAN_HPP_NOEXCEPT
65374     {
65375       vulkanMemoryModelAvailabilityVisibilityChains = vulkanMemoryModelAvailabilityVisibilityChains_;
65376       return *this;
65377     }
65378 
65379     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setShaderOutputViewportIndexVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65380       setShaderOutputViewportIndex( VULKAN_HPP_NAMESPACE::Bool32 shaderOutputViewportIndex_ ) VULKAN_HPP_NOEXCEPT
65381     {
65382       shaderOutputViewportIndex = shaderOutputViewportIndex_;
65383       return *this;
65384     }
65385 
65386     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setShaderOutputLayerVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65387                             setShaderOutputLayer( VULKAN_HPP_NAMESPACE::Bool32 shaderOutputLayer_ ) VULKAN_HPP_NOEXCEPT
65388     {
65389       shaderOutputLayer = shaderOutputLayer_;
65390       return *this;
65391     }
65392 
65393     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setSubgroupBroadcastDynamicIdVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65394       setSubgroupBroadcastDynamicId( VULKAN_HPP_NAMESPACE::Bool32 subgroupBroadcastDynamicId_ ) VULKAN_HPP_NOEXCEPT
65395     {
65396       subgroupBroadcastDynamicId = subgroupBroadcastDynamicId_;
65397       return *this;
65398     }
65399 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
65400 
operator VkPhysicalDeviceVulkan12Features const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65401     explicit operator VkPhysicalDeviceVulkan12Features const &() const VULKAN_HPP_NOEXCEPT
65402     {
65403       return *reinterpret_cast<const VkPhysicalDeviceVulkan12Features *>( this );
65404     }
65405 
operator VkPhysicalDeviceVulkan12Features&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65406     explicit operator VkPhysicalDeviceVulkan12Features &() VULKAN_HPP_NOEXCEPT
65407     {
65408       return *reinterpret_cast<VkPhysicalDeviceVulkan12Features *>( this );
65409     }
65410 
65411 #if 14 <= VULKAN_HPP_CPP_VERSION
65412     auto
65413 #else
65414     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
65415                void * const &,
65416                VULKAN_HPP_NAMESPACE::Bool32 const &,
65417                VULKAN_HPP_NAMESPACE::Bool32 const &,
65418                VULKAN_HPP_NAMESPACE::Bool32 const &,
65419                VULKAN_HPP_NAMESPACE::Bool32 const &,
65420                VULKAN_HPP_NAMESPACE::Bool32 const &,
65421                VULKAN_HPP_NAMESPACE::Bool32 const &,
65422                VULKAN_HPP_NAMESPACE::Bool32 const &,
65423                VULKAN_HPP_NAMESPACE::Bool32 const &,
65424                VULKAN_HPP_NAMESPACE::Bool32 const &,
65425                VULKAN_HPP_NAMESPACE::Bool32 const &,
65426                VULKAN_HPP_NAMESPACE::Bool32 const &,
65427                VULKAN_HPP_NAMESPACE::Bool32 const &,
65428                VULKAN_HPP_NAMESPACE::Bool32 const &,
65429                VULKAN_HPP_NAMESPACE::Bool32 const &,
65430                VULKAN_HPP_NAMESPACE::Bool32 const &,
65431                VULKAN_HPP_NAMESPACE::Bool32 const &,
65432                VULKAN_HPP_NAMESPACE::Bool32 const &,
65433                VULKAN_HPP_NAMESPACE::Bool32 const &,
65434                VULKAN_HPP_NAMESPACE::Bool32 const &,
65435                VULKAN_HPP_NAMESPACE::Bool32 const &,
65436                VULKAN_HPP_NAMESPACE::Bool32 const &,
65437                VULKAN_HPP_NAMESPACE::Bool32 const &,
65438                VULKAN_HPP_NAMESPACE::Bool32 const &,
65439                VULKAN_HPP_NAMESPACE::Bool32 const &,
65440                VULKAN_HPP_NAMESPACE::Bool32 const &,
65441                VULKAN_HPP_NAMESPACE::Bool32 const &,
65442                VULKAN_HPP_NAMESPACE::Bool32 const &,
65443                VULKAN_HPP_NAMESPACE::Bool32 const &,
65444                VULKAN_HPP_NAMESPACE::Bool32 const &,
65445                VULKAN_HPP_NAMESPACE::Bool32 const &,
65446                VULKAN_HPP_NAMESPACE::Bool32 const &,
65447                VULKAN_HPP_NAMESPACE::Bool32 const &,
65448                VULKAN_HPP_NAMESPACE::Bool32 const &,
65449                VULKAN_HPP_NAMESPACE::Bool32 const &,
65450                VULKAN_HPP_NAMESPACE::Bool32 const &,
65451                VULKAN_HPP_NAMESPACE::Bool32 const &,
65452                VULKAN_HPP_NAMESPACE::Bool32 const &,
65453                VULKAN_HPP_NAMESPACE::Bool32 const &,
65454                VULKAN_HPP_NAMESPACE::Bool32 const &,
65455                VULKAN_HPP_NAMESPACE::Bool32 const &,
65456                VULKAN_HPP_NAMESPACE::Bool32 const &,
65457                VULKAN_HPP_NAMESPACE::Bool32 const &,
65458                VULKAN_HPP_NAMESPACE::Bool32 const &,
65459                VULKAN_HPP_NAMESPACE::Bool32 const &,
65460                VULKAN_HPP_NAMESPACE::Bool32 const &,
65461                VULKAN_HPP_NAMESPACE::Bool32 const &,
65462                VULKAN_HPP_NAMESPACE::Bool32 const &>
65463 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65464       reflect() const VULKAN_HPP_NOEXCEPT
65465     {
65466       return std::tie( sType,
65467                        pNext,
65468                        samplerMirrorClampToEdge,
65469                        drawIndirectCount,
65470                        storageBuffer8BitAccess,
65471                        uniformAndStorageBuffer8BitAccess,
65472                        storagePushConstant8,
65473                        shaderBufferInt64Atomics,
65474                        shaderSharedInt64Atomics,
65475                        shaderFloat16,
65476                        shaderInt8,
65477                        descriptorIndexing,
65478                        shaderInputAttachmentArrayDynamicIndexing,
65479                        shaderUniformTexelBufferArrayDynamicIndexing,
65480                        shaderStorageTexelBufferArrayDynamicIndexing,
65481                        shaderUniformBufferArrayNonUniformIndexing,
65482                        shaderSampledImageArrayNonUniformIndexing,
65483                        shaderStorageBufferArrayNonUniformIndexing,
65484                        shaderStorageImageArrayNonUniformIndexing,
65485                        shaderInputAttachmentArrayNonUniformIndexing,
65486                        shaderUniformTexelBufferArrayNonUniformIndexing,
65487                        shaderStorageTexelBufferArrayNonUniformIndexing,
65488                        descriptorBindingUniformBufferUpdateAfterBind,
65489                        descriptorBindingSampledImageUpdateAfterBind,
65490                        descriptorBindingStorageImageUpdateAfterBind,
65491                        descriptorBindingStorageBufferUpdateAfterBind,
65492                        descriptorBindingUniformTexelBufferUpdateAfterBind,
65493                        descriptorBindingStorageTexelBufferUpdateAfterBind,
65494                        descriptorBindingUpdateUnusedWhilePending,
65495                        descriptorBindingPartiallyBound,
65496                        descriptorBindingVariableDescriptorCount,
65497                        runtimeDescriptorArray,
65498                        samplerFilterMinmax,
65499                        scalarBlockLayout,
65500                        imagelessFramebuffer,
65501                        uniformBufferStandardLayout,
65502                        shaderSubgroupExtendedTypes,
65503                        separateDepthStencilLayouts,
65504                        hostQueryReset,
65505                        timelineSemaphore,
65506                        bufferDeviceAddress,
65507                        bufferDeviceAddressCaptureReplay,
65508                        bufferDeviceAddressMultiDevice,
65509                        vulkanMemoryModel,
65510                        vulkanMemoryModelDeviceScope,
65511                        vulkanMemoryModelAvailabilityVisibilityChains,
65512                        shaderOutputViewportIndex,
65513                        shaderOutputLayer,
65514                        subgroupBroadcastDynamicId );
65515     }
65516 
65517 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
65518     auto operator<=>( PhysicalDeviceVulkan12Features const & ) const = default;
65519 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65520     bool operator==( PhysicalDeviceVulkan12Features const & rhs ) const VULKAN_HPP_NOEXCEPT
65521     {
65522       return this->reflect() == rhs.reflect();
65523     }
65524 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features65525     bool operator!=( PhysicalDeviceVulkan12Features const & rhs ) const VULKAN_HPP_NOEXCEPT
65526     {
65527       return this->reflect() != rhs.reflect();
65528     }
65529 #endif
65530 
65531   public:
65532     VULKAN_HPP_NAMESPACE::StructureType sType                    = StructureType::ePhysicalDeviceVulkan12Features;
65533     void *                              pNext                    = {};
65534     VULKAN_HPP_NAMESPACE::Bool32        samplerMirrorClampToEdge = {};
65535     VULKAN_HPP_NAMESPACE::Bool32        drawIndirectCount        = {};
65536     VULKAN_HPP_NAMESPACE::Bool32        storageBuffer8BitAccess  = {};
65537     VULKAN_HPP_NAMESPACE::Bool32        uniformAndStorageBuffer8BitAccess                  = {};
65538     VULKAN_HPP_NAMESPACE::Bool32        storagePushConstant8                               = {};
65539     VULKAN_HPP_NAMESPACE::Bool32        shaderBufferInt64Atomics                           = {};
65540     VULKAN_HPP_NAMESPACE::Bool32        shaderSharedInt64Atomics                           = {};
65541     VULKAN_HPP_NAMESPACE::Bool32        shaderFloat16                                      = {};
65542     VULKAN_HPP_NAMESPACE::Bool32        shaderInt8                                         = {};
65543     VULKAN_HPP_NAMESPACE::Bool32        descriptorIndexing                                 = {};
65544     VULKAN_HPP_NAMESPACE::Bool32        shaderInputAttachmentArrayDynamicIndexing          = {};
65545     VULKAN_HPP_NAMESPACE::Bool32        shaderUniformTexelBufferArrayDynamicIndexing       = {};
65546     VULKAN_HPP_NAMESPACE::Bool32        shaderStorageTexelBufferArrayDynamicIndexing       = {};
65547     VULKAN_HPP_NAMESPACE::Bool32        shaderUniformBufferArrayNonUniformIndexing         = {};
65548     VULKAN_HPP_NAMESPACE::Bool32        shaderSampledImageArrayNonUniformIndexing          = {};
65549     VULKAN_HPP_NAMESPACE::Bool32        shaderStorageBufferArrayNonUniformIndexing         = {};
65550     VULKAN_HPP_NAMESPACE::Bool32        shaderStorageImageArrayNonUniformIndexing          = {};
65551     VULKAN_HPP_NAMESPACE::Bool32        shaderInputAttachmentArrayNonUniformIndexing       = {};
65552     VULKAN_HPP_NAMESPACE::Bool32        shaderUniformTexelBufferArrayNonUniformIndexing    = {};
65553     VULKAN_HPP_NAMESPACE::Bool32        shaderStorageTexelBufferArrayNonUniformIndexing    = {};
65554     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingUniformBufferUpdateAfterBind      = {};
65555     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingSampledImageUpdateAfterBind       = {};
65556     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingStorageImageUpdateAfterBind       = {};
65557     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingStorageBufferUpdateAfterBind      = {};
65558     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingUniformTexelBufferUpdateAfterBind = {};
65559     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingStorageTexelBufferUpdateAfterBind = {};
65560     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingUpdateUnusedWhilePending          = {};
65561     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingPartiallyBound                    = {};
65562     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingVariableDescriptorCount           = {};
65563     VULKAN_HPP_NAMESPACE::Bool32        runtimeDescriptorArray                             = {};
65564     VULKAN_HPP_NAMESPACE::Bool32        samplerFilterMinmax                                = {};
65565     VULKAN_HPP_NAMESPACE::Bool32        scalarBlockLayout                                  = {};
65566     VULKAN_HPP_NAMESPACE::Bool32        imagelessFramebuffer                               = {};
65567     VULKAN_HPP_NAMESPACE::Bool32        uniformBufferStandardLayout                        = {};
65568     VULKAN_HPP_NAMESPACE::Bool32        shaderSubgroupExtendedTypes                        = {};
65569     VULKAN_HPP_NAMESPACE::Bool32        separateDepthStencilLayouts                        = {};
65570     VULKAN_HPP_NAMESPACE::Bool32        hostQueryReset                                     = {};
65571     VULKAN_HPP_NAMESPACE::Bool32        timelineSemaphore                                  = {};
65572     VULKAN_HPP_NAMESPACE::Bool32        bufferDeviceAddress                                = {};
65573     VULKAN_HPP_NAMESPACE::Bool32        bufferDeviceAddressCaptureReplay                   = {};
65574     VULKAN_HPP_NAMESPACE::Bool32        bufferDeviceAddressMultiDevice                     = {};
65575     VULKAN_HPP_NAMESPACE::Bool32        vulkanMemoryModel                                  = {};
65576     VULKAN_HPP_NAMESPACE::Bool32        vulkanMemoryModelDeviceScope                       = {};
65577     VULKAN_HPP_NAMESPACE::Bool32        vulkanMemoryModelAvailabilityVisibilityChains      = {};
65578     VULKAN_HPP_NAMESPACE::Bool32        shaderOutputViewportIndex                          = {};
65579     VULKAN_HPP_NAMESPACE::Bool32        shaderOutputLayer                                  = {};
65580     VULKAN_HPP_NAMESPACE::Bool32        subgroupBroadcastDynamicId                         = {};
65581   };
65582   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features ) ==
65583                               sizeof( VkPhysicalDeviceVulkan12Features ),
65584                             "struct and wrapper have different size!" );
65585   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features>::value,
65586                             "struct wrapper is not a standard layout!" );
65587   VULKAN_HPP_STATIC_ASSERT(
65588     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features>::value,
65589     "PhysicalDeviceVulkan12Features is not nothrow_move_constructible!" );
65590 
65591   template <>
65592   struct CppType<StructureType, StructureType::ePhysicalDeviceVulkan12Features>
65593   {
65594     using Type = PhysicalDeviceVulkan12Features;
65595   };
65596 
65597   struct PhysicalDeviceVulkan12Properties
65598   {
65599     using NativeType = VkPhysicalDeviceVulkan12Properties;
65600 
65601     static const bool                                  allowDuplicate = false;
65602     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVulkan12Properties;
65603 
65604 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVulkan12PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties65605     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Properties(
65606       VULKAN_HPP_NAMESPACE::DriverId                        driverID_ = VULKAN_HPP_NAMESPACE::DriverId::eAmdProprietary,
65607       std::array<char, VK_MAX_DRIVER_NAME_SIZE> const &     driverName_         = {},
65608       std::array<char, VK_MAX_DRIVER_INFO_SIZE> const &     driverInfo_         = {},
65609       VULKAN_HPP_NAMESPACE::ConformanceVersion              conformanceVersion_ = {},
65610       VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence denormBehaviorIndependence_ =
65611         VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly,
65612       VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence roundingModeIndependence_ =
65613         VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly,
65614       VULKAN_HPP_NAMESPACE::Bool32           shaderSignedZeroInfNanPreserveFloat16_                = {},
65615       VULKAN_HPP_NAMESPACE::Bool32           shaderSignedZeroInfNanPreserveFloat32_                = {},
65616       VULKAN_HPP_NAMESPACE::Bool32           shaderSignedZeroInfNanPreserveFloat64_                = {},
65617       VULKAN_HPP_NAMESPACE::Bool32           shaderDenormPreserveFloat16_                          = {},
65618       VULKAN_HPP_NAMESPACE::Bool32           shaderDenormPreserveFloat32_                          = {},
65619       VULKAN_HPP_NAMESPACE::Bool32           shaderDenormPreserveFloat64_                          = {},
65620       VULKAN_HPP_NAMESPACE::Bool32           shaderDenormFlushToZeroFloat16_                       = {},
65621       VULKAN_HPP_NAMESPACE::Bool32           shaderDenormFlushToZeroFloat32_                       = {},
65622       VULKAN_HPP_NAMESPACE::Bool32           shaderDenormFlushToZeroFloat64_                       = {},
65623       VULKAN_HPP_NAMESPACE::Bool32           shaderRoundingModeRTEFloat16_                         = {},
65624       VULKAN_HPP_NAMESPACE::Bool32           shaderRoundingModeRTEFloat32_                         = {},
65625       VULKAN_HPP_NAMESPACE::Bool32           shaderRoundingModeRTEFloat64_                         = {},
65626       VULKAN_HPP_NAMESPACE::Bool32           shaderRoundingModeRTZFloat16_                         = {},
65627       VULKAN_HPP_NAMESPACE::Bool32           shaderRoundingModeRTZFloat32_                         = {},
65628       VULKAN_HPP_NAMESPACE::Bool32           shaderRoundingModeRTZFloat64_                         = {},
65629       uint32_t                               maxUpdateAfterBindDescriptorsInAllPools_              = {},
65630       VULKAN_HPP_NAMESPACE::Bool32           shaderUniformBufferArrayNonUniformIndexingNative_     = {},
65631       VULKAN_HPP_NAMESPACE::Bool32           shaderSampledImageArrayNonUniformIndexingNative_      = {},
65632       VULKAN_HPP_NAMESPACE::Bool32           shaderStorageBufferArrayNonUniformIndexingNative_     = {},
65633       VULKAN_HPP_NAMESPACE::Bool32           shaderStorageImageArrayNonUniformIndexingNative_      = {},
65634       VULKAN_HPP_NAMESPACE::Bool32           shaderInputAttachmentArrayNonUniformIndexingNative_   = {},
65635       VULKAN_HPP_NAMESPACE::Bool32           robustBufferAccessUpdateAfterBind_                    = {},
65636       VULKAN_HPP_NAMESPACE::Bool32           quadDivergentImplicitLod_                             = {},
65637       uint32_t                               maxPerStageDescriptorUpdateAfterBindSamplers_         = {},
65638       uint32_t                               maxPerStageDescriptorUpdateAfterBindUniformBuffers_   = {},
65639       uint32_t                               maxPerStageDescriptorUpdateAfterBindStorageBuffers_   = {},
65640       uint32_t                               maxPerStageDescriptorUpdateAfterBindSampledImages_    = {},
65641       uint32_t                               maxPerStageDescriptorUpdateAfterBindStorageImages_    = {},
65642       uint32_t                               maxPerStageDescriptorUpdateAfterBindInputAttachments_ = {},
65643       uint32_t                               maxPerStageUpdateAfterBindResources_                  = {},
65644       uint32_t                               maxDescriptorSetUpdateAfterBindSamplers_              = {},
65645       uint32_t                               maxDescriptorSetUpdateAfterBindUniformBuffers_        = {},
65646       uint32_t                               maxDescriptorSetUpdateAfterBindUniformBuffersDynamic_ = {},
65647       uint32_t                               maxDescriptorSetUpdateAfterBindStorageBuffers_        = {},
65648       uint32_t                               maxDescriptorSetUpdateAfterBindStorageBuffersDynamic_ = {},
65649       uint32_t                               maxDescriptorSetUpdateAfterBindSampledImages_         = {},
65650       uint32_t                               maxDescriptorSetUpdateAfterBindStorageImages_         = {},
65651       uint32_t                               maxDescriptorSetUpdateAfterBindInputAttachments_      = {},
65652       VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedDepthResolveModes_                           = {},
65653       VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedStencilResolveModes_                         = {},
65654       VULKAN_HPP_NAMESPACE::Bool32           independentResolveNone_                               = {},
65655       VULKAN_HPP_NAMESPACE::Bool32           independentResolve_                                   = {},
65656       VULKAN_HPP_NAMESPACE::Bool32           filterMinmaxSingleComponentFormats_                   = {},
65657       VULKAN_HPP_NAMESPACE::Bool32           filterMinmaxImageComponentMapping_                    = {},
65658       uint64_t                               maxTimelineSemaphoreValueDifference_                  = {},
65659       VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferIntegerColorSampleCounts_ = {} ) VULKAN_HPP_NOEXCEPT
65660       : driverID( driverID_ )
65661       , driverName( driverName_ )
65662       , driverInfo( driverInfo_ )
65663       , conformanceVersion( conformanceVersion_ )
65664       , denormBehaviorIndependence( denormBehaviorIndependence_ )
65665       , roundingModeIndependence( roundingModeIndependence_ )
65666       , shaderSignedZeroInfNanPreserveFloat16( shaderSignedZeroInfNanPreserveFloat16_ )
65667       , shaderSignedZeroInfNanPreserveFloat32( shaderSignedZeroInfNanPreserveFloat32_ )
65668       , shaderSignedZeroInfNanPreserveFloat64( shaderSignedZeroInfNanPreserveFloat64_ )
65669       , shaderDenormPreserveFloat16( shaderDenormPreserveFloat16_ )
65670       , shaderDenormPreserveFloat32( shaderDenormPreserveFloat32_ )
65671       , shaderDenormPreserveFloat64( shaderDenormPreserveFloat64_ )
65672       , shaderDenormFlushToZeroFloat16( shaderDenormFlushToZeroFloat16_ )
65673       , shaderDenormFlushToZeroFloat32( shaderDenormFlushToZeroFloat32_ )
65674       , shaderDenormFlushToZeroFloat64( shaderDenormFlushToZeroFloat64_ )
65675       , shaderRoundingModeRTEFloat16( shaderRoundingModeRTEFloat16_ )
65676       , shaderRoundingModeRTEFloat32( shaderRoundingModeRTEFloat32_ )
65677       , shaderRoundingModeRTEFloat64( shaderRoundingModeRTEFloat64_ )
65678       , shaderRoundingModeRTZFloat16( shaderRoundingModeRTZFloat16_ )
65679       , shaderRoundingModeRTZFloat32( shaderRoundingModeRTZFloat32_ )
65680       , shaderRoundingModeRTZFloat64( shaderRoundingModeRTZFloat64_ )
65681       , maxUpdateAfterBindDescriptorsInAllPools( maxUpdateAfterBindDescriptorsInAllPools_ )
65682       , shaderUniformBufferArrayNonUniformIndexingNative( shaderUniformBufferArrayNonUniformIndexingNative_ )
65683       , shaderSampledImageArrayNonUniformIndexingNative( shaderSampledImageArrayNonUniformIndexingNative_ )
65684       , shaderStorageBufferArrayNonUniformIndexingNative( shaderStorageBufferArrayNonUniformIndexingNative_ )
65685       , shaderStorageImageArrayNonUniformIndexingNative( shaderStorageImageArrayNonUniformIndexingNative_ )
65686       , shaderInputAttachmentArrayNonUniformIndexingNative( shaderInputAttachmentArrayNonUniformIndexingNative_ )
65687       , robustBufferAccessUpdateAfterBind( robustBufferAccessUpdateAfterBind_ )
65688       , quadDivergentImplicitLod( quadDivergentImplicitLod_ )
65689       , maxPerStageDescriptorUpdateAfterBindSamplers( maxPerStageDescriptorUpdateAfterBindSamplers_ )
65690       , maxPerStageDescriptorUpdateAfterBindUniformBuffers( maxPerStageDescriptorUpdateAfterBindUniformBuffers_ )
65691       , maxPerStageDescriptorUpdateAfterBindStorageBuffers( maxPerStageDescriptorUpdateAfterBindStorageBuffers_ )
65692       , maxPerStageDescriptorUpdateAfterBindSampledImages( maxPerStageDescriptorUpdateAfterBindSampledImages_ )
65693       , maxPerStageDescriptorUpdateAfterBindStorageImages( maxPerStageDescriptorUpdateAfterBindStorageImages_ )
65694       , maxPerStageDescriptorUpdateAfterBindInputAttachments( maxPerStageDescriptorUpdateAfterBindInputAttachments_ )
65695       , maxPerStageUpdateAfterBindResources( maxPerStageUpdateAfterBindResources_ )
65696       , maxDescriptorSetUpdateAfterBindSamplers( maxDescriptorSetUpdateAfterBindSamplers_ )
65697       , maxDescriptorSetUpdateAfterBindUniformBuffers( maxDescriptorSetUpdateAfterBindUniformBuffers_ )
65698       , maxDescriptorSetUpdateAfterBindUniformBuffersDynamic( maxDescriptorSetUpdateAfterBindUniformBuffersDynamic_ )
65699       , maxDescriptorSetUpdateAfterBindStorageBuffers( maxDescriptorSetUpdateAfterBindStorageBuffers_ )
65700       , maxDescriptorSetUpdateAfterBindStorageBuffersDynamic( maxDescriptorSetUpdateAfterBindStorageBuffersDynamic_ )
65701       , maxDescriptorSetUpdateAfterBindSampledImages( maxDescriptorSetUpdateAfterBindSampledImages_ )
65702       , maxDescriptorSetUpdateAfterBindStorageImages( maxDescriptorSetUpdateAfterBindStorageImages_ )
65703       , maxDescriptorSetUpdateAfterBindInputAttachments( maxDescriptorSetUpdateAfterBindInputAttachments_ )
65704       , supportedDepthResolveModes( supportedDepthResolveModes_ )
65705       , supportedStencilResolveModes( supportedStencilResolveModes_ )
65706       , independentResolveNone( independentResolveNone_ )
65707       , independentResolve( independentResolve_ )
65708       , filterMinmaxSingleComponentFormats( filterMinmaxSingleComponentFormats_ )
65709       , filterMinmaxImageComponentMapping( filterMinmaxImageComponentMapping_ )
65710       , maxTimelineSemaphoreValueDifference( maxTimelineSemaphoreValueDifference_ )
65711       , framebufferIntegerColorSampleCounts( framebufferIntegerColorSampleCounts_ )
65712     {}
65713 
65714     VULKAN_HPP_CONSTEXPR_14
65715       PhysicalDeviceVulkan12Properties( PhysicalDeviceVulkan12Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65716 
PhysicalDeviceVulkan12PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties65717     PhysicalDeviceVulkan12Properties( VkPhysicalDeviceVulkan12Properties const & rhs ) VULKAN_HPP_NOEXCEPT
65718       : PhysicalDeviceVulkan12Properties( *reinterpret_cast<PhysicalDeviceVulkan12Properties const *>( &rhs ) )
65719     {}
65720 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
65721 
65722     PhysicalDeviceVulkan12Properties &
65723       operator=( PhysicalDeviceVulkan12Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65724 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties65725     PhysicalDeviceVulkan12Properties & operator=( VkPhysicalDeviceVulkan12Properties const & rhs ) VULKAN_HPP_NOEXCEPT
65726     {
65727       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties const *>( &rhs );
65728       return *this;
65729     }
65730 
operator VkPhysicalDeviceVulkan12Properties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties65731     explicit operator VkPhysicalDeviceVulkan12Properties const &() const VULKAN_HPP_NOEXCEPT
65732     {
65733       return *reinterpret_cast<const VkPhysicalDeviceVulkan12Properties *>( this );
65734     }
65735 
operator VkPhysicalDeviceVulkan12Properties&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties65736     explicit operator VkPhysicalDeviceVulkan12Properties &() VULKAN_HPP_NOEXCEPT
65737     {
65738       return *reinterpret_cast<VkPhysicalDeviceVulkan12Properties *>( this );
65739     }
65740 
65741 #if 14 <= VULKAN_HPP_CPP_VERSION
65742     auto
65743 #else
65744     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
65745                void * const &,
65746                VULKAN_HPP_NAMESPACE::DriverId const &,
65747                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DRIVER_NAME_SIZE> const &,
65748                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DRIVER_INFO_SIZE> const &,
65749                VULKAN_HPP_NAMESPACE::ConformanceVersion const &,
65750                VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence const &,
65751                VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence const &,
65752                VULKAN_HPP_NAMESPACE::Bool32 const &,
65753                VULKAN_HPP_NAMESPACE::Bool32 const &,
65754                VULKAN_HPP_NAMESPACE::Bool32 const &,
65755                VULKAN_HPP_NAMESPACE::Bool32 const &,
65756                VULKAN_HPP_NAMESPACE::Bool32 const &,
65757                VULKAN_HPP_NAMESPACE::Bool32 const &,
65758                VULKAN_HPP_NAMESPACE::Bool32 const &,
65759                VULKAN_HPP_NAMESPACE::Bool32 const &,
65760                VULKAN_HPP_NAMESPACE::Bool32 const &,
65761                VULKAN_HPP_NAMESPACE::Bool32 const &,
65762                VULKAN_HPP_NAMESPACE::Bool32 const &,
65763                VULKAN_HPP_NAMESPACE::Bool32 const &,
65764                VULKAN_HPP_NAMESPACE::Bool32 const &,
65765                VULKAN_HPP_NAMESPACE::Bool32 const &,
65766                VULKAN_HPP_NAMESPACE::Bool32 const &,
65767                uint32_t const &,
65768                VULKAN_HPP_NAMESPACE::Bool32 const &,
65769                VULKAN_HPP_NAMESPACE::Bool32 const &,
65770                VULKAN_HPP_NAMESPACE::Bool32 const &,
65771                VULKAN_HPP_NAMESPACE::Bool32 const &,
65772                VULKAN_HPP_NAMESPACE::Bool32 const &,
65773                VULKAN_HPP_NAMESPACE::Bool32 const &,
65774                VULKAN_HPP_NAMESPACE::Bool32 const &,
65775                uint32_t const &,
65776                uint32_t const &,
65777                uint32_t const &,
65778                uint32_t const &,
65779                uint32_t const &,
65780                uint32_t const &,
65781                uint32_t const &,
65782                uint32_t const &,
65783                uint32_t const &,
65784                uint32_t const &,
65785                uint32_t const &,
65786                uint32_t const &,
65787                uint32_t const &,
65788                uint32_t const &,
65789                uint32_t const &,
65790                VULKAN_HPP_NAMESPACE::ResolveModeFlags const &,
65791                VULKAN_HPP_NAMESPACE::ResolveModeFlags const &,
65792                VULKAN_HPP_NAMESPACE::Bool32 const &,
65793                VULKAN_HPP_NAMESPACE::Bool32 const &,
65794                VULKAN_HPP_NAMESPACE::Bool32 const &,
65795                VULKAN_HPP_NAMESPACE::Bool32 const &,
65796                uint64_t const &,
65797                VULKAN_HPP_NAMESPACE::SampleCountFlags const &>
65798 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties65799       reflect() const VULKAN_HPP_NOEXCEPT
65800     {
65801       return std::tie( sType,
65802                        pNext,
65803                        driverID,
65804                        driverName,
65805                        driverInfo,
65806                        conformanceVersion,
65807                        denormBehaviorIndependence,
65808                        roundingModeIndependence,
65809                        shaderSignedZeroInfNanPreserveFloat16,
65810                        shaderSignedZeroInfNanPreserveFloat32,
65811                        shaderSignedZeroInfNanPreserveFloat64,
65812                        shaderDenormPreserveFloat16,
65813                        shaderDenormPreserveFloat32,
65814                        shaderDenormPreserveFloat64,
65815                        shaderDenormFlushToZeroFloat16,
65816                        shaderDenormFlushToZeroFloat32,
65817                        shaderDenormFlushToZeroFloat64,
65818                        shaderRoundingModeRTEFloat16,
65819                        shaderRoundingModeRTEFloat32,
65820                        shaderRoundingModeRTEFloat64,
65821                        shaderRoundingModeRTZFloat16,
65822                        shaderRoundingModeRTZFloat32,
65823                        shaderRoundingModeRTZFloat64,
65824                        maxUpdateAfterBindDescriptorsInAllPools,
65825                        shaderUniformBufferArrayNonUniformIndexingNative,
65826                        shaderSampledImageArrayNonUniformIndexingNative,
65827                        shaderStorageBufferArrayNonUniformIndexingNative,
65828                        shaderStorageImageArrayNonUniformIndexingNative,
65829                        shaderInputAttachmentArrayNonUniformIndexingNative,
65830                        robustBufferAccessUpdateAfterBind,
65831                        quadDivergentImplicitLod,
65832                        maxPerStageDescriptorUpdateAfterBindSamplers,
65833                        maxPerStageDescriptorUpdateAfterBindUniformBuffers,
65834                        maxPerStageDescriptorUpdateAfterBindStorageBuffers,
65835                        maxPerStageDescriptorUpdateAfterBindSampledImages,
65836                        maxPerStageDescriptorUpdateAfterBindStorageImages,
65837                        maxPerStageDescriptorUpdateAfterBindInputAttachments,
65838                        maxPerStageUpdateAfterBindResources,
65839                        maxDescriptorSetUpdateAfterBindSamplers,
65840                        maxDescriptorSetUpdateAfterBindUniformBuffers,
65841                        maxDescriptorSetUpdateAfterBindUniformBuffersDynamic,
65842                        maxDescriptorSetUpdateAfterBindStorageBuffers,
65843                        maxDescriptorSetUpdateAfterBindStorageBuffersDynamic,
65844                        maxDescriptorSetUpdateAfterBindSampledImages,
65845                        maxDescriptorSetUpdateAfterBindStorageImages,
65846                        maxDescriptorSetUpdateAfterBindInputAttachments,
65847                        supportedDepthResolveModes,
65848                        supportedStencilResolveModes,
65849                        independentResolveNone,
65850                        independentResolve,
65851                        filterMinmaxSingleComponentFormats,
65852                        filterMinmaxImageComponentMapping,
65853                        maxTimelineSemaphoreValueDifference,
65854                        framebufferIntegerColorSampleCounts );
65855     }
65856 
65857 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
65858     auto operator<=>( PhysicalDeviceVulkan12Properties const & ) const = default;
65859 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties65860     bool operator==( PhysicalDeviceVulkan12Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
65861     {
65862       return this->reflect() == rhs.reflect();
65863     }
65864 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties65865     bool operator!=( PhysicalDeviceVulkan12Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
65866     {
65867       return this->reflect() != rhs.reflect();
65868     }
65869 #endif
65870 
65871   public:
65872     VULKAN_HPP_NAMESPACE::StructureType sType    = StructureType::ePhysicalDeviceVulkan12Properties;
65873     void *                              pNext    = {};
65874     VULKAN_HPP_NAMESPACE::DriverId      driverID = VULKAN_HPP_NAMESPACE::DriverId::eAmdProprietary;
65875     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DRIVER_NAME_SIZE> driverName         = {};
65876     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DRIVER_INFO_SIZE> driverInfo         = {};
65877     VULKAN_HPP_NAMESPACE::ConformanceVersion                            conformanceVersion = {};
65878     VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence               denormBehaviorIndependence =
65879       VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly;
65880     VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence roundingModeIndependence =
65881       VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly;
65882     VULKAN_HPP_NAMESPACE::Bool32           shaderSignedZeroInfNanPreserveFloat16                = {};
65883     VULKAN_HPP_NAMESPACE::Bool32           shaderSignedZeroInfNanPreserveFloat32                = {};
65884     VULKAN_HPP_NAMESPACE::Bool32           shaderSignedZeroInfNanPreserveFloat64                = {};
65885     VULKAN_HPP_NAMESPACE::Bool32           shaderDenormPreserveFloat16                          = {};
65886     VULKAN_HPP_NAMESPACE::Bool32           shaderDenormPreserveFloat32                          = {};
65887     VULKAN_HPP_NAMESPACE::Bool32           shaderDenormPreserveFloat64                          = {};
65888     VULKAN_HPP_NAMESPACE::Bool32           shaderDenormFlushToZeroFloat16                       = {};
65889     VULKAN_HPP_NAMESPACE::Bool32           shaderDenormFlushToZeroFloat32                       = {};
65890     VULKAN_HPP_NAMESPACE::Bool32           shaderDenormFlushToZeroFloat64                       = {};
65891     VULKAN_HPP_NAMESPACE::Bool32           shaderRoundingModeRTEFloat16                         = {};
65892     VULKAN_HPP_NAMESPACE::Bool32           shaderRoundingModeRTEFloat32                         = {};
65893     VULKAN_HPP_NAMESPACE::Bool32           shaderRoundingModeRTEFloat64                         = {};
65894     VULKAN_HPP_NAMESPACE::Bool32           shaderRoundingModeRTZFloat16                         = {};
65895     VULKAN_HPP_NAMESPACE::Bool32           shaderRoundingModeRTZFloat32                         = {};
65896     VULKAN_HPP_NAMESPACE::Bool32           shaderRoundingModeRTZFloat64                         = {};
65897     uint32_t                               maxUpdateAfterBindDescriptorsInAllPools              = {};
65898     VULKAN_HPP_NAMESPACE::Bool32           shaderUniformBufferArrayNonUniformIndexingNative     = {};
65899     VULKAN_HPP_NAMESPACE::Bool32           shaderSampledImageArrayNonUniformIndexingNative      = {};
65900     VULKAN_HPP_NAMESPACE::Bool32           shaderStorageBufferArrayNonUniformIndexingNative     = {};
65901     VULKAN_HPP_NAMESPACE::Bool32           shaderStorageImageArrayNonUniformIndexingNative      = {};
65902     VULKAN_HPP_NAMESPACE::Bool32           shaderInputAttachmentArrayNonUniformIndexingNative   = {};
65903     VULKAN_HPP_NAMESPACE::Bool32           robustBufferAccessUpdateAfterBind                    = {};
65904     VULKAN_HPP_NAMESPACE::Bool32           quadDivergentImplicitLod                             = {};
65905     uint32_t                               maxPerStageDescriptorUpdateAfterBindSamplers         = {};
65906     uint32_t                               maxPerStageDescriptorUpdateAfterBindUniformBuffers   = {};
65907     uint32_t                               maxPerStageDescriptorUpdateAfterBindStorageBuffers   = {};
65908     uint32_t                               maxPerStageDescriptorUpdateAfterBindSampledImages    = {};
65909     uint32_t                               maxPerStageDescriptorUpdateAfterBindStorageImages    = {};
65910     uint32_t                               maxPerStageDescriptorUpdateAfterBindInputAttachments = {};
65911     uint32_t                               maxPerStageUpdateAfterBindResources                  = {};
65912     uint32_t                               maxDescriptorSetUpdateAfterBindSamplers              = {};
65913     uint32_t                               maxDescriptorSetUpdateAfterBindUniformBuffers        = {};
65914     uint32_t                               maxDescriptorSetUpdateAfterBindUniformBuffersDynamic = {};
65915     uint32_t                               maxDescriptorSetUpdateAfterBindStorageBuffers        = {};
65916     uint32_t                               maxDescriptorSetUpdateAfterBindStorageBuffersDynamic = {};
65917     uint32_t                               maxDescriptorSetUpdateAfterBindSampledImages         = {};
65918     uint32_t                               maxDescriptorSetUpdateAfterBindStorageImages         = {};
65919     uint32_t                               maxDescriptorSetUpdateAfterBindInputAttachments      = {};
65920     VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedDepthResolveModes                           = {};
65921     VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedStencilResolveModes                         = {};
65922     VULKAN_HPP_NAMESPACE::Bool32           independentResolveNone                               = {};
65923     VULKAN_HPP_NAMESPACE::Bool32           independentResolve                                   = {};
65924     VULKAN_HPP_NAMESPACE::Bool32           filterMinmaxSingleComponentFormats                   = {};
65925     VULKAN_HPP_NAMESPACE::Bool32           filterMinmaxImageComponentMapping                    = {};
65926     uint64_t                               maxTimelineSemaphoreValueDifference                  = {};
65927     VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferIntegerColorSampleCounts                  = {};
65928   };
65929   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties ) ==
65930                               sizeof( VkPhysicalDeviceVulkan12Properties ),
65931                             "struct and wrapper have different size!" );
65932   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties>::value,
65933                             "struct wrapper is not a standard layout!" );
65934   VULKAN_HPP_STATIC_ASSERT(
65935     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties>::value,
65936     "PhysicalDeviceVulkan12Properties is not nothrow_move_constructible!" );
65937 
65938   template <>
65939   struct CppType<StructureType, StructureType::ePhysicalDeviceVulkan12Properties>
65940   {
65941     using Type = PhysicalDeviceVulkan12Properties;
65942   };
65943 
65944   struct PhysicalDeviceVulkanMemoryModelFeatures
65945   {
65946     using NativeType = VkPhysicalDeviceVulkanMemoryModelFeatures;
65947 
65948     static const bool                                  allowDuplicate = false;
65949     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
65950       StructureType::ePhysicalDeviceVulkanMemoryModelFeatures;
65951 
65952 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVulkanMemoryModelFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures65953     VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkanMemoryModelFeatures(
65954       VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModel_                             = {},
65955       VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelDeviceScope_                  = {},
65956       VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelAvailabilityVisibilityChains_ = {} ) VULKAN_HPP_NOEXCEPT
65957       : vulkanMemoryModel( vulkanMemoryModel_ )
65958       , vulkanMemoryModelDeviceScope( vulkanMemoryModelDeviceScope_ )
65959       , vulkanMemoryModelAvailabilityVisibilityChains( vulkanMemoryModelAvailabilityVisibilityChains_ )
65960     {}
65961 
65962     VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkanMemoryModelFeatures( PhysicalDeviceVulkanMemoryModelFeatures const & rhs )
65963       VULKAN_HPP_NOEXCEPT = default;
65964 
PhysicalDeviceVulkanMemoryModelFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures65965     PhysicalDeviceVulkanMemoryModelFeatures( VkPhysicalDeviceVulkanMemoryModelFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
65966       : PhysicalDeviceVulkanMemoryModelFeatures(
65967           *reinterpret_cast<PhysicalDeviceVulkanMemoryModelFeatures const *>( &rhs ) )
65968     {}
65969 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
65970 
65971     PhysicalDeviceVulkanMemoryModelFeatures &
65972       operator=( PhysicalDeviceVulkanMemoryModelFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65973 
65974     PhysicalDeviceVulkanMemoryModelFeatures &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures65975       operator=( VkPhysicalDeviceVulkanMemoryModelFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
65976     {
65977       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures const *>( &rhs );
65978       return *this;
65979     }
65980 
65981 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures65982     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkanMemoryModelFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
65983     {
65984       pNext = pNext_;
65985       return *this;
65986     }
65987 
65988     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkanMemoryModelFeatures &
setVulkanMemoryModelVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures65989                             setVulkanMemoryModel( VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModel_ ) VULKAN_HPP_NOEXCEPT
65990     {
65991       vulkanMemoryModel = vulkanMemoryModel_;
65992       return *this;
65993     }
65994 
65995     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkanMemoryModelFeatures &
setVulkanMemoryModelDeviceScopeVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures65996       setVulkanMemoryModelDeviceScope( VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelDeviceScope_ ) VULKAN_HPP_NOEXCEPT
65997     {
65998       vulkanMemoryModelDeviceScope = vulkanMemoryModelDeviceScope_;
65999       return *this;
66000     }
66001 
setVulkanMemoryModelAvailabilityVisibilityChainsVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures66002     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkanMemoryModelFeatures & setVulkanMemoryModelAvailabilityVisibilityChains(
66003       VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelAvailabilityVisibilityChains_ ) VULKAN_HPP_NOEXCEPT
66004     {
66005       vulkanMemoryModelAvailabilityVisibilityChains = vulkanMemoryModelAvailabilityVisibilityChains_;
66006       return *this;
66007     }
66008 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
66009 
operator VkPhysicalDeviceVulkanMemoryModelFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures66010     explicit operator VkPhysicalDeviceVulkanMemoryModelFeatures const &() const VULKAN_HPP_NOEXCEPT
66011     {
66012       return *reinterpret_cast<const VkPhysicalDeviceVulkanMemoryModelFeatures *>( this );
66013     }
66014 
operator VkPhysicalDeviceVulkanMemoryModelFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures66015     explicit operator VkPhysicalDeviceVulkanMemoryModelFeatures &() VULKAN_HPP_NOEXCEPT
66016     {
66017       return *reinterpret_cast<VkPhysicalDeviceVulkanMemoryModelFeatures *>( this );
66018     }
66019 
66020 #if 14 <= VULKAN_HPP_CPP_VERSION
66021     auto
66022 #else
66023     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
66024                void * const &,
66025                VULKAN_HPP_NAMESPACE::Bool32 const &,
66026                VULKAN_HPP_NAMESPACE::Bool32 const &,
66027                VULKAN_HPP_NAMESPACE::Bool32 const &>
66028 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures66029       reflect() const VULKAN_HPP_NOEXCEPT
66030     {
66031       return std::tie(
66032         sType, pNext, vulkanMemoryModel, vulkanMemoryModelDeviceScope, vulkanMemoryModelAvailabilityVisibilityChains );
66033     }
66034 
66035 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
66036     auto operator<=>( PhysicalDeviceVulkanMemoryModelFeatures const & ) const = default;
66037 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures66038     bool operator==( PhysicalDeviceVulkanMemoryModelFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
66039     {
66040       return this->reflect() == rhs.reflect();
66041     }
66042 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures66043     bool operator!=( PhysicalDeviceVulkanMemoryModelFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
66044     {
66045       return this->reflect() != rhs.reflect();
66046     }
66047 #endif
66048 
66049   public:
66050     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::ePhysicalDeviceVulkanMemoryModelFeatures;
66051     void *                              pNext             = {};
66052     VULKAN_HPP_NAMESPACE::Bool32        vulkanMemoryModel = {};
66053     VULKAN_HPP_NAMESPACE::Bool32        vulkanMemoryModelDeviceScope                  = {};
66054     VULKAN_HPP_NAMESPACE::Bool32        vulkanMemoryModelAvailabilityVisibilityChains = {};
66055   };
66056   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures ) ==
66057                               sizeof( VkPhysicalDeviceVulkanMemoryModelFeatures ),
66058                             "struct and wrapper have different size!" );
66059   VULKAN_HPP_STATIC_ASSERT(
66060     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures>::value,
66061     "struct wrapper is not a standard layout!" );
66062   VULKAN_HPP_STATIC_ASSERT(
66063     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures>::value,
66064     "PhysicalDeviceVulkanMemoryModelFeatures is not nothrow_move_constructible!" );
66065 
66066   template <>
66067   struct CppType<StructureType, StructureType::ePhysicalDeviceVulkanMemoryModelFeatures>
66068   {
66069     using Type = PhysicalDeviceVulkanMemoryModelFeatures;
66070   };
66071   using PhysicalDeviceVulkanMemoryModelFeaturesKHR = PhysicalDeviceVulkanMemoryModelFeatures;
66072 
66073   struct PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR
66074   {
66075     using NativeType = VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR;
66076 
66077     static const bool                                  allowDuplicate = false;
66078     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
66079       StructureType::ePhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR;
66080 
66081 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR66082     VULKAN_HPP_CONSTEXPR PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR(
66083       VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayout_                  = {},
66084       VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayoutScalarBlockLayout_ = {},
66085       VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayout8BitAccess_        = {},
66086       VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayout16BitAccess_       = {} ) VULKAN_HPP_NOEXCEPT
66087       : workgroupMemoryExplicitLayout( workgroupMemoryExplicitLayout_ )
66088       , workgroupMemoryExplicitLayoutScalarBlockLayout( workgroupMemoryExplicitLayoutScalarBlockLayout_ )
66089       , workgroupMemoryExplicitLayout8BitAccess( workgroupMemoryExplicitLayout8BitAccess_ )
66090       , workgroupMemoryExplicitLayout16BitAccess( workgroupMemoryExplicitLayout16BitAccess_ )
66091     {}
66092 
66093     VULKAN_HPP_CONSTEXPR PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR(
66094       PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66095 
PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR66096     PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR(
66097       VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
66098       : PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR(
66099           *reinterpret_cast<PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const *>( &rhs ) )
66100     {}
66101 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
66102 
66103     PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR &
66104       operator=( PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66105 
66106     PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR66107       operator=( VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
66108     {
66109       *this =
66110         *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const *>( &rhs );
66111       return *this;
66112     }
66113 
66114 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
66115     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR66116                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
66117     {
66118       pNext = pNext_;
66119       return *this;
66120     }
66121 
setWorkgroupMemoryExplicitLayoutVULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR66122     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR & setWorkgroupMemoryExplicitLayout(
66123       VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayout_ ) VULKAN_HPP_NOEXCEPT
66124     {
66125       workgroupMemoryExplicitLayout = workgroupMemoryExplicitLayout_;
66126       return *this;
66127     }
66128 
66129     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR &
setWorkgroupMemoryExplicitLayoutScalarBlockLayoutVULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR66130                             setWorkgroupMemoryExplicitLayoutScalarBlockLayout(
66131                               VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayoutScalarBlockLayout_ ) VULKAN_HPP_NOEXCEPT
66132     {
66133       workgroupMemoryExplicitLayoutScalarBlockLayout = workgroupMemoryExplicitLayoutScalarBlockLayout_;
66134       return *this;
66135     }
66136 
66137     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR &
setWorkgroupMemoryExplicitLayout8BitAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR66138                             setWorkgroupMemoryExplicitLayout8BitAccess(
66139                               VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayout8BitAccess_ ) VULKAN_HPP_NOEXCEPT
66140     {
66141       workgroupMemoryExplicitLayout8BitAccess = workgroupMemoryExplicitLayout8BitAccess_;
66142       return *this;
66143     }
66144 
66145     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR &
setWorkgroupMemoryExplicitLayout16BitAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR66146                             setWorkgroupMemoryExplicitLayout16BitAccess(
66147                               VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayout16BitAccess_ ) VULKAN_HPP_NOEXCEPT
66148     {
66149       workgroupMemoryExplicitLayout16BitAccess = workgroupMemoryExplicitLayout16BitAccess_;
66150       return *this;
66151     }
66152 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
66153 
operator VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR66154     explicit operator VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
66155     {
66156       return *reinterpret_cast<const VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR *>( this );
66157     }
66158 
operator VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR66159     explicit operator VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR &() VULKAN_HPP_NOEXCEPT
66160     {
66161       return *reinterpret_cast<VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR *>( this );
66162     }
66163 
66164 #if 14 <= VULKAN_HPP_CPP_VERSION
66165     auto
66166 #else
66167     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
66168                void * const &,
66169                VULKAN_HPP_NAMESPACE::Bool32 const &,
66170                VULKAN_HPP_NAMESPACE::Bool32 const &,
66171                VULKAN_HPP_NAMESPACE::Bool32 const &,
66172                VULKAN_HPP_NAMESPACE::Bool32 const &>
66173 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR66174       reflect() const VULKAN_HPP_NOEXCEPT
66175     {
66176       return std::tie( sType,
66177                        pNext,
66178                        workgroupMemoryExplicitLayout,
66179                        workgroupMemoryExplicitLayoutScalarBlockLayout,
66180                        workgroupMemoryExplicitLayout8BitAccess,
66181                        workgroupMemoryExplicitLayout16BitAccess );
66182     }
66183 
66184 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
66185     auto operator<=>( PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & ) const = default;
66186 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR66187     bool operator==( PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
66188     {
66189       return this->reflect() == rhs.reflect();
66190     }
66191 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR66192     bool operator!=( PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
66193     {
66194       return this->reflect() != rhs.reflect();
66195     }
66196 #endif
66197 
66198   public:
66199     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR;
66200     void *                              pNext = {};
66201     VULKAN_HPP_NAMESPACE::Bool32        workgroupMemoryExplicitLayout                  = {};
66202     VULKAN_HPP_NAMESPACE::Bool32        workgroupMemoryExplicitLayoutScalarBlockLayout = {};
66203     VULKAN_HPP_NAMESPACE::Bool32        workgroupMemoryExplicitLayout8BitAccess        = {};
66204     VULKAN_HPP_NAMESPACE::Bool32        workgroupMemoryExplicitLayout16BitAccess       = {};
66205   };
66206   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR ) ==
66207                               sizeof( VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR ),
66208                             "struct and wrapper have different size!" );
66209   VULKAN_HPP_STATIC_ASSERT(
66210     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR>::value,
66211     "struct wrapper is not a standard layout!" );
66212   VULKAN_HPP_STATIC_ASSERT(
66213     std::is_nothrow_move_constructible<
66214       VULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR>::value,
66215     "PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR is not nothrow_move_constructible!" );
66216 
66217   template <>
66218   struct CppType<StructureType, StructureType::ePhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR>
66219   {
66220     using Type = PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR;
66221   };
66222 
66223   struct PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT
66224   {
66225     using NativeType = VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT;
66226 
66227     static const bool                                  allowDuplicate = false;
66228     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
66229       StructureType::ePhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT;
66230 
66231 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT66232     VULKAN_HPP_CONSTEXPR PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT(
66233       VULKAN_HPP_NAMESPACE::Bool32 ycbcr2plane444Formats_ = {} ) VULKAN_HPP_NOEXCEPT
66234       : ycbcr2plane444Formats( ycbcr2plane444Formats_ )
66235     {}
66236 
66237     VULKAN_HPP_CONSTEXPR PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT(
66238       PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66239 
PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT66240     PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT( VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & rhs )
66241       VULKAN_HPP_NOEXCEPT
66242       : PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT(
66243           *reinterpret_cast<PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const *>( &rhs ) )
66244     {}
66245 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
66246 
66247     PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT &
66248       operator=( PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66249 
66250     PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT66251       operator=( VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
66252     {
66253       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const *>( &rhs );
66254       return *this;
66255     }
66256 
66257 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
66258     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT66259                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
66260     {
66261       pNext = pNext_;
66262       return *this;
66263     }
66264 
66265     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT &
setYcbcr2plane444FormatsVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT66266       setYcbcr2plane444Formats( VULKAN_HPP_NAMESPACE::Bool32 ycbcr2plane444Formats_ ) VULKAN_HPP_NOEXCEPT
66267     {
66268       ycbcr2plane444Formats = ycbcr2plane444Formats_;
66269       return *this;
66270     }
66271 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
66272 
operator VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT66273     explicit operator VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
66274     {
66275       return *reinterpret_cast<const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT *>( this );
66276     }
66277 
operator VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT66278     explicit operator VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT &() VULKAN_HPP_NOEXCEPT
66279     {
66280       return *reinterpret_cast<VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT *>( this );
66281     }
66282 
66283 #if 14 <= VULKAN_HPP_CPP_VERSION
66284     auto
66285 #else
66286     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
66287 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT66288       reflect() const VULKAN_HPP_NOEXCEPT
66289     {
66290       return std::tie( sType, pNext, ycbcr2plane444Formats );
66291     }
66292 
66293 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
66294     auto operator<=>( PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & ) const = default;
66295 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT66296     bool operator==( PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
66297     {
66298       return this->reflect() == rhs.reflect();
66299     }
66300 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT66301     bool operator!=( PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
66302     {
66303       return this->reflect() != rhs.reflect();
66304     }
66305 #endif
66306 
66307   public:
66308     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT;
66309     void *                              pNext = {};
66310     VULKAN_HPP_NAMESPACE::Bool32        ycbcr2plane444Formats = {};
66311   };
66312   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT ) ==
66313                               sizeof( VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT ),
66314                             "struct and wrapper have different size!" );
66315   VULKAN_HPP_STATIC_ASSERT(
66316     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT>::value,
66317     "struct wrapper is not a standard layout!" );
66318   VULKAN_HPP_STATIC_ASSERT(
66319     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT>::value,
66320     "PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT is not nothrow_move_constructible!" );
66321 
66322   template <>
66323   struct CppType<StructureType, StructureType::ePhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT>
66324   {
66325     using Type = PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT;
66326   };
66327 
66328   struct PhysicalDeviceYcbcrImageArraysFeaturesEXT
66329   {
66330     using NativeType = VkPhysicalDeviceYcbcrImageArraysFeaturesEXT;
66331 
66332     static const bool                                  allowDuplicate = false;
66333     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
66334       StructureType::ePhysicalDeviceYcbcrImageArraysFeaturesEXT;
66335 
66336 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceYcbcrImageArraysFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT66337     VULKAN_HPP_CONSTEXPR PhysicalDeviceYcbcrImageArraysFeaturesEXT(
66338       VULKAN_HPP_NAMESPACE::Bool32 ycbcrImageArrays_ = {} ) VULKAN_HPP_NOEXCEPT : ycbcrImageArrays( ycbcrImageArrays_ )
66339     {}
66340 
66341     VULKAN_HPP_CONSTEXPR PhysicalDeviceYcbcrImageArraysFeaturesEXT(
66342       PhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66343 
PhysicalDeviceYcbcrImageArraysFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT66344     PhysicalDeviceYcbcrImageArraysFeaturesEXT( VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs )
66345       VULKAN_HPP_NOEXCEPT
66346       : PhysicalDeviceYcbcrImageArraysFeaturesEXT(
66347           *reinterpret_cast<PhysicalDeviceYcbcrImageArraysFeaturesEXT const *>( &rhs ) )
66348     {}
66349 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
66350 
66351     PhysicalDeviceYcbcrImageArraysFeaturesEXT &
66352       operator=( PhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66353 
66354     PhysicalDeviceYcbcrImageArraysFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT66355       operator=( VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
66356     {
66357       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT const *>( &rhs );
66358       return *this;
66359     }
66360 
66361 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT66362     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcrImageArraysFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
66363     {
66364       pNext = pNext_;
66365       return *this;
66366     }
66367 
66368     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcrImageArraysFeaturesEXT &
setYcbcrImageArraysVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT66369                             setYcbcrImageArrays( VULKAN_HPP_NAMESPACE::Bool32 ycbcrImageArrays_ ) VULKAN_HPP_NOEXCEPT
66370     {
66371       ycbcrImageArrays = ycbcrImageArrays_;
66372       return *this;
66373     }
66374 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
66375 
operator VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT66376     explicit operator VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
66377     {
66378       return *reinterpret_cast<const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT *>( this );
66379     }
66380 
operator VkPhysicalDeviceYcbcrImageArraysFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT66381     explicit operator VkPhysicalDeviceYcbcrImageArraysFeaturesEXT &() VULKAN_HPP_NOEXCEPT
66382     {
66383       return *reinterpret_cast<VkPhysicalDeviceYcbcrImageArraysFeaturesEXT *>( this );
66384     }
66385 
66386 #if 14 <= VULKAN_HPP_CPP_VERSION
66387     auto
66388 #else
66389     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
66390 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT66391       reflect() const VULKAN_HPP_NOEXCEPT
66392     {
66393       return std::tie( sType, pNext, ycbcrImageArrays );
66394     }
66395 
66396 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
66397     auto operator<=>( PhysicalDeviceYcbcrImageArraysFeaturesEXT const & ) const = default;
66398 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT66399     bool operator==( PhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
66400     {
66401       return this->reflect() == rhs.reflect();
66402     }
66403 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT66404     bool operator!=( PhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
66405     {
66406       return this->reflect() != rhs.reflect();
66407     }
66408 #endif
66409 
66410   public:
66411     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::ePhysicalDeviceYcbcrImageArraysFeaturesEXT;
66412     void *                              pNext            = {};
66413     VULKAN_HPP_NAMESPACE::Bool32        ycbcrImageArrays = {};
66414   };
66415   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT ) ==
66416                               sizeof( VkPhysicalDeviceYcbcrImageArraysFeaturesEXT ),
66417                             "struct and wrapper have different size!" );
66418   VULKAN_HPP_STATIC_ASSERT(
66419     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT>::value,
66420     "struct wrapper is not a standard layout!" );
66421   VULKAN_HPP_STATIC_ASSERT(
66422     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT>::value,
66423     "PhysicalDeviceYcbcrImageArraysFeaturesEXT is not nothrow_move_constructible!" );
66424 
66425   template <>
66426   struct CppType<StructureType, StructureType::ePhysicalDeviceYcbcrImageArraysFeaturesEXT>
66427   {
66428     using Type = PhysicalDeviceYcbcrImageArraysFeaturesEXT;
66429   };
66430 
66431   struct PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR
66432   {
66433     using NativeType = VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR;
66434 
66435     static const bool                                  allowDuplicate = false;
66436     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
66437       StructureType::ePhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR;
66438 
66439 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR66440     VULKAN_HPP_CONSTEXPR PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR(
66441       VULKAN_HPP_NAMESPACE::Bool32 shaderZeroInitializeWorkgroupMemory_ = {} ) VULKAN_HPP_NOEXCEPT
66442       : shaderZeroInitializeWorkgroupMemory( shaderZeroInitializeWorkgroupMemory_ )
66443     {}
66444 
66445     VULKAN_HPP_CONSTEXPR PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR(
66446       PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66447 
PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR66448     PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR(
66449       VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
66450       : PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR(
66451           *reinterpret_cast<PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR const *>( &rhs ) )
66452     {}
66453 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
66454 
66455     PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR &
66456       operator=( PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66457 
66458     PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR66459       operator=( VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
66460     {
66461       *this =
66462         *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR const *>( &rhs );
66463       return *this;
66464     }
66465 
66466 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
66467     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR &
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR66468                             setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
66469     {
66470       pNext = pNext_;
66471       return *this;
66472     }
66473 
66474     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR &
setShaderZeroInitializeWorkgroupMemoryVULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR66475       setShaderZeroInitializeWorkgroupMemory( VULKAN_HPP_NAMESPACE::Bool32 shaderZeroInitializeWorkgroupMemory_ )
66476         VULKAN_HPP_NOEXCEPT
66477     {
66478       shaderZeroInitializeWorkgroupMemory = shaderZeroInitializeWorkgroupMemory_;
66479       return *this;
66480     }
66481 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
66482 
operator VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR66483     explicit operator VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
66484     {
66485       return *reinterpret_cast<const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR *>( this );
66486     }
66487 
operator VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR66488     explicit operator VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR &() VULKAN_HPP_NOEXCEPT
66489     {
66490       return *reinterpret_cast<VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR *>( this );
66491     }
66492 
66493 #if 14 <= VULKAN_HPP_CPP_VERSION
66494     auto
66495 #else
66496     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
66497 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR66498       reflect() const VULKAN_HPP_NOEXCEPT
66499     {
66500       return std::tie( sType, pNext, shaderZeroInitializeWorkgroupMemory );
66501     }
66502 
66503 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
66504     auto operator<=>( PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR const & ) const = default;
66505 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR66506     bool operator==( PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
66507     {
66508       return this->reflect() == rhs.reflect();
66509     }
66510 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR66511     bool operator!=( PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
66512     {
66513       return this->reflect() != rhs.reflect();
66514     }
66515 #endif
66516 
66517   public:
66518     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR;
66519     void *                              pNext = {};
66520     VULKAN_HPP_NAMESPACE::Bool32        shaderZeroInitializeWorkgroupMemory = {};
66521   };
66522   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR ) ==
66523                               sizeof( VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR ),
66524                             "struct and wrapper have different size!" );
66525   VULKAN_HPP_STATIC_ASSERT(
66526     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR>::value,
66527     "struct wrapper is not a standard layout!" );
66528   VULKAN_HPP_STATIC_ASSERT(
66529     std::is_nothrow_move_constructible<
66530       VULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR>::value,
66531     "PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR is not nothrow_move_constructible!" );
66532 
66533   template <>
66534   struct CppType<StructureType, StructureType::ePhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR>
66535   {
66536     using Type = PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR;
66537   };
66538 
66539   struct PipelineCacheCreateInfo
66540   {
66541     using NativeType = VkPipelineCacheCreateInfo;
66542 
66543     static const bool                                  allowDuplicate = false;
66544     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineCacheCreateInfo;
66545 
66546 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineCacheCreateInfoVULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo66547     VULKAN_HPP_CONSTEXPR PipelineCacheCreateInfo( VULKAN_HPP_NAMESPACE::PipelineCacheCreateFlags flags_           = {},
66548                                                   size_t                                         initialDataSize_ = {},
66549                                                   const void * pInitialData_ = {} ) VULKAN_HPP_NOEXCEPT
66550       : flags( flags_ )
66551       , initialDataSize( initialDataSize_ )
66552       , pInitialData( pInitialData_ )
66553     {}
66554 
66555     VULKAN_HPP_CONSTEXPR PipelineCacheCreateInfo( PipelineCacheCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66556 
PipelineCacheCreateInfoVULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo66557     PipelineCacheCreateInfo( VkPipelineCacheCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
66558       : PipelineCacheCreateInfo( *reinterpret_cast<PipelineCacheCreateInfo const *>( &rhs ) )
66559     {}
66560 
66561 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
66562     template <typename T>
PipelineCacheCreateInfoVULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo66563     PipelineCacheCreateInfo( VULKAN_HPP_NAMESPACE::PipelineCacheCreateFlags                 flags_,
66564                              VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & initialData_ )
66565       : flags( flags_ ), initialDataSize( initialData_.size() * sizeof( T ) ), pInitialData( initialData_.data() )
66566     {}
66567 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
66568 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
66569 
66570     PipelineCacheCreateInfo & operator=( PipelineCacheCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66571 
operator =VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo66572     PipelineCacheCreateInfo & operator=( VkPipelineCacheCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
66573     {
66574       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo const *>( &rhs );
66575       return *this;
66576     }
66577 
66578 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo66579     VULKAN_HPP_CONSTEXPR_14 PipelineCacheCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
66580     {
66581       pNext = pNext_;
66582       return *this;
66583     }
66584 
66585     VULKAN_HPP_CONSTEXPR_14 PipelineCacheCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo66586                             setFlags( VULKAN_HPP_NAMESPACE::PipelineCacheCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
66587     {
66588       flags = flags_;
66589       return *this;
66590     }
66591 
setInitialDataSizeVULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo66592     VULKAN_HPP_CONSTEXPR_14 PipelineCacheCreateInfo & setInitialDataSize( size_t initialDataSize_ ) VULKAN_HPP_NOEXCEPT
66593     {
66594       initialDataSize = initialDataSize_;
66595       return *this;
66596     }
66597 
setPInitialDataVULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo66598     VULKAN_HPP_CONSTEXPR_14 PipelineCacheCreateInfo & setPInitialData( const void * pInitialData_ ) VULKAN_HPP_NOEXCEPT
66599     {
66600       pInitialData = pInitialData_;
66601       return *this;
66602     }
66603 
66604 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
66605     template <typename T>
66606     PipelineCacheCreateInfo &
setInitialDataVULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo66607       setInitialData( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & initialData_ ) VULKAN_HPP_NOEXCEPT
66608     {
66609       initialDataSize = initialData_.size() * sizeof( T );
66610       pInitialData    = initialData_.data();
66611       return *this;
66612     }
66613 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
66614 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
66615 
operator VkPipelineCacheCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo66616     explicit operator VkPipelineCacheCreateInfo const &() const VULKAN_HPP_NOEXCEPT
66617     {
66618       return *reinterpret_cast<const VkPipelineCacheCreateInfo *>( this );
66619     }
66620 
operator VkPipelineCacheCreateInfo&VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo66621     explicit operator VkPipelineCacheCreateInfo &() VULKAN_HPP_NOEXCEPT
66622     {
66623       return *reinterpret_cast<VkPipelineCacheCreateInfo *>( this );
66624     }
66625 
66626 #if 14 <= VULKAN_HPP_CPP_VERSION
66627     auto
66628 #else
66629     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
66630                const void * const &,
66631                VULKAN_HPP_NAMESPACE::PipelineCacheCreateFlags const &,
66632                size_t const &,
66633                const void * const &>
66634 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo66635       reflect() const VULKAN_HPP_NOEXCEPT
66636     {
66637       return std::tie( sType, pNext, flags, initialDataSize, pInitialData );
66638     }
66639 
66640 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
66641     auto operator<=>( PipelineCacheCreateInfo const & ) const = default;
66642 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo66643     bool operator==( PipelineCacheCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
66644     {
66645       return this->reflect() == rhs.reflect();
66646     }
66647 
operator !=VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo66648     bool operator!=( PipelineCacheCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
66649     {
66650       return this->reflect() != rhs.reflect();
66651     }
66652 #endif
66653 
66654   public:
66655     VULKAN_HPP_NAMESPACE::StructureType            sType           = StructureType::ePipelineCacheCreateInfo;
66656     const void *                                   pNext           = {};
66657     VULKAN_HPP_NAMESPACE::PipelineCacheCreateFlags flags           = {};
66658     size_t                                         initialDataSize = {};
66659     const void *                                   pInitialData    = {};
66660   };
66661   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo ) ==
66662                               sizeof( VkPipelineCacheCreateInfo ),
66663                             "struct and wrapper have different size!" );
66664   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo>::value,
66665                             "struct wrapper is not a standard layout!" );
66666   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo>::value,
66667                             "PipelineCacheCreateInfo is not nothrow_move_constructible!" );
66668 
66669   template <>
66670   struct CppType<StructureType, StructureType::ePipelineCacheCreateInfo>
66671   {
66672     using Type = PipelineCacheCreateInfo;
66673   };
66674 
66675   struct PipelineCacheHeaderVersionOne
66676   {
66677     using NativeType = VkPipelineCacheHeaderVersionOne;
66678 
66679 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineCacheHeaderVersionOneVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne66680     VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne(
66681       uint32_t                                         headerSize_ = {},
66682       VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersion headerVersion_ =
66683         VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersion::eOne,
66684       uint32_t                                  vendorID_          = {},
66685       uint32_t                                  deviceID_          = {},
66686       std::array<uint8_t, VK_UUID_SIZE> const & pipelineCacheUUID_ = {} ) VULKAN_HPP_NOEXCEPT
66687       : headerSize( headerSize_ )
66688       , headerVersion( headerVersion_ )
66689       , vendorID( vendorID_ )
66690       , deviceID( deviceID_ )
66691       , pipelineCacheUUID( pipelineCacheUUID_ )
66692     {}
66693 
66694     VULKAN_HPP_CONSTEXPR_14
66695       PipelineCacheHeaderVersionOne( PipelineCacheHeaderVersionOne const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66696 
PipelineCacheHeaderVersionOneVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne66697     PipelineCacheHeaderVersionOne( VkPipelineCacheHeaderVersionOne const & rhs ) VULKAN_HPP_NOEXCEPT
66698       : PipelineCacheHeaderVersionOne( *reinterpret_cast<PipelineCacheHeaderVersionOne const *>( &rhs ) )
66699     {}
66700 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
66701 
66702     PipelineCacheHeaderVersionOne &
66703       operator=( PipelineCacheHeaderVersionOne const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66704 
operator =VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne66705     PipelineCacheHeaderVersionOne & operator=( VkPipelineCacheHeaderVersionOne const & rhs ) VULKAN_HPP_NOEXCEPT
66706     {
66707       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne const *>( &rhs );
66708       return *this;
66709     }
66710 
66711 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setHeaderSizeVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne66712     VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne & setHeaderSize( uint32_t headerSize_ ) VULKAN_HPP_NOEXCEPT
66713     {
66714       headerSize = headerSize_;
66715       return *this;
66716     }
66717 
66718     VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne &
setHeaderVersionVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne66719       setHeaderVersion( VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersion headerVersion_ ) VULKAN_HPP_NOEXCEPT
66720     {
66721       headerVersion = headerVersion_;
66722       return *this;
66723     }
66724 
setVendorIDVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne66725     VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne & setVendorID( uint32_t vendorID_ ) VULKAN_HPP_NOEXCEPT
66726     {
66727       vendorID = vendorID_;
66728       return *this;
66729     }
66730 
setDeviceIDVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne66731     VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne & setDeviceID( uint32_t deviceID_ ) VULKAN_HPP_NOEXCEPT
66732     {
66733       deviceID = deviceID_;
66734       return *this;
66735     }
66736 
66737     VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne &
setPipelineCacheUUIDVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne66738       setPipelineCacheUUID( std::array<uint8_t, VK_UUID_SIZE> pipelineCacheUUID_ ) VULKAN_HPP_NOEXCEPT
66739     {
66740       pipelineCacheUUID = pipelineCacheUUID_;
66741       return *this;
66742     }
66743 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
66744 
operator VkPipelineCacheHeaderVersionOne const&VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne66745     explicit operator VkPipelineCacheHeaderVersionOne const &() const VULKAN_HPP_NOEXCEPT
66746     {
66747       return *reinterpret_cast<const VkPipelineCacheHeaderVersionOne *>( this );
66748     }
66749 
operator VkPipelineCacheHeaderVersionOne&VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne66750     explicit operator VkPipelineCacheHeaderVersionOne &() VULKAN_HPP_NOEXCEPT
66751     {
66752       return *reinterpret_cast<VkPipelineCacheHeaderVersionOne *>( this );
66753     }
66754 
66755 #if 14 <= VULKAN_HPP_CPP_VERSION
66756     auto
66757 #else
66758     std::tuple<uint32_t const &,
66759                VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersion const &,
66760                uint32_t const &,
66761                uint32_t const &,
66762                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &>
66763 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne66764       reflect() const VULKAN_HPP_NOEXCEPT
66765     {
66766       return std::tie( headerSize, headerVersion, vendorID, deviceID, pipelineCacheUUID );
66767     }
66768 
66769 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
66770     auto operator<=>( PipelineCacheHeaderVersionOne const & ) const = default;
66771 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne66772     bool operator==( PipelineCacheHeaderVersionOne const & rhs ) const VULKAN_HPP_NOEXCEPT
66773     {
66774       return this->reflect() == rhs.reflect();
66775     }
66776 
operator !=VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne66777     bool operator!=( PipelineCacheHeaderVersionOne const & rhs ) const VULKAN_HPP_NOEXCEPT
66778     {
66779       return this->reflect() != rhs.reflect();
66780     }
66781 #endif
66782 
66783   public:
66784     uint32_t                                         headerSize = {};
66785     VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersion headerVersion =
66786       VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersion::eOne;
66787     uint32_t                                                    vendorID          = {};
66788     uint32_t                                                    deviceID          = {};
66789     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> pipelineCacheUUID = {};
66790   };
66791   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne ) ==
66792                               sizeof( VkPipelineCacheHeaderVersionOne ),
66793                             "struct and wrapper have different size!" );
66794   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne>::value,
66795                             "struct wrapper is not a standard layout!" );
66796   VULKAN_HPP_STATIC_ASSERT(
66797     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne>::value,
66798     "PipelineCacheHeaderVersionOne is not nothrow_move_constructible!" );
66799 
66800   struct PipelineColorBlendAdvancedStateCreateInfoEXT
66801   {
66802     using NativeType = VkPipelineColorBlendAdvancedStateCreateInfoEXT;
66803 
66804     static const bool                                  allowDuplicate = false;
66805     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
66806       StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT;
66807 
66808 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineColorBlendAdvancedStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT66809     VULKAN_HPP_CONSTEXPR PipelineColorBlendAdvancedStateCreateInfoEXT(
66810       VULKAN_HPP_NAMESPACE::Bool32          srcPremultiplied_ = {},
66811       VULKAN_HPP_NAMESPACE::Bool32          dstPremultiplied_ = {},
66812       VULKAN_HPP_NAMESPACE::BlendOverlapEXT blendOverlap_     = VULKAN_HPP_NAMESPACE::BlendOverlapEXT::eUncorrelated )
66813       VULKAN_HPP_NOEXCEPT
66814       : srcPremultiplied( srcPremultiplied_ )
66815       , dstPremultiplied( dstPremultiplied_ )
66816       , blendOverlap( blendOverlap_ )
66817     {}
66818 
66819     VULKAN_HPP_CONSTEXPR PipelineColorBlendAdvancedStateCreateInfoEXT(
66820       PipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66821 
PipelineColorBlendAdvancedStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT66822     PipelineColorBlendAdvancedStateCreateInfoEXT( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs )
66823       VULKAN_HPP_NOEXCEPT
66824       : PipelineColorBlendAdvancedStateCreateInfoEXT(
66825           *reinterpret_cast<PipelineColorBlendAdvancedStateCreateInfoEXT const *>( &rhs ) )
66826     {}
66827 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
66828 
66829     PipelineColorBlendAdvancedStateCreateInfoEXT &
66830       operator=( PipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66831 
66832     PipelineColorBlendAdvancedStateCreateInfoEXT &
operator =VULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT66833       operator=( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
66834     {
66835       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT const *>( &rhs );
66836       return *this;
66837     }
66838 
66839 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
66840     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAdvancedStateCreateInfoEXT &
setPNextVULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT66841                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
66842     {
66843       pNext = pNext_;
66844       return *this;
66845     }
66846 
66847     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAdvancedStateCreateInfoEXT &
setSrcPremultipliedVULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT66848                             setSrcPremultiplied( VULKAN_HPP_NAMESPACE::Bool32 srcPremultiplied_ ) VULKAN_HPP_NOEXCEPT
66849     {
66850       srcPremultiplied = srcPremultiplied_;
66851       return *this;
66852     }
66853 
66854     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAdvancedStateCreateInfoEXT &
setDstPremultipliedVULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT66855                             setDstPremultiplied( VULKAN_HPP_NAMESPACE::Bool32 dstPremultiplied_ ) VULKAN_HPP_NOEXCEPT
66856     {
66857       dstPremultiplied = dstPremultiplied_;
66858       return *this;
66859     }
66860 
66861     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAdvancedStateCreateInfoEXT &
setBlendOverlapVULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT66862                             setBlendOverlap( VULKAN_HPP_NAMESPACE::BlendOverlapEXT blendOverlap_ ) VULKAN_HPP_NOEXCEPT
66863     {
66864       blendOverlap = blendOverlap_;
66865       return *this;
66866     }
66867 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
66868 
operator VkPipelineColorBlendAdvancedStateCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT66869     explicit operator VkPipelineColorBlendAdvancedStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
66870     {
66871       return *reinterpret_cast<const VkPipelineColorBlendAdvancedStateCreateInfoEXT *>( this );
66872     }
66873 
operator VkPipelineColorBlendAdvancedStateCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT66874     explicit operator VkPipelineColorBlendAdvancedStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
66875     {
66876       return *reinterpret_cast<VkPipelineColorBlendAdvancedStateCreateInfoEXT *>( this );
66877     }
66878 
66879 #if 14 <= VULKAN_HPP_CPP_VERSION
66880     auto
66881 #else
66882     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
66883                const void * const &,
66884                VULKAN_HPP_NAMESPACE::Bool32 const &,
66885                VULKAN_HPP_NAMESPACE::Bool32 const &,
66886                VULKAN_HPP_NAMESPACE::BlendOverlapEXT const &>
66887 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT66888       reflect() const VULKAN_HPP_NOEXCEPT
66889     {
66890       return std::tie( sType, pNext, srcPremultiplied, dstPremultiplied, blendOverlap );
66891     }
66892 
66893 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
66894     auto operator<=>( PipelineColorBlendAdvancedStateCreateInfoEXT const & ) const = default;
66895 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT66896     bool operator==( PipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
66897     {
66898       return this->reflect() == rhs.reflect();
66899     }
66900 
operator !=VULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT66901     bool operator!=( PipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
66902     {
66903       return this->reflect() != rhs.reflect();
66904     }
66905 #endif
66906 
66907   public:
66908     VULKAN_HPP_NAMESPACE::StructureType   sType = StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT;
66909     const void *                          pNext = {};
66910     VULKAN_HPP_NAMESPACE::Bool32          srcPremultiplied = {};
66911     VULKAN_HPP_NAMESPACE::Bool32          dstPremultiplied = {};
66912     VULKAN_HPP_NAMESPACE::BlendOverlapEXT blendOverlap     = VULKAN_HPP_NAMESPACE::BlendOverlapEXT::eUncorrelated;
66913   };
66914   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT ) ==
66915                               sizeof( VkPipelineColorBlendAdvancedStateCreateInfoEXT ),
66916                             "struct and wrapper have different size!" );
66917   VULKAN_HPP_STATIC_ASSERT(
66918     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT>::value,
66919     "struct wrapper is not a standard layout!" );
66920   VULKAN_HPP_STATIC_ASSERT(
66921     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT>::value,
66922     "PipelineColorBlendAdvancedStateCreateInfoEXT is not nothrow_move_constructible!" );
66923 
66924   template <>
66925   struct CppType<StructureType, StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT>
66926   {
66927     using Type = PipelineColorBlendAdvancedStateCreateInfoEXT;
66928   };
66929 
66930   struct PipelineColorWriteCreateInfoEXT
66931   {
66932     using NativeType = VkPipelineColorWriteCreateInfoEXT;
66933 
66934     static const bool                                  allowDuplicate = false;
66935     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineColorWriteCreateInfoEXT;
66936 
66937 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineColorWriteCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT66938     VULKAN_HPP_CONSTEXPR PipelineColorWriteCreateInfoEXT(
66939       uint32_t                             attachmentCount_    = {},
66940       const VULKAN_HPP_NAMESPACE::Bool32 * pColorWriteEnables_ = {} ) VULKAN_HPP_NOEXCEPT
66941       : attachmentCount( attachmentCount_ )
66942       , pColorWriteEnables( pColorWriteEnables_ )
66943     {}
66944 
66945     VULKAN_HPP_CONSTEXPR
66946       PipelineColorWriteCreateInfoEXT( PipelineColorWriteCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66947 
PipelineColorWriteCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT66948     PipelineColorWriteCreateInfoEXT( VkPipelineColorWriteCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
66949       : PipelineColorWriteCreateInfoEXT( *reinterpret_cast<PipelineColorWriteCreateInfoEXT const *>( &rhs ) )
66950     {}
66951 
66952 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineColorWriteCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT66953     PipelineColorWriteCreateInfoEXT(
66954       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Bool32> const & colorWriteEnables_ )
66955       : attachmentCount( static_cast<uint32_t>( colorWriteEnables_.size() ) )
66956       , pColorWriteEnables( colorWriteEnables_.data() )
66957     {}
66958 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
66959 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
66960 
66961     PipelineColorWriteCreateInfoEXT &
66962       operator=( PipelineColorWriteCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66963 
operator =VULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT66964     PipelineColorWriteCreateInfoEXT & operator=( VkPipelineColorWriteCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
66965     {
66966       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT const *>( &rhs );
66967       return *this;
66968     }
66969 
66970 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT66971     VULKAN_HPP_CONSTEXPR_14 PipelineColorWriteCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
66972     {
66973       pNext = pNext_;
66974       return *this;
66975     }
66976 
66977     VULKAN_HPP_CONSTEXPR_14 PipelineColorWriteCreateInfoEXT &
setAttachmentCountVULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT66978                             setAttachmentCount( uint32_t attachmentCount_ ) VULKAN_HPP_NOEXCEPT
66979     {
66980       attachmentCount = attachmentCount_;
66981       return *this;
66982     }
66983 
66984     VULKAN_HPP_CONSTEXPR_14 PipelineColorWriteCreateInfoEXT &
setPColorWriteEnablesVULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT66985       setPColorWriteEnables( const VULKAN_HPP_NAMESPACE::Bool32 * pColorWriteEnables_ ) VULKAN_HPP_NOEXCEPT
66986     {
66987       pColorWriteEnables = pColorWriteEnables_;
66988       return *this;
66989     }
66990 
66991 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setColorWriteEnablesVULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT66992     PipelineColorWriteCreateInfoEXT & setColorWriteEnables(
66993       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Bool32> const & colorWriteEnables_ )
66994       VULKAN_HPP_NOEXCEPT
66995     {
66996       attachmentCount    = static_cast<uint32_t>( colorWriteEnables_.size() );
66997       pColorWriteEnables = colorWriteEnables_.data();
66998       return *this;
66999     }
67000 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
67001 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
67002 
operator VkPipelineColorWriteCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT67003     explicit operator VkPipelineColorWriteCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
67004     {
67005       return *reinterpret_cast<const VkPipelineColorWriteCreateInfoEXT *>( this );
67006     }
67007 
operator VkPipelineColorWriteCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT67008     explicit operator VkPipelineColorWriteCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
67009     {
67010       return *reinterpret_cast<VkPipelineColorWriteCreateInfoEXT *>( this );
67011     }
67012 
67013 #if 14 <= VULKAN_HPP_CPP_VERSION
67014     auto
67015 #else
67016     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
67017                const void * const &,
67018                uint32_t const &,
67019                const VULKAN_HPP_NAMESPACE::Bool32 * const &>
67020 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT67021       reflect() const VULKAN_HPP_NOEXCEPT
67022     {
67023       return std::tie( sType, pNext, attachmentCount, pColorWriteEnables );
67024     }
67025 
67026 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
67027     auto operator<=>( PipelineColorWriteCreateInfoEXT const & ) const = default;
67028 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT67029     bool operator==( PipelineColorWriteCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
67030     {
67031       return this->reflect() == rhs.reflect();
67032     }
67033 
operator !=VULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT67034     bool operator!=( PipelineColorWriteCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
67035     {
67036       return this->reflect() != rhs.reflect();
67037     }
67038 #endif
67039 
67040   public:
67041     VULKAN_HPP_NAMESPACE::StructureType  sType              = StructureType::ePipelineColorWriteCreateInfoEXT;
67042     const void *                         pNext              = {};
67043     uint32_t                             attachmentCount    = {};
67044     const VULKAN_HPP_NAMESPACE::Bool32 * pColorWriteEnables = {};
67045   };
67046   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT ) ==
67047                               sizeof( VkPipelineColorWriteCreateInfoEXT ),
67048                             "struct and wrapper have different size!" );
67049   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT>::value,
67050                             "struct wrapper is not a standard layout!" );
67051   VULKAN_HPP_STATIC_ASSERT(
67052     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT>::value,
67053     "PipelineColorWriteCreateInfoEXT is not nothrow_move_constructible!" );
67054 
67055   template <>
67056   struct CppType<StructureType, StructureType::ePipelineColorWriteCreateInfoEXT>
67057   {
67058     using Type = PipelineColorWriteCreateInfoEXT;
67059   };
67060 
67061   struct PipelineCompilerControlCreateInfoAMD
67062   {
67063     using NativeType = VkPipelineCompilerControlCreateInfoAMD;
67064 
67065     static const bool                                  allowDuplicate = false;
67066     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
67067       StructureType::ePipelineCompilerControlCreateInfoAMD;
67068 
67069 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineCompilerControlCreateInfoAMDVULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD67070     VULKAN_HPP_CONSTEXPR PipelineCompilerControlCreateInfoAMD(
67071       VULKAN_HPP_NAMESPACE::PipelineCompilerControlFlagsAMD compilerControlFlags_ = {} ) VULKAN_HPP_NOEXCEPT
67072       : compilerControlFlags( compilerControlFlags_ )
67073     {}
67074 
67075     VULKAN_HPP_CONSTEXPR PipelineCompilerControlCreateInfoAMD( PipelineCompilerControlCreateInfoAMD const & rhs )
67076       VULKAN_HPP_NOEXCEPT = default;
67077 
PipelineCompilerControlCreateInfoAMDVULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD67078     PipelineCompilerControlCreateInfoAMD( VkPipelineCompilerControlCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
67079       : PipelineCompilerControlCreateInfoAMD( *reinterpret_cast<PipelineCompilerControlCreateInfoAMD const *>( &rhs ) )
67080     {}
67081 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
67082 
67083     PipelineCompilerControlCreateInfoAMD &
67084       operator=( PipelineCompilerControlCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67085 
67086     PipelineCompilerControlCreateInfoAMD &
operator =VULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD67087       operator=( VkPipelineCompilerControlCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
67088     {
67089       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD const *>( &rhs );
67090       return *this;
67091     }
67092 
67093 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD67094     VULKAN_HPP_CONSTEXPR_14 PipelineCompilerControlCreateInfoAMD & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
67095     {
67096       pNext = pNext_;
67097       return *this;
67098     }
67099 
setCompilerControlFlagsVULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD67100     VULKAN_HPP_CONSTEXPR_14 PipelineCompilerControlCreateInfoAMD & setCompilerControlFlags(
67101       VULKAN_HPP_NAMESPACE::PipelineCompilerControlFlagsAMD compilerControlFlags_ ) VULKAN_HPP_NOEXCEPT
67102     {
67103       compilerControlFlags = compilerControlFlags_;
67104       return *this;
67105     }
67106 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
67107 
operator VkPipelineCompilerControlCreateInfoAMD const&VULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD67108     explicit operator VkPipelineCompilerControlCreateInfoAMD const &() const VULKAN_HPP_NOEXCEPT
67109     {
67110       return *reinterpret_cast<const VkPipelineCompilerControlCreateInfoAMD *>( this );
67111     }
67112 
operator VkPipelineCompilerControlCreateInfoAMD&VULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD67113     explicit operator VkPipelineCompilerControlCreateInfoAMD &() VULKAN_HPP_NOEXCEPT
67114     {
67115       return *reinterpret_cast<VkPipelineCompilerControlCreateInfoAMD *>( this );
67116     }
67117 
67118 #if 14 <= VULKAN_HPP_CPP_VERSION
67119     auto
67120 #else
67121     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
67122                const void * const &,
67123                VULKAN_HPP_NAMESPACE::PipelineCompilerControlFlagsAMD const &>
67124 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD67125       reflect() const VULKAN_HPP_NOEXCEPT
67126     {
67127       return std::tie( sType, pNext, compilerControlFlags );
67128     }
67129 
67130 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
67131     auto operator<=>( PipelineCompilerControlCreateInfoAMD const & ) const = default;
67132 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD67133     bool operator==( PipelineCompilerControlCreateInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
67134     {
67135       return this->reflect() == rhs.reflect();
67136     }
67137 
operator !=VULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD67138     bool operator!=( PipelineCompilerControlCreateInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
67139     {
67140       return this->reflect() != rhs.reflect();
67141     }
67142 #endif
67143 
67144   public:
67145     VULKAN_HPP_NAMESPACE::StructureType                   sType = StructureType::ePipelineCompilerControlCreateInfoAMD;
67146     const void *                                          pNext = {};
67147     VULKAN_HPP_NAMESPACE::PipelineCompilerControlFlagsAMD compilerControlFlags = {};
67148   };
67149   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD ) ==
67150                               sizeof( VkPipelineCompilerControlCreateInfoAMD ),
67151                             "struct and wrapper have different size!" );
67152   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD>::value,
67153                             "struct wrapper is not a standard layout!" );
67154   VULKAN_HPP_STATIC_ASSERT(
67155     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD>::value,
67156     "PipelineCompilerControlCreateInfoAMD is not nothrow_move_constructible!" );
67157 
67158   template <>
67159   struct CppType<StructureType, StructureType::ePipelineCompilerControlCreateInfoAMD>
67160   {
67161     using Type = PipelineCompilerControlCreateInfoAMD;
67162   };
67163 
67164   struct PipelineCoverageModulationStateCreateInfoNV
67165   {
67166     using NativeType = VkPipelineCoverageModulationStateCreateInfoNV;
67167 
67168     static const bool                                  allowDuplicate = false;
67169     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
67170       StructureType::ePipelineCoverageModulationStateCreateInfoNV;
67171 
67172 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineCoverageModulationStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV67173     VULKAN_HPP_CONSTEXPR PipelineCoverageModulationStateCreateInfoNV(
67174       VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateFlagsNV flags_ = {},
67175       VULKAN_HPP_NAMESPACE::CoverageModulationModeNV                     coverageModulationMode_ =
67176         VULKAN_HPP_NAMESPACE::CoverageModulationModeNV::eNone,
67177       VULKAN_HPP_NAMESPACE::Bool32 coverageModulationTableEnable_ = {},
67178       uint32_t                     coverageModulationTableCount_  = {},
67179       const float *                pCoverageModulationTable_      = {} ) VULKAN_HPP_NOEXCEPT
67180       : flags( flags_ )
67181       , coverageModulationMode( coverageModulationMode_ )
67182       , coverageModulationTableEnable( coverageModulationTableEnable_ )
67183       , coverageModulationTableCount( coverageModulationTableCount_ )
67184       , pCoverageModulationTable( pCoverageModulationTable_ )
67185     {}
67186 
67187     VULKAN_HPP_CONSTEXPR PipelineCoverageModulationStateCreateInfoNV(
67188       PipelineCoverageModulationStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67189 
PipelineCoverageModulationStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV67190     PipelineCoverageModulationStateCreateInfoNV( VkPipelineCoverageModulationStateCreateInfoNV const & rhs )
67191       VULKAN_HPP_NOEXCEPT
67192       : PipelineCoverageModulationStateCreateInfoNV(
67193           *reinterpret_cast<PipelineCoverageModulationStateCreateInfoNV const *>( &rhs ) )
67194     {}
67195 
67196 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineCoverageModulationStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV67197     PipelineCoverageModulationStateCreateInfoNV(
67198       VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateFlagsNV flags_,
67199       VULKAN_HPP_NAMESPACE::CoverageModulationModeNV                     coverageModulationMode_,
67200       VULKAN_HPP_NAMESPACE::Bool32                                       coverageModulationTableEnable_,
67201       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const float> const & coverageModulationTable_ )
67202       : flags( flags_ )
67203       , coverageModulationMode( coverageModulationMode_ )
67204       , coverageModulationTableEnable( coverageModulationTableEnable_ )
67205       , coverageModulationTableCount( static_cast<uint32_t>( coverageModulationTable_.size() ) )
67206       , pCoverageModulationTable( coverageModulationTable_.data() )
67207     {}
67208 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
67209 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
67210 
67211     PipelineCoverageModulationStateCreateInfoNV &
67212       operator=( PipelineCoverageModulationStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67213 
67214     PipelineCoverageModulationStateCreateInfoNV &
operator =VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV67215       operator=( VkPipelineCoverageModulationStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
67216     {
67217       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV const *>( &rhs );
67218       return *this;
67219     }
67220 
67221 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
67222     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV &
setPNextVULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV67223                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
67224     {
67225       pNext = pNext_;
67226       return *this;
67227     }
67228 
67229     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV &
setFlagsVULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV67230       setFlags( VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT
67231     {
67232       flags = flags_;
67233       return *this;
67234     }
67235 
setCoverageModulationModeVULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV67236     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV & setCoverageModulationMode(
67237       VULKAN_HPP_NAMESPACE::CoverageModulationModeNV coverageModulationMode_ ) VULKAN_HPP_NOEXCEPT
67238     {
67239       coverageModulationMode = coverageModulationMode_;
67240       return *this;
67241     }
67242 
setCoverageModulationTableEnableVULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV67243     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV & setCoverageModulationTableEnable(
67244       VULKAN_HPP_NAMESPACE::Bool32 coverageModulationTableEnable_ ) VULKAN_HPP_NOEXCEPT
67245     {
67246       coverageModulationTableEnable = coverageModulationTableEnable_;
67247       return *this;
67248     }
67249 
67250     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV &
setCoverageModulationTableCountVULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV67251       setCoverageModulationTableCount( uint32_t coverageModulationTableCount_ ) VULKAN_HPP_NOEXCEPT
67252     {
67253       coverageModulationTableCount = coverageModulationTableCount_;
67254       return *this;
67255     }
67256 
67257     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV &
setPCoverageModulationTableVULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV67258                             setPCoverageModulationTable( const float * pCoverageModulationTable_ ) VULKAN_HPP_NOEXCEPT
67259     {
67260       pCoverageModulationTable = pCoverageModulationTable_;
67261       return *this;
67262     }
67263 
67264 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setCoverageModulationTableVULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV67265     PipelineCoverageModulationStateCreateInfoNV & setCoverageModulationTable(
67266       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const float> const & coverageModulationTable_ ) VULKAN_HPP_NOEXCEPT
67267     {
67268       coverageModulationTableCount = static_cast<uint32_t>( coverageModulationTable_.size() );
67269       pCoverageModulationTable     = coverageModulationTable_.data();
67270       return *this;
67271     }
67272 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
67273 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
67274 
operator VkPipelineCoverageModulationStateCreateInfoNV const&VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV67275     explicit operator VkPipelineCoverageModulationStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
67276     {
67277       return *reinterpret_cast<const VkPipelineCoverageModulationStateCreateInfoNV *>( this );
67278     }
67279 
operator VkPipelineCoverageModulationStateCreateInfoNV&VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV67280     explicit operator VkPipelineCoverageModulationStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT
67281     {
67282       return *reinterpret_cast<VkPipelineCoverageModulationStateCreateInfoNV *>( this );
67283     }
67284 
67285 #if 14 <= VULKAN_HPP_CPP_VERSION
67286     auto
67287 #else
67288     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
67289                const void * const &,
67290                VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateFlagsNV const &,
67291                VULKAN_HPP_NAMESPACE::CoverageModulationModeNV const &,
67292                VULKAN_HPP_NAMESPACE::Bool32 const &,
67293                uint32_t const &,
67294                const float * const &>
67295 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV67296       reflect() const VULKAN_HPP_NOEXCEPT
67297     {
67298       return std::tie( sType,
67299                        pNext,
67300                        flags,
67301                        coverageModulationMode,
67302                        coverageModulationTableEnable,
67303                        coverageModulationTableCount,
67304                        pCoverageModulationTable );
67305     }
67306 
67307 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
67308     auto operator<=>( PipelineCoverageModulationStateCreateInfoNV const & ) const = default;
67309 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV67310     bool operator==( PipelineCoverageModulationStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
67311     {
67312       return this->reflect() == rhs.reflect();
67313     }
67314 
operator !=VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV67315     bool operator!=( PipelineCoverageModulationStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
67316     {
67317       return this->reflect() != rhs.reflect();
67318     }
67319 #endif
67320 
67321   public:
67322     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineCoverageModulationStateCreateInfoNV;
67323     const void *                        pNext = {};
67324     VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateFlagsNV flags = {};
67325     VULKAN_HPP_NAMESPACE::CoverageModulationModeNV                     coverageModulationMode =
67326       VULKAN_HPP_NAMESPACE::CoverageModulationModeNV::eNone;
67327     VULKAN_HPP_NAMESPACE::Bool32 coverageModulationTableEnable = {};
67328     uint32_t                     coverageModulationTableCount  = {};
67329     const float *                pCoverageModulationTable      = {};
67330   };
67331   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV ) ==
67332                               sizeof( VkPipelineCoverageModulationStateCreateInfoNV ),
67333                             "struct and wrapper have different size!" );
67334   VULKAN_HPP_STATIC_ASSERT(
67335     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV>::value,
67336     "struct wrapper is not a standard layout!" );
67337   VULKAN_HPP_STATIC_ASSERT(
67338     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV>::value,
67339     "PipelineCoverageModulationStateCreateInfoNV is not nothrow_move_constructible!" );
67340 
67341   template <>
67342   struct CppType<StructureType, StructureType::ePipelineCoverageModulationStateCreateInfoNV>
67343   {
67344     using Type = PipelineCoverageModulationStateCreateInfoNV;
67345   };
67346 
67347   struct PipelineCoverageReductionStateCreateInfoNV
67348   {
67349     using NativeType = VkPipelineCoverageReductionStateCreateInfoNV;
67350 
67351     static const bool                                  allowDuplicate = false;
67352     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
67353       StructureType::ePipelineCoverageReductionStateCreateInfoNV;
67354 
67355 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineCoverageReductionStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV67356     VULKAN_HPP_CONSTEXPR PipelineCoverageReductionStateCreateInfoNV(
67357       VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateFlagsNV flags_ = {},
67358       VULKAN_HPP_NAMESPACE::CoverageReductionModeNV                     coverageReductionMode_ =
67359         VULKAN_HPP_NAMESPACE::CoverageReductionModeNV::eMerge ) VULKAN_HPP_NOEXCEPT
67360       : flags( flags_ )
67361       , coverageReductionMode( coverageReductionMode_ )
67362     {}
67363 
67364     VULKAN_HPP_CONSTEXPR PipelineCoverageReductionStateCreateInfoNV(
67365       PipelineCoverageReductionStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67366 
PipelineCoverageReductionStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV67367     PipelineCoverageReductionStateCreateInfoNV( VkPipelineCoverageReductionStateCreateInfoNV const & rhs )
67368       VULKAN_HPP_NOEXCEPT
67369       : PipelineCoverageReductionStateCreateInfoNV(
67370           *reinterpret_cast<PipelineCoverageReductionStateCreateInfoNV const *>( &rhs ) )
67371     {}
67372 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
67373 
67374     PipelineCoverageReductionStateCreateInfoNV &
67375       operator=( PipelineCoverageReductionStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67376 
67377     PipelineCoverageReductionStateCreateInfoNV &
operator =VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV67378       operator=( VkPipelineCoverageReductionStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
67379     {
67380       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV const *>( &rhs );
67381       return *this;
67382     }
67383 
67384 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
67385     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageReductionStateCreateInfoNV &
setPNextVULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV67386                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
67387     {
67388       pNext = pNext_;
67389       return *this;
67390     }
67391 
67392     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageReductionStateCreateInfoNV &
setFlagsVULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV67393       setFlags( VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT
67394     {
67395       flags = flags_;
67396       return *this;
67397     }
67398 
setCoverageReductionModeVULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV67399     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageReductionStateCreateInfoNV & setCoverageReductionMode(
67400       VULKAN_HPP_NAMESPACE::CoverageReductionModeNV coverageReductionMode_ ) VULKAN_HPP_NOEXCEPT
67401     {
67402       coverageReductionMode = coverageReductionMode_;
67403       return *this;
67404     }
67405 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
67406 
operator VkPipelineCoverageReductionStateCreateInfoNV const&VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV67407     explicit operator VkPipelineCoverageReductionStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
67408     {
67409       return *reinterpret_cast<const VkPipelineCoverageReductionStateCreateInfoNV *>( this );
67410     }
67411 
operator VkPipelineCoverageReductionStateCreateInfoNV&VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV67412     explicit operator VkPipelineCoverageReductionStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT
67413     {
67414       return *reinterpret_cast<VkPipelineCoverageReductionStateCreateInfoNV *>( this );
67415     }
67416 
67417 #if 14 <= VULKAN_HPP_CPP_VERSION
67418     auto
67419 #else
67420     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
67421                const void * const &,
67422                VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateFlagsNV const &,
67423                VULKAN_HPP_NAMESPACE::CoverageReductionModeNV const &>
67424 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV67425       reflect() const VULKAN_HPP_NOEXCEPT
67426     {
67427       return std::tie( sType, pNext, flags, coverageReductionMode );
67428     }
67429 
67430 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
67431     auto operator<=>( PipelineCoverageReductionStateCreateInfoNV const & ) const = default;
67432 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV67433     bool operator==( PipelineCoverageReductionStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
67434     {
67435       return this->reflect() == rhs.reflect();
67436     }
67437 
operator !=VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV67438     bool operator!=( PipelineCoverageReductionStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
67439     {
67440       return this->reflect() != rhs.reflect();
67441     }
67442 #endif
67443 
67444   public:
67445     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineCoverageReductionStateCreateInfoNV;
67446     const void *                        pNext = {};
67447     VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateFlagsNV flags = {};
67448     VULKAN_HPP_NAMESPACE::CoverageReductionModeNV                     coverageReductionMode =
67449       VULKAN_HPP_NAMESPACE::CoverageReductionModeNV::eMerge;
67450   };
67451   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV ) ==
67452                               sizeof( VkPipelineCoverageReductionStateCreateInfoNV ),
67453                             "struct and wrapper have different size!" );
67454   VULKAN_HPP_STATIC_ASSERT(
67455     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV>::value,
67456     "struct wrapper is not a standard layout!" );
67457   VULKAN_HPP_STATIC_ASSERT(
67458     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV>::value,
67459     "PipelineCoverageReductionStateCreateInfoNV is not nothrow_move_constructible!" );
67460 
67461   template <>
67462   struct CppType<StructureType, StructureType::ePipelineCoverageReductionStateCreateInfoNV>
67463   {
67464     using Type = PipelineCoverageReductionStateCreateInfoNV;
67465   };
67466 
67467   struct PipelineCoverageToColorStateCreateInfoNV
67468   {
67469     using NativeType = VkPipelineCoverageToColorStateCreateInfoNV;
67470 
67471     static const bool                                  allowDuplicate = false;
67472     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
67473       StructureType::ePipelineCoverageToColorStateCreateInfoNV;
67474 
67475 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineCoverageToColorStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV67476     VULKAN_HPP_CONSTEXPR PipelineCoverageToColorStateCreateInfoNV(
67477       VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateFlagsNV flags_                 = {},
67478       VULKAN_HPP_NAMESPACE::Bool32                                    coverageToColorEnable_ = {},
67479       uint32_t coverageToColorLocation_                                                      = {} ) VULKAN_HPP_NOEXCEPT
67480       : flags( flags_ )
67481       , coverageToColorEnable( coverageToColorEnable_ )
67482       , coverageToColorLocation( coverageToColorLocation_ )
67483     {}
67484 
67485     VULKAN_HPP_CONSTEXPR PipelineCoverageToColorStateCreateInfoNV(
67486       PipelineCoverageToColorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67487 
PipelineCoverageToColorStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV67488     PipelineCoverageToColorStateCreateInfoNV( VkPipelineCoverageToColorStateCreateInfoNV const & rhs )
67489       VULKAN_HPP_NOEXCEPT
67490       : PipelineCoverageToColorStateCreateInfoNV(
67491           *reinterpret_cast<PipelineCoverageToColorStateCreateInfoNV const *>( &rhs ) )
67492     {}
67493 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
67494 
67495     PipelineCoverageToColorStateCreateInfoNV &
67496       operator=( PipelineCoverageToColorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67497 
67498     PipelineCoverageToColorStateCreateInfoNV &
operator =VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV67499       operator=( VkPipelineCoverageToColorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
67500     {
67501       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV const *>( &rhs );
67502       return *this;
67503     }
67504 
67505 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
67506     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageToColorStateCreateInfoNV &
setPNextVULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV67507                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
67508     {
67509       pNext = pNext_;
67510       return *this;
67511     }
67512 
67513     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageToColorStateCreateInfoNV &
setFlagsVULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV67514       setFlags( VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT
67515     {
67516       flags = flags_;
67517       return *this;
67518     }
67519 
67520     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageToColorStateCreateInfoNV &
setCoverageToColorEnableVULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV67521       setCoverageToColorEnable( VULKAN_HPP_NAMESPACE::Bool32 coverageToColorEnable_ ) VULKAN_HPP_NOEXCEPT
67522     {
67523       coverageToColorEnable = coverageToColorEnable_;
67524       return *this;
67525     }
67526 
67527     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageToColorStateCreateInfoNV &
setCoverageToColorLocationVULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV67528                             setCoverageToColorLocation( uint32_t coverageToColorLocation_ ) VULKAN_HPP_NOEXCEPT
67529     {
67530       coverageToColorLocation = coverageToColorLocation_;
67531       return *this;
67532     }
67533 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
67534 
operator VkPipelineCoverageToColorStateCreateInfoNV const&VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV67535     explicit operator VkPipelineCoverageToColorStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
67536     {
67537       return *reinterpret_cast<const VkPipelineCoverageToColorStateCreateInfoNV *>( this );
67538     }
67539 
operator VkPipelineCoverageToColorStateCreateInfoNV&VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV67540     explicit operator VkPipelineCoverageToColorStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT
67541     {
67542       return *reinterpret_cast<VkPipelineCoverageToColorStateCreateInfoNV *>( this );
67543     }
67544 
67545 #if 14 <= VULKAN_HPP_CPP_VERSION
67546     auto
67547 #else
67548     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
67549                const void * const &,
67550                VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateFlagsNV const &,
67551                VULKAN_HPP_NAMESPACE::Bool32 const &,
67552                uint32_t const &>
67553 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV67554       reflect() const VULKAN_HPP_NOEXCEPT
67555     {
67556       return std::tie( sType, pNext, flags, coverageToColorEnable, coverageToColorLocation );
67557     }
67558 
67559 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
67560     auto operator<=>( PipelineCoverageToColorStateCreateInfoNV const & ) const = default;
67561 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV67562     bool operator==( PipelineCoverageToColorStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
67563     {
67564       return this->reflect() == rhs.reflect();
67565     }
67566 
operator !=VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV67567     bool operator!=( PipelineCoverageToColorStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
67568     {
67569       return this->reflect() != rhs.reflect();
67570     }
67571 #endif
67572 
67573   public:
67574     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineCoverageToColorStateCreateInfoNV;
67575     const void *                        pNext = {};
67576     VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateFlagsNV flags                   = {};
67577     VULKAN_HPP_NAMESPACE::Bool32                                    coverageToColorEnable   = {};
67578     uint32_t                                                        coverageToColorLocation = {};
67579   };
67580   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV ) ==
67581                               sizeof( VkPipelineCoverageToColorStateCreateInfoNV ),
67582                             "struct and wrapper have different size!" );
67583   VULKAN_HPP_STATIC_ASSERT(
67584     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV>::value,
67585     "struct wrapper is not a standard layout!" );
67586   VULKAN_HPP_STATIC_ASSERT(
67587     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV>::value,
67588     "PipelineCoverageToColorStateCreateInfoNV is not nothrow_move_constructible!" );
67589 
67590   template <>
67591   struct CppType<StructureType, StructureType::ePipelineCoverageToColorStateCreateInfoNV>
67592   {
67593     using Type = PipelineCoverageToColorStateCreateInfoNV;
67594   };
67595 
67596   struct PipelineCreationFeedbackEXT
67597   {
67598     using NativeType = VkPipelineCreationFeedbackEXT;
67599 
67600 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
67601     VULKAN_HPP_CONSTEXPR
PipelineCreationFeedbackEXTVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackEXT67602       PipelineCreationFeedbackEXT( VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackFlagsEXT flags_ = {},
67603                                    uint64_t duration_ = {} ) VULKAN_HPP_NOEXCEPT
67604       : flags( flags_ )
67605       , duration( duration_ )
67606     {}
67607 
67608     VULKAN_HPP_CONSTEXPR
67609       PipelineCreationFeedbackEXT( PipelineCreationFeedbackEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67610 
PipelineCreationFeedbackEXTVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackEXT67611     PipelineCreationFeedbackEXT( VkPipelineCreationFeedbackEXT const & rhs ) VULKAN_HPP_NOEXCEPT
67612       : PipelineCreationFeedbackEXT( *reinterpret_cast<PipelineCreationFeedbackEXT const *>( &rhs ) )
67613     {}
67614 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
67615 
67616     PipelineCreationFeedbackEXT & operator=( PipelineCreationFeedbackEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67617 
operator =VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackEXT67618     PipelineCreationFeedbackEXT & operator=( VkPipelineCreationFeedbackEXT const & rhs ) VULKAN_HPP_NOEXCEPT
67619     {
67620       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackEXT const *>( &rhs );
67621       return *this;
67622     }
67623 
operator VkPipelineCreationFeedbackEXT const&VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackEXT67624     explicit operator VkPipelineCreationFeedbackEXT const &() const VULKAN_HPP_NOEXCEPT
67625     {
67626       return *reinterpret_cast<const VkPipelineCreationFeedbackEXT *>( this );
67627     }
67628 
operator VkPipelineCreationFeedbackEXT&VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackEXT67629     explicit operator VkPipelineCreationFeedbackEXT &() VULKAN_HPP_NOEXCEPT
67630     {
67631       return *reinterpret_cast<VkPipelineCreationFeedbackEXT *>( this );
67632     }
67633 
67634 #if 14 <= VULKAN_HPP_CPP_VERSION
67635     auto
67636 #else
67637     std::tuple<VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackFlagsEXT const &, uint64_t const &>
67638 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackEXT67639       reflect() const VULKAN_HPP_NOEXCEPT
67640     {
67641       return std::tie( flags, duration );
67642     }
67643 
67644 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
67645     auto operator<=>( PipelineCreationFeedbackEXT const & ) const = default;
67646 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackEXT67647     bool operator==( PipelineCreationFeedbackEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
67648     {
67649       return this->reflect() == rhs.reflect();
67650     }
67651 
operator !=VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackEXT67652     bool operator!=( PipelineCreationFeedbackEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
67653     {
67654       return this->reflect() != rhs.reflect();
67655     }
67656 #endif
67657 
67658   public:
67659     VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackFlagsEXT flags    = {};
67660     uint64_t                                               duration = {};
67661   };
67662   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackEXT ) ==
67663                               sizeof( VkPipelineCreationFeedbackEXT ),
67664                             "struct and wrapper have different size!" );
67665   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackEXT>::value,
67666                             "struct wrapper is not a standard layout!" );
67667   VULKAN_HPP_STATIC_ASSERT(
67668     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackEXT>::value,
67669     "PipelineCreationFeedbackEXT is not nothrow_move_constructible!" );
67670 
67671   struct PipelineCreationFeedbackCreateInfoEXT
67672   {
67673     using NativeType = VkPipelineCreationFeedbackCreateInfoEXT;
67674 
67675     static const bool                                  allowDuplicate = false;
67676     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
67677       StructureType::ePipelineCreationFeedbackCreateInfoEXT;
67678 
67679 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineCreationFeedbackCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfoEXT67680     VULKAN_HPP_CONSTEXPR PipelineCreationFeedbackCreateInfoEXT(
67681       VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackEXT * pPipelineCreationFeedback_          = {},
67682       uint32_t                                            pipelineStageCreationFeedbackCount_ = {},
67683       VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackEXT * pPipelineStageCreationFeedbacks_    = {} ) VULKAN_HPP_NOEXCEPT
67684       : pPipelineCreationFeedback( pPipelineCreationFeedback_ )
67685       , pipelineStageCreationFeedbackCount( pipelineStageCreationFeedbackCount_ )
67686       , pPipelineStageCreationFeedbacks( pPipelineStageCreationFeedbacks_ )
67687     {}
67688 
67689     VULKAN_HPP_CONSTEXPR PipelineCreationFeedbackCreateInfoEXT( PipelineCreationFeedbackCreateInfoEXT const & rhs )
67690       VULKAN_HPP_NOEXCEPT = default;
67691 
PipelineCreationFeedbackCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfoEXT67692     PipelineCreationFeedbackCreateInfoEXT( VkPipelineCreationFeedbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
67693       : PipelineCreationFeedbackCreateInfoEXT(
67694           *reinterpret_cast<PipelineCreationFeedbackCreateInfoEXT const *>( &rhs ) )
67695     {}
67696 
67697 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineCreationFeedbackCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfoEXT67698     PipelineCreationFeedbackCreateInfoEXT(
67699       VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackEXT * pPipelineCreationFeedback_,
67700       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackEXT> const &
67701         pipelineStageCreationFeedbacks_ )
67702       : pPipelineCreationFeedback( pPipelineCreationFeedback_ )
67703       , pipelineStageCreationFeedbackCount( static_cast<uint32_t>( pipelineStageCreationFeedbacks_.size() ) )
67704       , pPipelineStageCreationFeedbacks( pipelineStageCreationFeedbacks_.data() )
67705     {}
67706 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
67707 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
67708 
67709     PipelineCreationFeedbackCreateInfoEXT &
67710       operator=( PipelineCreationFeedbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67711 
67712     PipelineCreationFeedbackCreateInfoEXT &
operator =VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfoEXT67713       operator=( VkPipelineCreationFeedbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
67714     {
67715       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfoEXT const *>( &rhs );
67716       return *this;
67717     }
67718 
67719 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfoEXT67720     VULKAN_HPP_CONSTEXPR_14 PipelineCreationFeedbackCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
67721     {
67722       pNext = pNext_;
67723       return *this;
67724     }
67725 
setPPipelineCreationFeedbackVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfoEXT67726     VULKAN_HPP_CONSTEXPR_14 PipelineCreationFeedbackCreateInfoEXT & setPPipelineCreationFeedback(
67727       VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackEXT * pPipelineCreationFeedback_ ) VULKAN_HPP_NOEXCEPT
67728     {
67729       pPipelineCreationFeedback = pPipelineCreationFeedback_;
67730       return *this;
67731     }
67732 
67733     VULKAN_HPP_CONSTEXPR_14 PipelineCreationFeedbackCreateInfoEXT &
setPipelineStageCreationFeedbackCountVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfoEXT67734       setPipelineStageCreationFeedbackCount( uint32_t pipelineStageCreationFeedbackCount_ ) VULKAN_HPP_NOEXCEPT
67735     {
67736       pipelineStageCreationFeedbackCount = pipelineStageCreationFeedbackCount_;
67737       return *this;
67738     }
67739 
setPPipelineStageCreationFeedbacksVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfoEXT67740     VULKAN_HPP_CONSTEXPR_14 PipelineCreationFeedbackCreateInfoEXT & setPPipelineStageCreationFeedbacks(
67741       VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackEXT * pPipelineStageCreationFeedbacks_ ) VULKAN_HPP_NOEXCEPT
67742     {
67743       pPipelineStageCreationFeedbacks = pPipelineStageCreationFeedbacks_;
67744       return *this;
67745     }
67746 
67747 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPipelineStageCreationFeedbacksVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfoEXT67748     PipelineCreationFeedbackCreateInfoEXT & setPipelineStageCreationFeedbacks(
67749       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackEXT> const &
67750         pipelineStageCreationFeedbacks_ ) VULKAN_HPP_NOEXCEPT
67751     {
67752       pipelineStageCreationFeedbackCount = static_cast<uint32_t>( pipelineStageCreationFeedbacks_.size() );
67753       pPipelineStageCreationFeedbacks    = pipelineStageCreationFeedbacks_.data();
67754       return *this;
67755     }
67756 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
67757 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
67758 
operator VkPipelineCreationFeedbackCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfoEXT67759     explicit operator VkPipelineCreationFeedbackCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
67760     {
67761       return *reinterpret_cast<const VkPipelineCreationFeedbackCreateInfoEXT *>( this );
67762     }
67763 
operator VkPipelineCreationFeedbackCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfoEXT67764     explicit operator VkPipelineCreationFeedbackCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
67765     {
67766       return *reinterpret_cast<VkPipelineCreationFeedbackCreateInfoEXT *>( this );
67767     }
67768 
67769 #if 14 <= VULKAN_HPP_CPP_VERSION
67770     auto
67771 #else
67772     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
67773                const void * const &,
67774                VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackEXT * const &,
67775                uint32_t const &,
67776                VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackEXT * const &>
67777 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfoEXT67778       reflect() const VULKAN_HPP_NOEXCEPT
67779     {
67780       return std::tie(
67781         sType, pNext, pPipelineCreationFeedback, pipelineStageCreationFeedbackCount, pPipelineStageCreationFeedbacks );
67782     }
67783 
67784 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
67785     auto operator<=>( PipelineCreationFeedbackCreateInfoEXT const & ) const = default;
67786 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfoEXT67787     bool operator==( PipelineCreationFeedbackCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
67788     {
67789       return this->reflect() == rhs.reflect();
67790     }
67791 
operator !=VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfoEXT67792     bool operator!=( PipelineCreationFeedbackCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
67793     {
67794       return this->reflect() != rhs.reflect();
67795     }
67796 #endif
67797 
67798   public:
67799     VULKAN_HPP_NAMESPACE::StructureType                 sType = StructureType::ePipelineCreationFeedbackCreateInfoEXT;
67800     const void *                                        pNext = {};
67801     VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackEXT * pPipelineCreationFeedback          = {};
67802     uint32_t                                            pipelineStageCreationFeedbackCount = {};
67803     VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackEXT * pPipelineStageCreationFeedbacks    = {};
67804   };
67805   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfoEXT ) ==
67806                               sizeof( VkPipelineCreationFeedbackCreateInfoEXT ),
67807                             "struct and wrapper have different size!" );
67808   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfoEXT>::value,
67809                             "struct wrapper is not a standard layout!" );
67810   VULKAN_HPP_STATIC_ASSERT(
67811     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfoEXT>::value,
67812     "PipelineCreationFeedbackCreateInfoEXT is not nothrow_move_constructible!" );
67813 
67814   template <>
67815   struct CppType<StructureType, StructureType::ePipelineCreationFeedbackCreateInfoEXT>
67816   {
67817     using Type = PipelineCreationFeedbackCreateInfoEXT;
67818   };
67819 
67820   struct PipelineDiscardRectangleStateCreateInfoEXT
67821   {
67822     using NativeType = VkPipelineDiscardRectangleStateCreateInfoEXT;
67823 
67824     static const bool                                  allowDuplicate = false;
67825     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
67826       StructureType::ePipelineDiscardRectangleStateCreateInfoEXT;
67827 
67828 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineDiscardRectangleStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT67829     VULKAN_HPP_CONSTEXPR PipelineDiscardRectangleStateCreateInfoEXT(
67830       VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateFlagsEXT flags_ = {},
67831       VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT                     discardRectangleMode_ =
67832         VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT::eInclusive,
67833       uint32_t                             discardRectangleCount_ = {},
67834       const VULKAN_HPP_NAMESPACE::Rect2D * pDiscardRectangles_    = {} ) VULKAN_HPP_NOEXCEPT
67835       : flags( flags_ )
67836       , discardRectangleMode( discardRectangleMode_ )
67837       , discardRectangleCount( discardRectangleCount_ )
67838       , pDiscardRectangles( pDiscardRectangles_ )
67839     {}
67840 
67841     VULKAN_HPP_CONSTEXPR PipelineDiscardRectangleStateCreateInfoEXT(
67842       PipelineDiscardRectangleStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67843 
PipelineDiscardRectangleStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT67844     PipelineDiscardRectangleStateCreateInfoEXT( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
67845       VULKAN_HPP_NOEXCEPT
67846       : PipelineDiscardRectangleStateCreateInfoEXT(
67847           *reinterpret_cast<PipelineDiscardRectangleStateCreateInfoEXT const *>( &rhs ) )
67848     {}
67849 
67850 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineDiscardRectangleStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT67851     PipelineDiscardRectangleStateCreateInfoEXT(
67852       VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateFlagsEXT                         flags_,
67853       VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT                                             discardRectangleMode_,
67854       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & discardRectangles_ )
67855       : flags( flags_ )
67856       , discardRectangleMode( discardRectangleMode_ )
67857       , discardRectangleCount( static_cast<uint32_t>( discardRectangles_.size() ) )
67858       , pDiscardRectangles( discardRectangles_.data() )
67859     {}
67860 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
67861 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
67862 
67863     PipelineDiscardRectangleStateCreateInfoEXT &
67864       operator=( PipelineDiscardRectangleStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67865 
67866     PipelineDiscardRectangleStateCreateInfoEXT &
operator =VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT67867       operator=( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
67868     {
67869       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT const *>( &rhs );
67870       return *this;
67871     }
67872 
67873 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
67874     VULKAN_HPP_CONSTEXPR_14 PipelineDiscardRectangleStateCreateInfoEXT &
setPNextVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT67875                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
67876     {
67877       pNext = pNext_;
67878       return *this;
67879     }
67880 
67881     VULKAN_HPP_CONSTEXPR_14 PipelineDiscardRectangleStateCreateInfoEXT &
setFlagsVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT67882       setFlags( VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
67883     {
67884       flags = flags_;
67885       return *this;
67886     }
67887 
67888     VULKAN_HPP_CONSTEXPR_14 PipelineDiscardRectangleStateCreateInfoEXT &
setDiscardRectangleModeVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT67889       setDiscardRectangleMode( VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT discardRectangleMode_ ) VULKAN_HPP_NOEXCEPT
67890     {
67891       discardRectangleMode = discardRectangleMode_;
67892       return *this;
67893     }
67894 
67895     VULKAN_HPP_CONSTEXPR_14 PipelineDiscardRectangleStateCreateInfoEXT &
setDiscardRectangleCountVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT67896                             setDiscardRectangleCount( uint32_t discardRectangleCount_ ) VULKAN_HPP_NOEXCEPT
67897     {
67898       discardRectangleCount = discardRectangleCount_;
67899       return *this;
67900     }
67901 
67902     VULKAN_HPP_CONSTEXPR_14 PipelineDiscardRectangleStateCreateInfoEXT &
setPDiscardRectanglesVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT67903       setPDiscardRectangles( const VULKAN_HPP_NAMESPACE::Rect2D * pDiscardRectangles_ ) VULKAN_HPP_NOEXCEPT
67904     {
67905       pDiscardRectangles = pDiscardRectangles_;
67906       return *this;
67907     }
67908 
67909 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDiscardRectanglesVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT67910     PipelineDiscardRectangleStateCreateInfoEXT & setDiscardRectangles(
67911       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & discardRectangles_ )
67912       VULKAN_HPP_NOEXCEPT
67913     {
67914       discardRectangleCount = static_cast<uint32_t>( discardRectangles_.size() );
67915       pDiscardRectangles    = discardRectangles_.data();
67916       return *this;
67917     }
67918 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
67919 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
67920 
operator VkPipelineDiscardRectangleStateCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT67921     explicit operator VkPipelineDiscardRectangleStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
67922     {
67923       return *reinterpret_cast<const VkPipelineDiscardRectangleStateCreateInfoEXT *>( this );
67924     }
67925 
operator VkPipelineDiscardRectangleStateCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT67926     explicit operator VkPipelineDiscardRectangleStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
67927     {
67928       return *reinterpret_cast<VkPipelineDiscardRectangleStateCreateInfoEXT *>( this );
67929     }
67930 
67931 #if 14 <= VULKAN_HPP_CPP_VERSION
67932     auto
67933 #else
67934     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
67935                const void * const &,
67936                VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateFlagsEXT const &,
67937                VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT const &,
67938                uint32_t const &,
67939                const VULKAN_HPP_NAMESPACE::Rect2D * const &>
67940 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT67941       reflect() const VULKAN_HPP_NOEXCEPT
67942     {
67943       return std::tie( sType, pNext, flags, discardRectangleMode, discardRectangleCount, pDiscardRectangles );
67944     }
67945 
67946 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
67947     auto operator<=>( PipelineDiscardRectangleStateCreateInfoEXT const & ) const = default;
67948 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT67949     bool operator==( PipelineDiscardRectangleStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
67950     {
67951       return this->reflect() == rhs.reflect();
67952     }
67953 
operator !=VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT67954     bool operator!=( PipelineDiscardRectangleStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
67955     {
67956       return this->reflect() != rhs.reflect();
67957     }
67958 #endif
67959 
67960   public:
67961     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineDiscardRectangleStateCreateInfoEXT;
67962     const void *                        pNext = {};
67963     VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateFlagsEXT flags = {};
67964     VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT                     discardRectangleMode =
67965       VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT::eInclusive;
67966     uint32_t                             discardRectangleCount = {};
67967     const VULKAN_HPP_NAMESPACE::Rect2D * pDiscardRectangles    = {};
67968   };
67969   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT ) ==
67970                               sizeof( VkPipelineDiscardRectangleStateCreateInfoEXT ),
67971                             "struct and wrapper have different size!" );
67972   VULKAN_HPP_STATIC_ASSERT(
67973     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT>::value,
67974     "struct wrapper is not a standard layout!" );
67975   VULKAN_HPP_STATIC_ASSERT(
67976     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT>::value,
67977     "PipelineDiscardRectangleStateCreateInfoEXT is not nothrow_move_constructible!" );
67978 
67979   template <>
67980   struct CppType<StructureType, StructureType::ePipelineDiscardRectangleStateCreateInfoEXT>
67981   {
67982     using Type = PipelineDiscardRectangleStateCreateInfoEXT;
67983   };
67984 
67985   struct PipelineExecutableInfoKHR
67986   {
67987     using NativeType = VkPipelineExecutableInfoKHR;
67988 
67989     static const bool                                  allowDuplicate = false;
67990     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineExecutableInfoKHR;
67991 
67992 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineExecutableInfoKHRVULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR67993     VULKAN_HPP_CONSTEXPR PipelineExecutableInfoKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline_ = {},
67994                                                     uint32_t executableIndex_                = {} ) VULKAN_HPP_NOEXCEPT
67995       : pipeline( pipeline_ )
67996       , executableIndex( executableIndex_ )
67997     {}
67998 
67999     VULKAN_HPP_CONSTEXPR
68000       PipelineExecutableInfoKHR( PipelineExecutableInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68001 
PipelineExecutableInfoKHRVULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR68002     PipelineExecutableInfoKHR( VkPipelineExecutableInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
68003       : PipelineExecutableInfoKHR( *reinterpret_cast<PipelineExecutableInfoKHR const *>( &rhs ) )
68004     {}
68005 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
68006 
68007     PipelineExecutableInfoKHR & operator=( PipelineExecutableInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68008 
operator =VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR68009     PipelineExecutableInfoKHR & operator=( VkPipelineExecutableInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
68010     {
68011       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR const *>( &rhs );
68012       return *this;
68013     }
68014 
68015 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR68016     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
68017     {
68018       pNext = pNext_;
68019       return *this;
68020     }
68021 
68022     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableInfoKHR &
setPipelineVULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR68023                             setPipeline( VULKAN_HPP_NAMESPACE::Pipeline pipeline_ ) VULKAN_HPP_NOEXCEPT
68024     {
68025       pipeline = pipeline_;
68026       return *this;
68027     }
68028 
68029     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableInfoKHR &
setExecutableIndexVULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR68030                             setExecutableIndex( uint32_t executableIndex_ ) VULKAN_HPP_NOEXCEPT
68031     {
68032       executableIndex = executableIndex_;
68033       return *this;
68034     }
68035 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
68036 
operator VkPipelineExecutableInfoKHR const&VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR68037     explicit operator VkPipelineExecutableInfoKHR const &() const VULKAN_HPP_NOEXCEPT
68038     {
68039       return *reinterpret_cast<const VkPipelineExecutableInfoKHR *>( this );
68040     }
68041 
operator VkPipelineExecutableInfoKHR&VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR68042     explicit operator VkPipelineExecutableInfoKHR &() VULKAN_HPP_NOEXCEPT
68043     {
68044       return *reinterpret_cast<VkPipelineExecutableInfoKHR *>( this );
68045     }
68046 
68047 #if 14 <= VULKAN_HPP_CPP_VERSION
68048     auto
68049 #else
68050     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
68051                const void * const &,
68052                VULKAN_HPP_NAMESPACE::Pipeline const &,
68053                uint32_t const &>
68054 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR68055       reflect() const VULKAN_HPP_NOEXCEPT
68056     {
68057       return std::tie( sType, pNext, pipeline, executableIndex );
68058     }
68059 
68060 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
68061     auto operator<=>( PipelineExecutableInfoKHR const & ) const = default;
68062 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR68063     bool operator==( PipelineExecutableInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
68064     {
68065       return this->reflect() == rhs.reflect();
68066     }
68067 
operator !=VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR68068     bool operator!=( PipelineExecutableInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
68069     {
68070       return this->reflect() != rhs.reflect();
68071     }
68072 #endif
68073 
68074   public:
68075     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::ePipelineExecutableInfoKHR;
68076     const void *                        pNext           = {};
68077     VULKAN_HPP_NAMESPACE::Pipeline      pipeline        = {};
68078     uint32_t                            executableIndex = {};
68079   };
68080   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR ) ==
68081                               sizeof( VkPipelineExecutableInfoKHR ),
68082                             "struct and wrapper have different size!" );
68083   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR>::value,
68084                             "struct wrapper is not a standard layout!" );
68085   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR>::value,
68086                             "PipelineExecutableInfoKHR is not nothrow_move_constructible!" );
68087 
68088   template <>
68089   struct CppType<StructureType, StructureType::ePipelineExecutableInfoKHR>
68090   {
68091     using Type = PipelineExecutableInfoKHR;
68092   };
68093 
68094   struct PipelineExecutableInternalRepresentationKHR
68095   {
68096     using NativeType = VkPipelineExecutableInternalRepresentationKHR;
68097 
68098     static const bool                                  allowDuplicate = false;
68099     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
68100       StructureType::ePipelineExecutableInternalRepresentationKHR;
68101 
68102 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
68103     VULKAN_HPP_CONSTEXPR_14
PipelineExecutableInternalRepresentationKHRVULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR68104       PipelineExecutableInternalRepresentationKHR( std::array<char, VK_MAX_DESCRIPTION_SIZE> const & name_        = {},
68105                                                    std::array<char, VK_MAX_DESCRIPTION_SIZE> const & description_ = {},
68106                                                    VULKAN_HPP_NAMESPACE::Bool32                      isText_      = {},
68107                                                    size_t                                            dataSize_    = {},
68108                                                    void * pData_ = {} ) VULKAN_HPP_NOEXCEPT
68109       : name( name_ )
68110       , description( description_ )
68111       , isText( isText_ )
68112       , dataSize( dataSize_ )
68113       , pData( pData_ )
68114     {}
68115 
68116     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableInternalRepresentationKHR(
68117       PipelineExecutableInternalRepresentationKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68118 
PipelineExecutableInternalRepresentationKHRVULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR68119     PipelineExecutableInternalRepresentationKHR( VkPipelineExecutableInternalRepresentationKHR const & rhs )
68120       VULKAN_HPP_NOEXCEPT
68121       : PipelineExecutableInternalRepresentationKHR(
68122           *reinterpret_cast<PipelineExecutableInternalRepresentationKHR const *>( &rhs ) )
68123     {}
68124 
68125 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
68126     template <typename T>
PipelineExecutableInternalRepresentationKHRVULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR68127     PipelineExecutableInternalRepresentationKHR( std::array<char, VK_MAX_DESCRIPTION_SIZE> const &        name_,
68128                                                  std::array<char, VK_MAX_DESCRIPTION_SIZE> const &        description_,
68129                                                  VULKAN_HPP_NAMESPACE::Bool32                             isText_,
68130                                                  VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<T> const & data_ )
68131       : name( name_ )
68132       , description( description_ )
68133       , isText( isText_ )
68134       , dataSize( data_.size() * sizeof( T ) )
68135       , pData( data_.data() )
68136     {}
68137 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
68138 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
68139 
68140     PipelineExecutableInternalRepresentationKHR &
68141       operator=( PipelineExecutableInternalRepresentationKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68142 
68143     PipelineExecutableInternalRepresentationKHR &
operator =VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR68144       operator=( VkPipelineExecutableInternalRepresentationKHR const & rhs ) VULKAN_HPP_NOEXCEPT
68145     {
68146       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR const *>( &rhs );
68147       return *this;
68148     }
68149 
operator VkPipelineExecutableInternalRepresentationKHR const&VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR68150     explicit operator VkPipelineExecutableInternalRepresentationKHR const &() const VULKAN_HPP_NOEXCEPT
68151     {
68152       return *reinterpret_cast<const VkPipelineExecutableInternalRepresentationKHR *>( this );
68153     }
68154 
operator VkPipelineExecutableInternalRepresentationKHR&VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR68155     explicit operator VkPipelineExecutableInternalRepresentationKHR &() VULKAN_HPP_NOEXCEPT
68156     {
68157       return *reinterpret_cast<VkPipelineExecutableInternalRepresentationKHR *>( this );
68158     }
68159 
68160 #if 14 <= VULKAN_HPP_CPP_VERSION
68161     auto
68162 #else
68163     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
68164                void * const &,
68165                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &,
68166                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &,
68167                VULKAN_HPP_NAMESPACE::Bool32 const &,
68168                size_t const &,
68169                void * const &>
68170 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR68171       reflect() const VULKAN_HPP_NOEXCEPT
68172     {
68173       return std::tie( sType, pNext, name, description, isText, dataSize, pData );
68174     }
68175 
68176 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
68177     auto operator<=>( PipelineExecutableInternalRepresentationKHR const & ) const = default;
68178 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR68179     bool operator==( PipelineExecutableInternalRepresentationKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
68180     {
68181       return this->reflect() == rhs.reflect();
68182     }
68183 
operator !=VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR68184     bool operator!=( PipelineExecutableInternalRepresentationKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
68185     {
68186       return this->reflect() != rhs.reflect();
68187     }
68188 #endif
68189 
68190   public:
68191     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineExecutableInternalRepresentationKHR;
68192     void *                              pNext = {};
68193     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> name        = {};
68194     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> description = {};
68195     VULKAN_HPP_NAMESPACE::Bool32                                        isText      = {};
68196     size_t                                                              dataSize    = {};
68197     void *                                                              pData       = {};
68198   };
68199   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR ) ==
68200                               sizeof( VkPipelineExecutableInternalRepresentationKHR ),
68201                             "struct and wrapper have different size!" );
68202   VULKAN_HPP_STATIC_ASSERT(
68203     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR>::value,
68204     "struct wrapper is not a standard layout!" );
68205   VULKAN_HPP_STATIC_ASSERT(
68206     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR>::value,
68207     "PipelineExecutableInternalRepresentationKHR is not nothrow_move_constructible!" );
68208 
68209   template <>
68210   struct CppType<StructureType, StructureType::ePipelineExecutableInternalRepresentationKHR>
68211   {
68212     using Type = PipelineExecutableInternalRepresentationKHR;
68213   };
68214 
68215   struct PipelineExecutablePropertiesKHR
68216   {
68217     using NativeType = VkPipelineExecutablePropertiesKHR;
68218 
68219     static const bool                                  allowDuplicate = false;
68220     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineExecutablePropertiesKHR;
68221 
68222 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
68223     VULKAN_HPP_CONSTEXPR_14
PipelineExecutablePropertiesKHRVULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR68224       PipelineExecutablePropertiesKHR( VULKAN_HPP_NAMESPACE::ShaderStageFlags            stages_      = {},
68225                                        std::array<char, VK_MAX_DESCRIPTION_SIZE> const & name_        = {},
68226                                        std::array<char, VK_MAX_DESCRIPTION_SIZE> const & description_ = {},
68227                                        uint32_t subgroupSize_ = {} ) VULKAN_HPP_NOEXCEPT
68228       : stages( stages_ )
68229       , name( name_ )
68230       , description( description_ )
68231       , subgroupSize( subgroupSize_ )
68232     {}
68233 
68234     VULKAN_HPP_CONSTEXPR_14
68235       PipelineExecutablePropertiesKHR( PipelineExecutablePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68236 
PipelineExecutablePropertiesKHRVULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR68237     PipelineExecutablePropertiesKHR( VkPipelineExecutablePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
68238       : PipelineExecutablePropertiesKHR( *reinterpret_cast<PipelineExecutablePropertiesKHR const *>( &rhs ) )
68239     {}
68240 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
68241 
68242     PipelineExecutablePropertiesKHR &
68243       operator=( PipelineExecutablePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68244 
operator =VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR68245     PipelineExecutablePropertiesKHR & operator=( VkPipelineExecutablePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
68246     {
68247       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR const *>( &rhs );
68248       return *this;
68249     }
68250 
operator VkPipelineExecutablePropertiesKHR const&VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR68251     explicit operator VkPipelineExecutablePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
68252     {
68253       return *reinterpret_cast<const VkPipelineExecutablePropertiesKHR *>( this );
68254     }
68255 
operator VkPipelineExecutablePropertiesKHR&VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR68256     explicit operator VkPipelineExecutablePropertiesKHR &() VULKAN_HPP_NOEXCEPT
68257     {
68258       return *reinterpret_cast<VkPipelineExecutablePropertiesKHR *>( this );
68259     }
68260 
68261 #if 14 <= VULKAN_HPP_CPP_VERSION
68262     auto
68263 #else
68264     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
68265                void * const &,
68266                VULKAN_HPP_NAMESPACE::ShaderStageFlags const &,
68267                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &,
68268                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &,
68269                uint32_t const &>
68270 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR68271       reflect() const VULKAN_HPP_NOEXCEPT
68272     {
68273       return std::tie( sType, pNext, stages, name, description, subgroupSize );
68274     }
68275 
68276 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
68277     auto operator<=>( PipelineExecutablePropertiesKHR const & ) const = default;
68278 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR68279     bool operator==( PipelineExecutablePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
68280     {
68281       return this->reflect() == rhs.reflect();
68282     }
68283 
operator !=VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR68284     bool operator!=( PipelineExecutablePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
68285     {
68286       return this->reflect() != rhs.reflect();
68287     }
68288 #endif
68289 
68290   public:
68291     VULKAN_HPP_NAMESPACE::StructureType    sType  = StructureType::ePipelineExecutablePropertiesKHR;
68292     void *                                 pNext  = {};
68293     VULKAN_HPP_NAMESPACE::ShaderStageFlags stages = {};
68294     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> name         = {};
68295     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> description  = {};
68296     uint32_t                                                            subgroupSize = {};
68297   };
68298   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR ) ==
68299                               sizeof( VkPipelineExecutablePropertiesKHR ),
68300                             "struct and wrapper have different size!" );
68301   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR>::value,
68302                             "struct wrapper is not a standard layout!" );
68303   VULKAN_HPP_STATIC_ASSERT(
68304     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR>::value,
68305     "PipelineExecutablePropertiesKHR is not nothrow_move_constructible!" );
68306 
68307   template <>
68308   struct CppType<StructureType, StructureType::ePipelineExecutablePropertiesKHR>
68309   {
68310     using Type = PipelineExecutablePropertiesKHR;
68311   };
68312 
68313   union PipelineExecutableStatisticValueKHR
68314   {
68315     using NativeType = VkPipelineExecutableStatisticValueKHR;
68316 #if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS )
68317 
PipelineExecutableStatisticValueKHR(VULKAN_HPP_NAMESPACE::Bool32 b32_={} )68318     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR( VULKAN_HPP_NAMESPACE::Bool32 b32_ = {} ) : b32( b32_ )
68319     {}
68320 
PipelineExecutableStatisticValueKHR(int64_t i64_)68321     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR( int64_t i64_ ) : i64( i64_ ) {}
68322 
PipelineExecutableStatisticValueKHR(uint64_t u64_)68323     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR( uint64_t u64_ ) : u64( u64_ ) {}
68324 
PipelineExecutableStatisticValueKHR(double f64_)68325     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR( double f64_ ) : f64( f64_ ) {}
68326 #endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/
68327 
68328 #if !defined( VULKAN_HPP_NO_UNION_SETTERS )
68329     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR &
setB32(VULKAN_HPP_NAMESPACE::Bool32 b32_)68330                             setB32( VULKAN_HPP_NAMESPACE::Bool32 b32_ ) VULKAN_HPP_NOEXCEPT
68331     {
68332       b32 = b32_;
68333       return *this;
68334     }
68335 
setI64(int64_t i64_)68336     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR & setI64( int64_t i64_ ) VULKAN_HPP_NOEXCEPT
68337     {
68338       i64 = i64_;
68339       return *this;
68340     }
68341 
setU64(uint64_t u64_)68342     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR & setU64( uint64_t u64_ ) VULKAN_HPP_NOEXCEPT
68343     {
68344       u64 = u64_;
68345       return *this;
68346     }
68347 
setF64(double f64_)68348     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR & setF64( double f64_ ) VULKAN_HPP_NOEXCEPT
68349     {
68350       f64 = f64_;
68351       return *this;
68352     }
68353 #endif /*VULKAN_HPP_NO_UNION_SETTERS*/
68354 
operator VkPipelineExecutableStatisticValueKHR const&() const68355     operator VkPipelineExecutableStatisticValueKHR const &() const
68356     {
68357       return *reinterpret_cast<const VkPipelineExecutableStatisticValueKHR *>( this );
68358     }
68359 
operator VkPipelineExecutableStatisticValueKHR&()68360     operator VkPipelineExecutableStatisticValueKHR &()
68361     {
68362       return *reinterpret_cast<VkPipelineExecutableStatisticValueKHR *>( this );
68363     }
68364 
68365 #ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
68366     VULKAN_HPP_NAMESPACE::Bool32 b32;
68367     int64_t                      i64;
68368     uint64_t                     u64;
68369     double                       f64;
68370 #else
68371     VkBool32 b32;
68372     int64_t  i64;
68373     uint64_t u64;
68374     double   f64;
68375 #endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/
68376   };
68377 
68378   struct PipelineExecutableStatisticKHR
68379   {
68380     using NativeType = VkPipelineExecutableStatisticKHR;
68381 
68382     static const bool                                  allowDuplicate = false;
68383     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineExecutableStatisticKHR;
68384 
68385 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineExecutableStatisticKHRVULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR68386     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticKHR(
68387       std::array<char, VK_MAX_DESCRIPTION_SIZE> const &          name_        = {},
68388       std::array<char, VK_MAX_DESCRIPTION_SIZE> const &          description_ = {},
68389       VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticFormatKHR format_ =
68390         VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticFormatKHR::eBool32,
68391       VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticValueKHR value_ = {} ) VULKAN_HPP_NOEXCEPT
68392       : name( name_ )
68393       , description( description_ )
68394       , format( format_ )
68395       , value( value_ )
68396     {}
68397 
68398     VULKAN_HPP_CONSTEXPR_14
68399       PipelineExecutableStatisticKHR( PipelineExecutableStatisticKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68400 
PipelineExecutableStatisticKHRVULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR68401     PipelineExecutableStatisticKHR( VkPipelineExecutableStatisticKHR const & rhs ) VULKAN_HPP_NOEXCEPT
68402       : PipelineExecutableStatisticKHR( *reinterpret_cast<PipelineExecutableStatisticKHR const *>( &rhs ) )
68403     {}
68404 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
68405 
68406     PipelineExecutableStatisticKHR &
68407       operator=( PipelineExecutableStatisticKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68408 
operator =VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR68409     PipelineExecutableStatisticKHR & operator=( VkPipelineExecutableStatisticKHR const & rhs ) VULKAN_HPP_NOEXCEPT
68410     {
68411       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR const *>( &rhs );
68412       return *this;
68413     }
68414 
operator VkPipelineExecutableStatisticKHR const&VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR68415     explicit operator VkPipelineExecutableStatisticKHR const &() const VULKAN_HPP_NOEXCEPT
68416     {
68417       return *reinterpret_cast<const VkPipelineExecutableStatisticKHR *>( this );
68418     }
68419 
operator VkPipelineExecutableStatisticKHR&VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR68420     explicit operator VkPipelineExecutableStatisticKHR &() VULKAN_HPP_NOEXCEPT
68421     {
68422       return *reinterpret_cast<VkPipelineExecutableStatisticKHR *>( this );
68423     }
68424 
68425 #if 14 <= VULKAN_HPP_CPP_VERSION
68426     auto
68427 #else
68428     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
68429                void * const &,
68430                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &,
68431                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &,
68432                VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticFormatKHR const &,
68433                VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticValueKHR const &>
68434 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR68435       reflect() const VULKAN_HPP_NOEXCEPT
68436     {
68437       return std::tie( sType, pNext, name, description, format, value );
68438     }
68439 
68440   public:
68441     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineExecutableStatisticKHR;
68442     void *                              pNext = {};
68443     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> name        = {};
68444     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> description = {};
68445     VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticFormatKHR          format =
68446       VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticFormatKHR::eBool32;
68447     VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticValueKHR value = {};
68448   };
68449   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR ) ==
68450                               sizeof( VkPipelineExecutableStatisticKHR ),
68451                             "struct and wrapper have different size!" );
68452   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR>::value,
68453                             "struct wrapper is not a standard layout!" );
68454   VULKAN_HPP_STATIC_ASSERT(
68455     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR>::value,
68456     "PipelineExecutableStatisticKHR is not nothrow_move_constructible!" );
68457 
68458   template <>
68459   struct CppType<StructureType, StructureType::ePipelineExecutableStatisticKHR>
68460   {
68461     using Type = PipelineExecutableStatisticKHR;
68462   };
68463 
68464   struct PipelineFragmentShadingRateEnumStateCreateInfoNV
68465   {
68466     using NativeType = VkPipelineFragmentShadingRateEnumStateCreateInfoNV;
68467 
68468     static const bool                                  allowDuplicate = false;
68469     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
68470       StructureType::ePipelineFragmentShadingRateEnumStateCreateInfoNV;
68471 
68472 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineFragmentShadingRateEnumStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV68473     VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateEnumStateCreateInfoNV(
68474       VULKAN_HPP_NAMESPACE::FragmentShadingRateTypeNV shadingRateType_ =
68475         VULKAN_HPP_NAMESPACE::FragmentShadingRateTypeNV::eFragmentSize,
68476       VULKAN_HPP_NAMESPACE::FragmentShadingRateNV shadingRate_ =
68477         VULKAN_HPP_NAMESPACE::FragmentShadingRateNV::e1InvocationPerPixel,
68478       std::array<VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR, 2> const &
68479         combinerOps_ = { { VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR::eKeep,
68480                            VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR::eKeep } } ) VULKAN_HPP_NOEXCEPT
68481       : shadingRateType( shadingRateType_ )
68482       , shadingRate( shadingRate_ )
68483       , combinerOps( combinerOps_ )
68484     {}
68485 
68486     VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateEnumStateCreateInfoNV(
68487       PipelineFragmentShadingRateEnumStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68488 
PipelineFragmentShadingRateEnumStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV68489     PipelineFragmentShadingRateEnumStateCreateInfoNV( VkPipelineFragmentShadingRateEnumStateCreateInfoNV const & rhs )
68490       VULKAN_HPP_NOEXCEPT
68491       : PipelineFragmentShadingRateEnumStateCreateInfoNV(
68492           *reinterpret_cast<PipelineFragmentShadingRateEnumStateCreateInfoNV const *>( &rhs ) )
68493     {}
68494 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
68495 
68496     PipelineFragmentShadingRateEnumStateCreateInfoNV &
68497       operator=( PipelineFragmentShadingRateEnumStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68498 
68499     PipelineFragmentShadingRateEnumStateCreateInfoNV &
operator =VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV68500       operator=( VkPipelineFragmentShadingRateEnumStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
68501     {
68502       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV const *>( &rhs );
68503       return *this;
68504     }
68505 
68506 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
68507     VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateEnumStateCreateInfoNV &
setPNextVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV68508                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
68509     {
68510       pNext = pNext_;
68511       return *this;
68512     }
68513 
68514     VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateEnumStateCreateInfoNV &
setShadingRateTypeVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV68515       setShadingRateType( VULKAN_HPP_NAMESPACE::FragmentShadingRateTypeNV shadingRateType_ ) VULKAN_HPP_NOEXCEPT
68516     {
68517       shadingRateType = shadingRateType_;
68518       return *this;
68519     }
68520 
68521     VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateEnumStateCreateInfoNV &
setShadingRateVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV68522       setShadingRate( VULKAN_HPP_NAMESPACE::FragmentShadingRateNV shadingRate_ ) VULKAN_HPP_NOEXCEPT
68523     {
68524       shadingRate = shadingRate_;
68525       return *this;
68526     }
68527 
setCombinerOpsVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV68528     VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateEnumStateCreateInfoNV & setCombinerOps(
68529       std::array<VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR, 2> combinerOps_ ) VULKAN_HPP_NOEXCEPT
68530     {
68531       combinerOps = combinerOps_;
68532       return *this;
68533     }
68534 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
68535 
operator VkPipelineFragmentShadingRateEnumStateCreateInfoNV const&VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV68536     explicit operator VkPipelineFragmentShadingRateEnumStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
68537     {
68538       return *reinterpret_cast<const VkPipelineFragmentShadingRateEnumStateCreateInfoNV *>( this );
68539     }
68540 
operator VkPipelineFragmentShadingRateEnumStateCreateInfoNV&VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV68541     explicit operator VkPipelineFragmentShadingRateEnumStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT
68542     {
68543       return *reinterpret_cast<VkPipelineFragmentShadingRateEnumStateCreateInfoNV *>( this );
68544     }
68545 
68546 #if 14 <= VULKAN_HPP_CPP_VERSION
68547     auto
68548 #else
68549     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
68550                const void * const &,
68551                VULKAN_HPP_NAMESPACE::FragmentShadingRateTypeNV const &,
68552                VULKAN_HPP_NAMESPACE::FragmentShadingRateNV const &,
68553                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR, 2> const &>
68554 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV68555       reflect() const VULKAN_HPP_NOEXCEPT
68556     {
68557       return std::tie( sType, pNext, shadingRateType, shadingRate, combinerOps );
68558     }
68559 
68560 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
68561     auto operator<=>( PipelineFragmentShadingRateEnumStateCreateInfoNV const & ) const = default;
68562 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV68563     bool operator==( PipelineFragmentShadingRateEnumStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
68564     {
68565       return this->reflect() == rhs.reflect();
68566     }
68567 
operator !=VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV68568     bool operator!=( PipelineFragmentShadingRateEnumStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
68569     {
68570       return this->reflect() != rhs.reflect();
68571     }
68572 #endif
68573 
68574   public:
68575     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineFragmentShadingRateEnumStateCreateInfoNV;
68576     const void *                        pNext = {};
68577     VULKAN_HPP_NAMESPACE::FragmentShadingRateTypeNV shadingRateType =
68578       VULKAN_HPP_NAMESPACE::FragmentShadingRateTypeNV::eFragmentSize;
68579     VULKAN_HPP_NAMESPACE::FragmentShadingRateNV shadingRate =
68580       VULKAN_HPP_NAMESPACE::FragmentShadingRateNV::e1InvocationPerPixel;
68581     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR, 2> combinerOps = {};
68582   };
68583   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV ) ==
68584                               sizeof( VkPipelineFragmentShadingRateEnumStateCreateInfoNV ),
68585                             "struct and wrapper have different size!" );
68586   VULKAN_HPP_STATIC_ASSERT(
68587     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV>::value,
68588     "struct wrapper is not a standard layout!" );
68589   VULKAN_HPP_STATIC_ASSERT(
68590     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV>::value,
68591     "PipelineFragmentShadingRateEnumStateCreateInfoNV is not nothrow_move_constructible!" );
68592 
68593   template <>
68594   struct CppType<StructureType, StructureType::ePipelineFragmentShadingRateEnumStateCreateInfoNV>
68595   {
68596     using Type = PipelineFragmentShadingRateEnumStateCreateInfoNV;
68597   };
68598 
68599   struct PipelineFragmentShadingRateStateCreateInfoKHR
68600   {
68601     using NativeType = VkPipelineFragmentShadingRateStateCreateInfoKHR;
68602 
68603     static const bool                                  allowDuplicate = false;
68604     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
68605       StructureType::ePipelineFragmentShadingRateStateCreateInfoKHR;
68606 
68607 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineFragmentShadingRateStateCreateInfoKHRVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR68608     VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateStateCreateInfoKHR(
68609       VULKAN_HPP_NAMESPACE::Extent2D fragmentSize_ = {},
68610       std::array<VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR, 2> const &
68611         combinerOps_ = { { VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR::eKeep,
68612                            VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR::eKeep } } ) VULKAN_HPP_NOEXCEPT
68613       : fragmentSize( fragmentSize_ )
68614       , combinerOps( combinerOps_ )
68615     {}
68616 
68617     VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateStateCreateInfoKHR(
68618       PipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68619 
PipelineFragmentShadingRateStateCreateInfoKHRVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR68620     PipelineFragmentShadingRateStateCreateInfoKHR( VkPipelineFragmentShadingRateStateCreateInfoKHR const & rhs )
68621       VULKAN_HPP_NOEXCEPT
68622       : PipelineFragmentShadingRateStateCreateInfoKHR(
68623           *reinterpret_cast<PipelineFragmentShadingRateStateCreateInfoKHR const *>( &rhs ) )
68624     {}
68625 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
68626 
68627     PipelineFragmentShadingRateStateCreateInfoKHR &
68628       operator=( PipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68629 
68630     PipelineFragmentShadingRateStateCreateInfoKHR &
operator =VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR68631       operator=( VkPipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
68632     {
68633       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR const *>( &rhs );
68634       return *this;
68635     }
68636 
68637 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
68638     VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateStateCreateInfoKHR &
setPNextVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR68639                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
68640     {
68641       pNext = pNext_;
68642       return *this;
68643     }
68644 
68645     VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateStateCreateInfoKHR &
setFragmentSizeVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR68646                             setFragmentSize( VULKAN_HPP_NAMESPACE::Extent2D const & fragmentSize_ ) VULKAN_HPP_NOEXCEPT
68647     {
68648       fragmentSize = fragmentSize_;
68649       return *this;
68650     }
68651 
setCombinerOpsVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR68652     VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateStateCreateInfoKHR & setCombinerOps(
68653       std::array<VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR, 2> combinerOps_ ) VULKAN_HPP_NOEXCEPT
68654     {
68655       combinerOps = combinerOps_;
68656       return *this;
68657     }
68658 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
68659 
operator VkPipelineFragmentShadingRateStateCreateInfoKHR const&VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR68660     explicit operator VkPipelineFragmentShadingRateStateCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
68661     {
68662       return *reinterpret_cast<const VkPipelineFragmentShadingRateStateCreateInfoKHR *>( this );
68663     }
68664 
operator VkPipelineFragmentShadingRateStateCreateInfoKHR&VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR68665     explicit operator VkPipelineFragmentShadingRateStateCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
68666     {
68667       return *reinterpret_cast<VkPipelineFragmentShadingRateStateCreateInfoKHR *>( this );
68668     }
68669 
68670 #if 14 <= VULKAN_HPP_CPP_VERSION
68671     auto
68672 #else
68673     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
68674                const void * const &,
68675                VULKAN_HPP_NAMESPACE::Extent2D const &,
68676                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR, 2> const &>
68677 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR68678       reflect() const VULKAN_HPP_NOEXCEPT
68679     {
68680       return std::tie( sType, pNext, fragmentSize, combinerOps );
68681     }
68682 
68683 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
68684     auto operator<=>( PipelineFragmentShadingRateStateCreateInfoKHR const & ) const = default;
68685 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR68686     bool operator==( PipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
68687     {
68688       return this->reflect() == rhs.reflect();
68689     }
68690 
operator !=VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR68691     bool operator!=( PipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
68692     {
68693       return this->reflect() != rhs.reflect();
68694     }
68695 #endif
68696 
68697   public:
68698     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::ePipelineFragmentShadingRateStateCreateInfoKHR;
68699     const void *                        pNext        = {};
68700     VULKAN_HPP_NAMESPACE::Extent2D      fragmentSize = {};
68701     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR, 2> combinerOps = {};
68702   };
68703   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR ) ==
68704                               sizeof( VkPipelineFragmentShadingRateStateCreateInfoKHR ),
68705                             "struct and wrapper have different size!" );
68706   VULKAN_HPP_STATIC_ASSERT(
68707     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR>::value,
68708     "struct wrapper is not a standard layout!" );
68709   VULKAN_HPP_STATIC_ASSERT(
68710     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR>::value,
68711     "PipelineFragmentShadingRateStateCreateInfoKHR is not nothrow_move_constructible!" );
68712 
68713   template <>
68714   struct CppType<StructureType, StructureType::ePipelineFragmentShadingRateStateCreateInfoKHR>
68715   {
68716     using Type = PipelineFragmentShadingRateStateCreateInfoKHR;
68717   };
68718 
68719   struct PipelineInfoKHR
68720   {
68721     using NativeType = VkPipelineInfoKHR;
68722 
68723     static const bool                                  allowDuplicate = false;
68724     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineInfoKHR;
68725 
68726 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineInfoKHRVULKAN_HPP_NAMESPACE::PipelineInfoKHR68727     VULKAN_HPP_CONSTEXPR PipelineInfoKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline_ = {} ) VULKAN_HPP_NOEXCEPT
68728       : pipeline( pipeline_ )
68729     {}
68730 
68731     VULKAN_HPP_CONSTEXPR PipelineInfoKHR( PipelineInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68732 
PipelineInfoKHRVULKAN_HPP_NAMESPACE::PipelineInfoKHR68733     PipelineInfoKHR( VkPipelineInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
68734       : PipelineInfoKHR( *reinterpret_cast<PipelineInfoKHR const *>( &rhs ) )
68735     {}
68736 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
68737 
68738     PipelineInfoKHR & operator=( PipelineInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68739 
operator =VULKAN_HPP_NAMESPACE::PipelineInfoKHR68740     PipelineInfoKHR & operator=( VkPipelineInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
68741     {
68742       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineInfoKHR const *>( &rhs );
68743       return *this;
68744     }
68745 
68746 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineInfoKHR68747     VULKAN_HPP_CONSTEXPR_14 PipelineInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
68748     {
68749       pNext = pNext_;
68750       return *this;
68751     }
68752 
68753     VULKAN_HPP_CONSTEXPR_14 PipelineInfoKHR &
setPipelineVULKAN_HPP_NAMESPACE::PipelineInfoKHR68754                             setPipeline( VULKAN_HPP_NAMESPACE::Pipeline pipeline_ ) VULKAN_HPP_NOEXCEPT
68755     {
68756       pipeline = pipeline_;
68757       return *this;
68758     }
68759 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
68760 
operator VkPipelineInfoKHR const&VULKAN_HPP_NAMESPACE::PipelineInfoKHR68761     explicit operator VkPipelineInfoKHR const &() const VULKAN_HPP_NOEXCEPT
68762     {
68763       return *reinterpret_cast<const VkPipelineInfoKHR *>( this );
68764     }
68765 
operator VkPipelineInfoKHR&VULKAN_HPP_NAMESPACE::PipelineInfoKHR68766     explicit operator VkPipelineInfoKHR &() VULKAN_HPP_NOEXCEPT
68767     {
68768       return *reinterpret_cast<VkPipelineInfoKHR *>( this );
68769     }
68770 
68771 #if 14 <= VULKAN_HPP_CPP_VERSION
68772     auto
68773 #else
68774     std::
68775       tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Pipeline const &>
68776 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineInfoKHR68777       reflect() const VULKAN_HPP_NOEXCEPT
68778     {
68779       return std::tie( sType, pNext, pipeline );
68780     }
68781 
68782 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
68783     auto operator<=>( PipelineInfoKHR const & ) const = default;
68784 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineInfoKHR68785     bool operator==( PipelineInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
68786     {
68787       return this->reflect() == rhs.reflect();
68788     }
68789 
operator !=VULKAN_HPP_NAMESPACE::PipelineInfoKHR68790     bool operator!=( PipelineInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
68791     {
68792       return this->reflect() != rhs.reflect();
68793     }
68794 #endif
68795 
68796   public:
68797     VULKAN_HPP_NAMESPACE::StructureType sType    = StructureType::ePipelineInfoKHR;
68798     const void *                        pNext    = {};
68799     VULKAN_HPP_NAMESPACE::Pipeline      pipeline = {};
68800   };
68801   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineInfoKHR ) == sizeof( VkPipelineInfoKHR ),
68802                             "struct and wrapper have different size!" );
68803   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineInfoKHR>::value,
68804                             "struct wrapper is not a standard layout!" );
68805   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineInfoKHR>::value,
68806                             "PipelineInfoKHR is not nothrow_move_constructible!" );
68807 
68808   template <>
68809   struct CppType<StructureType, StructureType::ePipelineInfoKHR>
68810   {
68811     using Type = PipelineInfoKHR;
68812   };
68813 
68814   struct PushConstantRange
68815   {
68816     using NativeType = VkPushConstantRange;
68817 
68818 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PushConstantRangeVULKAN_HPP_NAMESPACE::PushConstantRange68819     VULKAN_HPP_CONSTEXPR PushConstantRange( VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ = {},
68820                                             uint32_t                               offset_     = {},
68821                                             uint32_t                               size_ = {} ) VULKAN_HPP_NOEXCEPT
68822       : stageFlags( stageFlags_ )
68823       , offset( offset_ )
68824       , size( size_ )
68825     {}
68826 
68827     VULKAN_HPP_CONSTEXPR PushConstantRange( PushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68828 
PushConstantRangeVULKAN_HPP_NAMESPACE::PushConstantRange68829     PushConstantRange( VkPushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT
68830       : PushConstantRange( *reinterpret_cast<PushConstantRange const *>( &rhs ) )
68831     {}
68832 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
68833 
68834     PushConstantRange & operator=( PushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68835 
operator =VULKAN_HPP_NAMESPACE::PushConstantRange68836     PushConstantRange & operator=( VkPushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT
68837     {
68838       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PushConstantRange const *>( &rhs );
68839       return *this;
68840     }
68841 
68842 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
68843     VULKAN_HPP_CONSTEXPR_14 PushConstantRange &
setStageFlagsVULKAN_HPP_NAMESPACE::PushConstantRange68844                             setStageFlags( VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ ) VULKAN_HPP_NOEXCEPT
68845     {
68846       stageFlags = stageFlags_;
68847       return *this;
68848     }
68849 
setOffsetVULKAN_HPP_NAMESPACE::PushConstantRange68850     VULKAN_HPP_CONSTEXPR_14 PushConstantRange & setOffset( uint32_t offset_ ) VULKAN_HPP_NOEXCEPT
68851     {
68852       offset = offset_;
68853       return *this;
68854     }
68855 
setSizeVULKAN_HPP_NAMESPACE::PushConstantRange68856     VULKAN_HPP_CONSTEXPR_14 PushConstantRange & setSize( uint32_t size_ ) VULKAN_HPP_NOEXCEPT
68857     {
68858       size = size_;
68859       return *this;
68860     }
68861 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
68862 
operator VkPushConstantRange const&VULKAN_HPP_NAMESPACE::PushConstantRange68863     explicit operator VkPushConstantRange const &() const VULKAN_HPP_NOEXCEPT
68864     {
68865       return *reinterpret_cast<const VkPushConstantRange *>( this );
68866     }
68867 
operator VkPushConstantRange&VULKAN_HPP_NAMESPACE::PushConstantRange68868     explicit operator VkPushConstantRange &() VULKAN_HPP_NOEXCEPT
68869     {
68870       return *reinterpret_cast<VkPushConstantRange *>( this );
68871     }
68872 
68873 #if 14 <= VULKAN_HPP_CPP_VERSION
68874     auto
68875 #else
68876     std::tuple<VULKAN_HPP_NAMESPACE::ShaderStageFlags const &, uint32_t const &, uint32_t const &>
68877 #endif
reflectVULKAN_HPP_NAMESPACE::PushConstantRange68878       reflect() const VULKAN_HPP_NOEXCEPT
68879     {
68880       return std::tie( stageFlags, offset, size );
68881     }
68882 
68883 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
68884     auto operator<=>( PushConstantRange const & ) const = default;
68885 #else
operator ==VULKAN_HPP_NAMESPACE::PushConstantRange68886     bool operator==( PushConstantRange const & rhs ) const VULKAN_HPP_NOEXCEPT
68887     {
68888       return this->reflect() == rhs.reflect();
68889     }
68890 
operator !=VULKAN_HPP_NAMESPACE::PushConstantRange68891     bool operator!=( PushConstantRange const & rhs ) const VULKAN_HPP_NOEXCEPT
68892     {
68893       return this->reflect() != rhs.reflect();
68894     }
68895 #endif
68896 
68897   public:
68898     VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags = {};
68899     uint32_t                               offset     = {};
68900     uint32_t                               size       = {};
68901   };
68902   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PushConstantRange ) == sizeof( VkPushConstantRange ),
68903                             "struct and wrapper have different size!" );
68904   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PushConstantRange>::value,
68905                             "struct wrapper is not a standard layout!" );
68906   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PushConstantRange>::value,
68907                             "PushConstantRange is not nothrow_move_constructible!" );
68908 
68909   struct PipelineLayoutCreateInfo
68910   {
68911     using NativeType = VkPipelineLayoutCreateInfo;
68912 
68913     static const bool                                  allowDuplicate = false;
68914     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineLayoutCreateInfo;
68915 
68916 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineLayoutCreateInfoVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo68917     VULKAN_HPP_CONSTEXPR PipelineLayoutCreateInfo(
68918       VULKAN_HPP_NAMESPACE::PipelineLayoutCreateFlags   flags_                  = {},
68919       uint32_t                                          setLayoutCount_         = {},
68920       const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts_            = {},
68921       uint32_t                                          pushConstantRangeCount_ = {},
68922       const VULKAN_HPP_NAMESPACE::PushConstantRange *   pPushConstantRanges_    = {} ) VULKAN_HPP_NOEXCEPT
68923       : flags( flags_ )
68924       , setLayoutCount( setLayoutCount_ )
68925       , pSetLayouts( pSetLayouts_ )
68926       , pushConstantRangeCount( pushConstantRangeCount_ )
68927       , pPushConstantRanges( pPushConstantRanges_ )
68928     {}
68929 
68930     VULKAN_HPP_CONSTEXPR PipelineLayoutCreateInfo( PipelineLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68931 
PipelineLayoutCreateInfoVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo68932     PipelineLayoutCreateInfo( VkPipelineLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
68933       : PipelineLayoutCreateInfo( *reinterpret_cast<PipelineLayoutCreateInfo const *>( &rhs ) )
68934     {}
68935 
68936 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineLayoutCreateInfoVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo68937     PipelineLayoutCreateInfo(
68938       VULKAN_HPP_NAMESPACE::PipelineLayoutCreateFlags flags_,
68939       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorSetLayout> const &
68940         setLayouts_,
68941       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PushConstantRange> const &
68942         pushConstantRanges_ = {} )
68943       : flags( flags_ )
68944       , setLayoutCount( static_cast<uint32_t>( setLayouts_.size() ) )
68945       , pSetLayouts( setLayouts_.data() )
68946       , pushConstantRangeCount( static_cast<uint32_t>( pushConstantRanges_.size() ) )
68947       , pPushConstantRanges( pushConstantRanges_.data() )
68948     {}
68949 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
68950 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
68951 
68952     PipelineLayoutCreateInfo & operator=( PipelineLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68953 
operator =VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo68954     PipelineLayoutCreateInfo & operator=( VkPipelineLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
68955     {
68956       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo const *>( &rhs );
68957       return *this;
68958     }
68959 
68960 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo68961     VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
68962     {
68963       pNext = pNext_;
68964       return *this;
68965     }
68966 
68967     VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo68968                             setFlags( VULKAN_HPP_NAMESPACE::PipelineLayoutCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
68969     {
68970       flags = flags_;
68971       return *this;
68972     }
68973 
setSetLayoutCountVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo68974     VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo & setSetLayoutCount( uint32_t setLayoutCount_ ) VULKAN_HPP_NOEXCEPT
68975     {
68976       setLayoutCount = setLayoutCount_;
68977       return *this;
68978     }
68979 
68980     VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo &
setPSetLayoutsVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo68981       setPSetLayouts( const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts_ ) VULKAN_HPP_NOEXCEPT
68982     {
68983       pSetLayouts = pSetLayouts_;
68984       return *this;
68985     }
68986 
68987 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSetLayoutsVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo68988     PipelineLayoutCreateInfo & setSetLayouts(
68989       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorSetLayout> const &
68990         setLayouts_ ) VULKAN_HPP_NOEXCEPT
68991     {
68992       setLayoutCount = static_cast<uint32_t>( setLayouts_.size() );
68993       pSetLayouts    = setLayouts_.data();
68994       return *this;
68995     }
68996 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
68997 
68998     VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo &
setPushConstantRangeCountVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo68999                             setPushConstantRangeCount( uint32_t pushConstantRangeCount_ ) VULKAN_HPP_NOEXCEPT
69000     {
69001       pushConstantRangeCount = pushConstantRangeCount_;
69002       return *this;
69003     }
69004 
69005     VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo &
setPPushConstantRangesVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo69006       setPPushConstantRanges( const VULKAN_HPP_NAMESPACE::PushConstantRange * pPushConstantRanges_ ) VULKAN_HPP_NOEXCEPT
69007     {
69008       pPushConstantRanges = pPushConstantRanges_;
69009       return *this;
69010     }
69011 
69012 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPushConstantRangesVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo69013     PipelineLayoutCreateInfo & setPushConstantRanges(
69014       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PushConstantRange> const &
69015         pushConstantRanges_ ) VULKAN_HPP_NOEXCEPT
69016     {
69017       pushConstantRangeCount = static_cast<uint32_t>( pushConstantRanges_.size() );
69018       pPushConstantRanges    = pushConstantRanges_.data();
69019       return *this;
69020     }
69021 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
69022 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
69023 
operator VkPipelineLayoutCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo69024     explicit operator VkPipelineLayoutCreateInfo const &() const VULKAN_HPP_NOEXCEPT
69025     {
69026       return *reinterpret_cast<const VkPipelineLayoutCreateInfo *>( this );
69027     }
69028 
operator VkPipelineLayoutCreateInfo&VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo69029     explicit operator VkPipelineLayoutCreateInfo &() VULKAN_HPP_NOEXCEPT
69030     {
69031       return *reinterpret_cast<VkPipelineLayoutCreateInfo *>( this );
69032     }
69033 
69034 #if 14 <= VULKAN_HPP_CPP_VERSION
69035     auto
69036 #else
69037     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
69038                const void * const &,
69039                VULKAN_HPP_NAMESPACE::PipelineLayoutCreateFlags const &,
69040                uint32_t const &,
69041                const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * const &,
69042                uint32_t const &,
69043                const VULKAN_HPP_NAMESPACE::PushConstantRange * const &>
69044 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo69045       reflect() const VULKAN_HPP_NOEXCEPT
69046     {
69047       return std::tie( sType, pNext, flags, setLayoutCount, pSetLayouts, pushConstantRangeCount, pPushConstantRanges );
69048     }
69049 
69050 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
69051     auto operator<=>( PipelineLayoutCreateInfo const & ) const = default;
69052 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo69053     bool operator==( PipelineLayoutCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
69054     {
69055       return this->reflect() == rhs.reflect();
69056     }
69057 
operator !=VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo69058     bool operator!=( PipelineLayoutCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
69059     {
69060       return this->reflect() != rhs.reflect();
69061     }
69062 #endif
69063 
69064   public:
69065     VULKAN_HPP_NAMESPACE::StructureType               sType                  = StructureType::ePipelineLayoutCreateInfo;
69066     const void *                                      pNext                  = {};
69067     VULKAN_HPP_NAMESPACE::PipelineLayoutCreateFlags   flags                  = {};
69068     uint32_t                                          setLayoutCount         = {};
69069     const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts            = {};
69070     uint32_t                                          pushConstantRangeCount = {};
69071     const VULKAN_HPP_NAMESPACE::PushConstantRange *   pPushConstantRanges    = {};
69072   };
69073   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo ) ==
69074                               sizeof( VkPipelineLayoutCreateInfo ),
69075                             "struct and wrapper have different size!" );
69076   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo>::value,
69077                             "struct wrapper is not a standard layout!" );
69078   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo>::value,
69079                             "PipelineLayoutCreateInfo is not nothrow_move_constructible!" );
69080 
69081   template <>
69082   struct CppType<StructureType, StructureType::ePipelineLayoutCreateInfo>
69083   {
69084     using Type = PipelineLayoutCreateInfo;
69085   };
69086 
69087   struct PipelineLibraryCreateInfoKHR
69088   {
69089     using NativeType = VkPipelineLibraryCreateInfoKHR;
69090 
69091     static const bool                                  allowDuplicate = false;
69092     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineLibraryCreateInfoKHR;
69093 
69094 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
69095     VULKAN_HPP_CONSTEXPR
PipelineLibraryCreateInfoKHRVULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR69096       PipelineLibraryCreateInfoKHR( uint32_t                               libraryCount_ = {},
69097                                     const VULKAN_HPP_NAMESPACE::Pipeline * pLibraries_   = {} ) VULKAN_HPP_NOEXCEPT
69098       : libraryCount( libraryCount_ )
69099       , pLibraries( pLibraries_ )
69100     {}
69101 
69102     VULKAN_HPP_CONSTEXPR
69103       PipelineLibraryCreateInfoKHR( PipelineLibraryCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69104 
PipelineLibraryCreateInfoKHRVULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR69105     PipelineLibraryCreateInfoKHR( VkPipelineLibraryCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
69106       : PipelineLibraryCreateInfoKHR( *reinterpret_cast<PipelineLibraryCreateInfoKHR const *>( &rhs ) )
69107     {}
69108 
69109 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineLibraryCreateInfoKHRVULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR69110     PipelineLibraryCreateInfoKHR(
69111       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Pipeline> const & libraries_ )
69112       : libraryCount( static_cast<uint32_t>( libraries_.size() ) ), pLibraries( libraries_.data() )
69113     {}
69114 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
69115 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
69116 
69117     PipelineLibraryCreateInfoKHR & operator=( PipelineLibraryCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69118 
operator =VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR69119     PipelineLibraryCreateInfoKHR & operator=( VkPipelineLibraryCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
69120     {
69121       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR const *>( &rhs );
69122       return *this;
69123     }
69124 
69125 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR69126     VULKAN_HPP_CONSTEXPR_14 PipelineLibraryCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
69127     {
69128       pNext = pNext_;
69129       return *this;
69130     }
69131 
setLibraryCountVULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR69132     VULKAN_HPP_CONSTEXPR_14 PipelineLibraryCreateInfoKHR & setLibraryCount( uint32_t libraryCount_ ) VULKAN_HPP_NOEXCEPT
69133     {
69134       libraryCount = libraryCount_;
69135       return *this;
69136     }
69137 
69138     VULKAN_HPP_CONSTEXPR_14 PipelineLibraryCreateInfoKHR &
setPLibrariesVULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR69139                             setPLibraries( const VULKAN_HPP_NAMESPACE::Pipeline * pLibraries_ ) VULKAN_HPP_NOEXCEPT
69140     {
69141       pLibraries = pLibraries_;
69142       return *this;
69143     }
69144 
69145 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setLibrariesVULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR69146     PipelineLibraryCreateInfoKHR & setLibraries(
69147       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Pipeline> const & libraries_ )
69148       VULKAN_HPP_NOEXCEPT
69149     {
69150       libraryCount = static_cast<uint32_t>( libraries_.size() );
69151       pLibraries   = libraries_.data();
69152       return *this;
69153     }
69154 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
69155 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
69156 
operator VkPipelineLibraryCreateInfoKHR const&VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR69157     explicit operator VkPipelineLibraryCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
69158     {
69159       return *reinterpret_cast<const VkPipelineLibraryCreateInfoKHR *>( this );
69160     }
69161 
operator VkPipelineLibraryCreateInfoKHR&VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR69162     explicit operator VkPipelineLibraryCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
69163     {
69164       return *reinterpret_cast<VkPipelineLibraryCreateInfoKHR *>( this );
69165     }
69166 
69167 #if 14 <= VULKAN_HPP_CPP_VERSION
69168     auto
69169 #else
69170     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
69171                const void * const &,
69172                uint32_t const &,
69173                const VULKAN_HPP_NAMESPACE::Pipeline * const &>
69174 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR69175       reflect() const VULKAN_HPP_NOEXCEPT
69176     {
69177       return std::tie( sType, pNext, libraryCount, pLibraries );
69178     }
69179 
69180 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
69181     auto operator<=>( PipelineLibraryCreateInfoKHR const & ) const = default;
69182 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR69183     bool operator==( PipelineLibraryCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
69184     {
69185       return this->reflect() == rhs.reflect();
69186     }
69187 
operator !=VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR69188     bool operator!=( PipelineLibraryCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
69189     {
69190       return this->reflect() != rhs.reflect();
69191     }
69192 #endif
69193 
69194   public:
69195     VULKAN_HPP_NAMESPACE::StructureType    sType        = StructureType::ePipelineLibraryCreateInfoKHR;
69196     const void *                           pNext        = {};
69197     uint32_t                               libraryCount = {};
69198     const VULKAN_HPP_NAMESPACE::Pipeline * pLibraries   = {};
69199   };
69200   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR ) ==
69201                               sizeof( VkPipelineLibraryCreateInfoKHR ),
69202                             "struct and wrapper have different size!" );
69203   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR>::value,
69204                             "struct wrapper is not a standard layout!" );
69205   VULKAN_HPP_STATIC_ASSERT(
69206     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR>::value,
69207     "PipelineLibraryCreateInfoKHR is not nothrow_move_constructible!" );
69208 
69209   template <>
69210   struct CppType<StructureType, StructureType::ePipelineLibraryCreateInfoKHR>
69211   {
69212     using Type = PipelineLibraryCreateInfoKHR;
69213   };
69214 
69215   struct PipelineRasterizationConservativeStateCreateInfoEXT
69216   {
69217     using NativeType = VkPipelineRasterizationConservativeStateCreateInfoEXT;
69218 
69219     static const bool                                  allowDuplicate = false;
69220     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
69221       StructureType::ePipelineRasterizationConservativeStateCreateInfoEXT;
69222 
69223 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineRasterizationConservativeStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT69224     VULKAN_HPP_CONSTEXPR PipelineRasterizationConservativeStateCreateInfoEXT(
69225       VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateFlagsEXT flags_ = {},
69226       VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT                     conservativeRasterizationMode_ =
69227         VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT::eDisabled,
69228       float extraPrimitiveOverestimationSize_ = {} ) VULKAN_HPP_NOEXCEPT
69229       : flags( flags_ )
69230       , conservativeRasterizationMode( conservativeRasterizationMode_ )
69231       , extraPrimitiveOverestimationSize( extraPrimitiveOverestimationSize_ )
69232     {}
69233 
69234     VULKAN_HPP_CONSTEXPR PipelineRasterizationConservativeStateCreateInfoEXT(
69235       PipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69236 
PipelineRasterizationConservativeStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT69237     PipelineRasterizationConservativeStateCreateInfoEXT(
69238       VkPipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
69239       : PipelineRasterizationConservativeStateCreateInfoEXT(
69240           *reinterpret_cast<PipelineRasterizationConservativeStateCreateInfoEXT const *>( &rhs ) )
69241     {}
69242 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
69243 
69244     PipelineRasterizationConservativeStateCreateInfoEXT &
69245       operator=( PipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69246 
69247     PipelineRasterizationConservativeStateCreateInfoEXT &
operator =VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT69248       operator=( VkPipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
69249     {
69250       *this =
69251         *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT const *>( &rhs );
69252       return *this;
69253     }
69254 
69255 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
69256     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationConservativeStateCreateInfoEXT &
setPNextVULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT69257                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
69258     {
69259       pNext = pNext_;
69260       return *this;
69261     }
69262 
69263     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationConservativeStateCreateInfoEXT &
setFlagsVULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT69264       setFlags( VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
69265     {
69266       flags = flags_;
69267       return *this;
69268     }
69269 
setConservativeRasterizationModeVULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT69270     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationConservativeStateCreateInfoEXT & setConservativeRasterizationMode(
69271       VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT conservativeRasterizationMode_ ) VULKAN_HPP_NOEXCEPT
69272     {
69273       conservativeRasterizationMode = conservativeRasterizationMode_;
69274       return *this;
69275     }
69276 
69277     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationConservativeStateCreateInfoEXT &
setExtraPrimitiveOverestimationSizeVULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT69278       setExtraPrimitiveOverestimationSize( float extraPrimitiveOverestimationSize_ ) VULKAN_HPP_NOEXCEPT
69279     {
69280       extraPrimitiveOverestimationSize = extraPrimitiveOverestimationSize_;
69281       return *this;
69282     }
69283 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
69284 
operator VkPipelineRasterizationConservativeStateCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT69285     explicit operator VkPipelineRasterizationConservativeStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
69286     {
69287       return *reinterpret_cast<const VkPipelineRasterizationConservativeStateCreateInfoEXT *>( this );
69288     }
69289 
operator VkPipelineRasterizationConservativeStateCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT69290     explicit operator VkPipelineRasterizationConservativeStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
69291     {
69292       return *reinterpret_cast<VkPipelineRasterizationConservativeStateCreateInfoEXT *>( this );
69293     }
69294 
69295 #if 14 <= VULKAN_HPP_CPP_VERSION
69296     auto
69297 #else
69298     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
69299                const void * const &,
69300                VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateFlagsEXT const &,
69301                VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT const &,
69302                float const &>
69303 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT69304       reflect() const VULKAN_HPP_NOEXCEPT
69305     {
69306       return std::tie( sType, pNext, flags, conservativeRasterizationMode, extraPrimitiveOverestimationSize );
69307     }
69308 
69309 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
69310     auto operator<=>( PipelineRasterizationConservativeStateCreateInfoEXT const & ) const = default;
69311 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT69312     bool operator==( PipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
69313     {
69314       return this->reflect() == rhs.reflect();
69315     }
69316 
operator !=VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT69317     bool operator!=( PipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
69318     {
69319       return this->reflect() != rhs.reflect();
69320     }
69321 #endif
69322 
69323   public:
69324     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRasterizationConservativeStateCreateInfoEXT;
69325     const void *                        pNext = {};
69326     VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateFlagsEXT flags = {};
69327     VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT                     conservativeRasterizationMode =
69328       VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT::eDisabled;
69329     float extraPrimitiveOverestimationSize = {};
69330   };
69331   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT ) ==
69332                               sizeof( VkPipelineRasterizationConservativeStateCreateInfoEXT ),
69333                             "struct and wrapper have different size!" );
69334   VULKAN_HPP_STATIC_ASSERT(
69335     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT>::value,
69336     "struct wrapper is not a standard layout!" );
69337   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<
69338                               VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT>::value,
69339                             "PipelineRasterizationConservativeStateCreateInfoEXT is not nothrow_move_constructible!" );
69340 
69341   template <>
69342   struct CppType<StructureType, StructureType::ePipelineRasterizationConservativeStateCreateInfoEXT>
69343   {
69344     using Type = PipelineRasterizationConservativeStateCreateInfoEXT;
69345   };
69346 
69347   struct PipelineRasterizationDepthClipStateCreateInfoEXT
69348   {
69349     using NativeType = VkPipelineRasterizationDepthClipStateCreateInfoEXT;
69350 
69351     static const bool                                  allowDuplicate = false;
69352     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
69353       StructureType::ePipelineRasterizationDepthClipStateCreateInfoEXT;
69354 
69355 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineRasterizationDepthClipStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT69356     VULKAN_HPP_CONSTEXPR PipelineRasterizationDepthClipStateCreateInfoEXT(
69357       VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateFlagsEXT flags_ = {},
69358       VULKAN_HPP_NAMESPACE::Bool32 depthClipEnable_                                  = {} ) VULKAN_HPP_NOEXCEPT
69359       : flags( flags_ )
69360       , depthClipEnable( depthClipEnable_ )
69361     {}
69362 
69363     VULKAN_HPP_CONSTEXPR PipelineRasterizationDepthClipStateCreateInfoEXT(
69364       PipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69365 
PipelineRasterizationDepthClipStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT69366     PipelineRasterizationDepthClipStateCreateInfoEXT( VkPipelineRasterizationDepthClipStateCreateInfoEXT const & rhs )
69367       VULKAN_HPP_NOEXCEPT
69368       : PipelineRasterizationDepthClipStateCreateInfoEXT(
69369           *reinterpret_cast<PipelineRasterizationDepthClipStateCreateInfoEXT const *>( &rhs ) )
69370     {}
69371 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
69372 
69373     PipelineRasterizationDepthClipStateCreateInfoEXT &
69374       operator=( PipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69375 
69376     PipelineRasterizationDepthClipStateCreateInfoEXT &
operator =VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT69377       operator=( VkPipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
69378     {
69379       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT const *>( &rhs );
69380       return *this;
69381     }
69382 
69383 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
69384     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationDepthClipStateCreateInfoEXT &
setPNextVULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT69385                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
69386     {
69387       pNext = pNext_;
69388       return *this;
69389     }
69390 
69391     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationDepthClipStateCreateInfoEXT &
setFlagsVULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT69392       setFlags( VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
69393     {
69394       flags = flags_;
69395       return *this;
69396     }
69397 
69398     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationDepthClipStateCreateInfoEXT &
setDepthClipEnableVULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT69399                             setDepthClipEnable( VULKAN_HPP_NAMESPACE::Bool32 depthClipEnable_ ) VULKAN_HPP_NOEXCEPT
69400     {
69401       depthClipEnable = depthClipEnable_;
69402       return *this;
69403     }
69404 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
69405 
operator VkPipelineRasterizationDepthClipStateCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT69406     explicit operator VkPipelineRasterizationDepthClipStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
69407     {
69408       return *reinterpret_cast<const VkPipelineRasterizationDepthClipStateCreateInfoEXT *>( this );
69409     }
69410 
operator VkPipelineRasterizationDepthClipStateCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT69411     explicit operator VkPipelineRasterizationDepthClipStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
69412     {
69413       return *reinterpret_cast<VkPipelineRasterizationDepthClipStateCreateInfoEXT *>( this );
69414     }
69415 
69416 #if 14 <= VULKAN_HPP_CPP_VERSION
69417     auto
69418 #else
69419     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
69420                const void * const &,
69421                VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateFlagsEXT const &,
69422                VULKAN_HPP_NAMESPACE::Bool32 const &>
69423 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT69424       reflect() const VULKAN_HPP_NOEXCEPT
69425     {
69426       return std::tie( sType, pNext, flags, depthClipEnable );
69427     }
69428 
69429 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
69430     auto operator<=>( PipelineRasterizationDepthClipStateCreateInfoEXT const & ) const = default;
69431 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT69432     bool operator==( PipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
69433     {
69434       return this->reflect() == rhs.reflect();
69435     }
69436 
operator !=VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT69437     bool operator!=( PipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
69438     {
69439       return this->reflect() != rhs.reflect();
69440     }
69441 #endif
69442 
69443   public:
69444     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRasterizationDepthClipStateCreateInfoEXT;
69445     const void *                        pNext = {};
69446     VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateFlagsEXT flags           = {};
69447     VULKAN_HPP_NAMESPACE::Bool32                                            depthClipEnable = {};
69448   };
69449   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT ) ==
69450                               sizeof( VkPipelineRasterizationDepthClipStateCreateInfoEXT ),
69451                             "struct and wrapper have different size!" );
69452   VULKAN_HPP_STATIC_ASSERT(
69453     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT>::value,
69454     "struct wrapper is not a standard layout!" );
69455   VULKAN_HPP_STATIC_ASSERT(
69456     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT>::value,
69457     "PipelineRasterizationDepthClipStateCreateInfoEXT is not nothrow_move_constructible!" );
69458 
69459   template <>
69460   struct CppType<StructureType, StructureType::ePipelineRasterizationDepthClipStateCreateInfoEXT>
69461   {
69462     using Type = PipelineRasterizationDepthClipStateCreateInfoEXT;
69463   };
69464 
69465   struct PipelineRasterizationLineStateCreateInfoEXT
69466   {
69467     using NativeType = VkPipelineRasterizationLineStateCreateInfoEXT;
69468 
69469     static const bool                                  allowDuplicate = false;
69470     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
69471       StructureType::ePipelineRasterizationLineStateCreateInfoEXT;
69472 
69473 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineRasterizationLineStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoEXT69474     VULKAN_HPP_CONSTEXPR PipelineRasterizationLineStateCreateInfoEXT(
69475       VULKAN_HPP_NAMESPACE::LineRasterizationModeEXT lineRasterizationMode_ =
69476         VULKAN_HPP_NAMESPACE::LineRasterizationModeEXT::eDefault,
69477       VULKAN_HPP_NAMESPACE::Bool32 stippledLineEnable_ = {},
69478       uint32_t                     lineStippleFactor_  = {},
69479       uint16_t                     lineStipplePattern_ = {} ) VULKAN_HPP_NOEXCEPT
69480       : lineRasterizationMode( lineRasterizationMode_ )
69481       , stippledLineEnable( stippledLineEnable_ )
69482       , lineStippleFactor( lineStippleFactor_ )
69483       , lineStipplePattern( lineStipplePattern_ )
69484     {}
69485 
69486     VULKAN_HPP_CONSTEXPR PipelineRasterizationLineStateCreateInfoEXT(
69487       PipelineRasterizationLineStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69488 
PipelineRasterizationLineStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoEXT69489     PipelineRasterizationLineStateCreateInfoEXT( VkPipelineRasterizationLineStateCreateInfoEXT const & rhs )
69490       VULKAN_HPP_NOEXCEPT
69491       : PipelineRasterizationLineStateCreateInfoEXT(
69492           *reinterpret_cast<PipelineRasterizationLineStateCreateInfoEXT const *>( &rhs ) )
69493     {}
69494 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
69495 
69496     PipelineRasterizationLineStateCreateInfoEXT &
69497       operator=( PipelineRasterizationLineStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69498 
69499     PipelineRasterizationLineStateCreateInfoEXT &
operator =VULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoEXT69500       operator=( VkPipelineRasterizationLineStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
69501     {
69502       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoEXT const *>( &rhs );
69503       return *this;
69504     }
69505 
69506 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
69507     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationLineStateCreateInfoEXT &
setPNextVULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoEXT69508                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
69509     {
69510       pNext = pNext_;
69511       return *this;
69512     }
69513 
setLineRasterizationModeVULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoEXT69514     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationLineStateCreateInfoEXT & setLineRasterizationMode(
69515       VULKAN_HPP_NAMESPACE::LineRasterizationModeEXT lineRasterizationMode_ ) VULKAN_HPP_NOEXCEPT
69516     {
69517       lineRasterizationMode = lineRasterizationMode_;
69518       return *this;
69519     }
69520 
69521     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationLineStateCreateInfoEXT &
setStippledLineEnableVULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoEXT69522       setStippledLineEnable( VULKAN_HPP_NAMESPACE::Bool32 stippledLineEnable_ ) VULKAN_HPP_NOEXCEPT
69523     {
69524       stippledLineEnable = stippledLineEnable_;
69525       return *this;
69526     }
69527 
69528     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationLineStateCreateInfoEXT &
setLineStippleFactorVULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoEXT69529                             setLineStippleFactor( uint32_t lineStippleFactor_ ) VULKAN_HPP_NOEXCEPT
69530     {
69531       lineStippleFactor = lineStippleFactor_;
69532       return *this;
69533     }
69534 
69535     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationLineStateCreateInfoEXT &
setLineStipplePatternVULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoEXT69536                             setLineStipplePattern( uint16_t lineStipplePattern_ ) VULKAN_HPP_NOEXCEPT
69537     {
69538       lineStipplePattern = lineStipplePattern_;
69539       return *this;
69540     }
69541 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
69542 
operator VkPipelineRasterizationLineStateCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoEXT69543     explicit operator VkPipelineRasterizationLineStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
69544     {
69545       return *reinterpret_cast<const VkPipelineRasterizationLineStateCreateInfoEXT *>( this );
69546     }
69547 
operator VkPipelineRasterizationLineStateCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoEXT69548     explicit operator VkPipelineRasterizationLineStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
69549     {
69550       return *reinterpret_cast<VkPipelineRasterizationLineStateCreateInfoEXT *>( this );
69551     }
69552 
69553 #if 14 <= VULKAN_HPP_CPP_VERSION
69554     auto
69555 #else
69556     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
69557                const void * const &,
69558                VULKAN_HPP_NAMESPACE::LineRasterizationModeEXT const &,
69559                VULKAN_HPP_NAMESPACE::Bool32 const &,
69560                uint32_t const &,
69561                uint16_t const &>
69562 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoEXT69563       reflect() const VULKAN_HPP_NOEXCEPT
69564     {
69565       return std::tie( sType, pNext, lineRasterizationMode, stippledLineEnable, lineStippleFactor, lineStipplePattern );
69566     }
69567 
69568 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
69569     auto operator<=>( PipelineRasterizationLineStateCreateInfoEXT const & ) const = default;
69570 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoEXT69571     bool operator==( PipelineRasterizationLineStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
69572     {
69573       return this->reflect() == rhs.reflect();
69574     }
69575 
operator !=VULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoEXT69576     bool operator!=( PipelineRasterizationLineStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
69577     {
69578       return this->reflect() != rhs.reflect();
69579     }
69580 #endif
69581 
69582   public:
69583     VULKAN_HPP_NAMESPACE::StructureType            sType = StructureType::ePipelineRasterizationLineStateCreateInfoEXT;
69584     const void *                                   pNext = {};
69585     VULKAN_HPP_NAMESPACE::LineRasterizationModeEXT lineRasterizationMode =
69586       VULKAN_HPP_NAMESPACE::LineRasterizationModeEXT::eDefault;
69587     VULKAN_HPP_NAMESPACE::Bool32 stippledLineEnable = {};
69588     uint32_t                     lineStippleFactor  = {};
69589     uint16_t                     lineStipplePattern = {};
69590   };
69591   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoEXT ) ==
69592                               sizeof( VkPipelineRasterizationLineStateCreateInfoEXT ),
69593                             "struct and wrapper have different size!" );
69594   VULKAN_HPP_STATIC_ASSERT(
69595     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoEXT>::value,
69596     "struct wrapper is not a standard layout!" );
69597   VULKAN_HPP_STATIC_ASSERT(
69598     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoEXT>::value,
69599     "PipelineRasterizationLineStateCreateInfoEXT is not nothrow_move_constructible!" );
69600 
69601   template <>
69602   struct CppType<StructureType, StructureType::ePipelineRasterizationLineStateCreateInfoEXT>
69603   {
69604     using Type = PipelineRasterizationLineStateCreateInfoEXT;
69605   };
69606 
69607   struct PipelineRasterizationProvokingVertexStateCreateInfoEXT
69608   {
69609     using NativeType = VkPipelineRasterizationProvokingVertexStateCreateInfoEXT;
69610 
69611     static const bool                                  allowDuplicate = false;
69612     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
69613       StructureType::ePipelineRasterizationProvokingVertexStateCreateInfoEXT;
69614 
69615 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineRasterizationProvokingVertexStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT69616     VULKAN_HPP_CONSTEXPR PipelineRasterizationProvokingVertexStateCreateInfoEXT(
69617       VULKAN_HPP_NAMESPACE::ProvokingVertexModeEXT provokingVertexMode_ =
69618         VULKAN_HPP_NAMESPACE::ProvokingVertexModeEXT::eFirstVertex ) VULKAN_HPP_NOEXCEPT
69619       : provokingVertexMode( provokingVertexMode_ )
69620     {}
69621 
69622     VULKAN_HPP_CONSTEXPR PipelineRasterizationProvokingVertexStateCreateInfoEXT(
69623       PipelineRasterizationProvokingVertexStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69624 
PipelineRasterizationProvokingVertexStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT69625     PipelineRasterizationProvokingVertexStateCreateInfoEXT(
69626       VkPipelineRasterizationProvokingVertexStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
69627       : PipelineRasterizationProvokingVertexStateCreateInfoEXT(
69628           *reinterpret_cast<PipelineRasterizationProvokingVertexStateCreateInfoEXT const *>( &rhs ) )
69629     {}
69630 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
69631 
69632     PipelineRasterizationProvokingVertexStateCreateInfoEXT &
69633       operator=( PipelineRasterizationProvokingVertexStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69634 
69635     PipelineRasterizationProvokingVertexStateCreateInfoEXT &
operator =VULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT69636       operator=( VkPipelineRasterizationProvokingVertexStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
69637     {
69638       *this =
69639         *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT const *>( &rhs );
69640       return *this;
69641     }
69642 
69643 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
69644     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationProvokingVertexStateCreateInfoEXT &
setPNextVULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT69645                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
69646     {
69647       pNext = pNext_;
69648       return *this;
69649     }
69650 
69651     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationProvokingVertexStateCreateInfoEXT &
setProvokingVertexModeVULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT69652       setProvokingVertexMode( VULKAN_HPP_NAMESPACE::ProvokingVertexModeEXT provokingVertexMode_ ) VULKAN_HPP_NOEXCEPT
69653     {
69654       provokingVertexMode = provokingVertexMode_;
69655       return *this;
69656     }
69657 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
69658 
operator VkPipelineRasterizationProvokingVertexStateCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT69659     explicit operator VkPipelineRasterizationProvokingVertexStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
69660     {
69661       return *reinterpret_cast<const VkPipelineRasterizationProvokingVertexStateCreateInfoEXT *>( this );
69662     }
69663 
operator VkPipelineRasterizationProvokingVertexStateCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT69664     explicit operator VkPipelineRasterizationProvokingVertexStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
69665     {
69666       return *reinterpret_cast<VkPipelineRasterizationProvokingVertexStateCreateInfoEXT *>( this );
69667     }
69668 
69669 #if 14 <= VULKAN_HPP_CPP_VERSION
69670     auto
69671 #else
69672     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
69673                const void * const &,
69674                VULKAN_HPP_NAMESPACE::ProvokingVertexModeEXT const &>
69675 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT69676       reflect() const VULKAN_HPP_NOEXCEPT
69677     {
69678       return std::tie( sType, pNext, provokingVertexMode );
69679     }
69680 
69681 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
69682     auto operator<=>( PipelineRasterizationProvokingVertexStateCreateInfoEXT const & ) const = default;
69683 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT69684     bool operator==( PipelineRasterizationProvokingVertexStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
69685     {
69686       return this->reflect() == rhs.reflect();
69687     }
69688 
operator !=VULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT69689     bool operator!=( PipelineRasterizationProvokingVertexStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
69690     {
69691       return this->reflect() != rhs.reflect();
69692     }
69693 #endif
69694 
69695   public:
69696     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRasterizationProvokingVertexStateCreateInfoEXT;
69697     const void *                        pNext = {};
69698     VULKAN_HPP_NAMESPACE::ProvokingVertexModeEXT provokingVertexMode =
69699       VULKAN_HPP_NAMESPACE::ProvokingVertexModeEXT::eFirstVertex;
69700   };
69701   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT ) ==
69702                               sizeof( VkPipelineRasterizationProvokingVertexStateCreateInfoEXT ),
69703                             "struct and wrapper have different size!" );
69704   VULKAN_HPP_STATIC_ASSERT(
69705     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT>::value,
69706     "struct wrapper is not a standard layout!" );
69707   VULKAN_HPP_STATIC_ASSERT(
69708     std::is_nothrow_move_constructible<
69709       VULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT>::value,
69710     "PipelineRasterizationProvokingVertexStateCreateInfoEXT is not nothrow_move_constructible!" );
69711 
69712   template <>
69713   struct CppType<StructureType, StructureType::ePipelineRasterizationProvokingVertexStateCreateInfoEXT>
69714   {
69715     using Type = PipelineRasterizationProvokingVertexStateCreateInfoEXT;
69716   };
69717 
69718   struct PipelineRasterizationStateRasterizationOrderAMD
69719   {
69720     using NativeType = VkPipelineRasterizationStateRasterizationOrderAMD;
69721 
69722     static const bool                                  allowDuplicate = false;
69723     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
69724       StructureType::ePipelineRasterizationStateRasterizationOrderAMD;
69725 
69726 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineRasterizationStateRasterizationOrderAMDVULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD69727     VULKAN_HPP_CONSTEXPR PipelineRasterizationStateRasterizationOrderAMD(
69728       VULKAN_HPP_NAMESPACE::RasterizationOrderAMD rasterizationOrder_ =
69729         VULKAN_HPP_NAMESPACE::RasterizationOrderAMD::eStrict ) VULKAN_HPP_NOEXCEPT
69730       : rasterizationOrder( rasterizationOrder_ )
69731     {}
69732 
69733     VULKAN_HPP_CONSTEXPR PipelineRasterizationStateRasterizationOrderAMD(
69734       PipelineRasterizationStateRasterizationOrderAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69735 
PipelineRasterizationStateRasterizationOrderAMDVULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD69736     PipelineRasterizationStateRasterizationOrderAMD( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
69737       VULKAN_HPP_NOEXCEPT
69738       : PipelineRasterizationStateRasterizationOrderAMD(
69739           *reinterpret_cast<PipelineRasterizationStateRasterizationOrderAMD const *>( &rhs ) )
69740     {}
69741 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
69742 
69743     PipelineRasterizationStateRasterizationOrderAMD &
69744       operator=( PipelineRasterizationStateRasterizationOrderAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69745 
69746     PipelineRasterizationStateRasterizationOrderAMD &
operator =VULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD69747       operator=( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs ) VULKAN_HPP_NOEXCEPT
69748     {
69749       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD const *>( &rhs );
69750       return *this;
69751     }
69752 
69753 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
69754     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateRasterizationOrderAMD &
setPNextVULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD69755                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
69756     {
69757       pNext = pNext_;
69758       return *this;
69759     }
69760 
69761     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateRasterizationOrderAMD &
setRasterizationOrderVULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD69762       setRasterizationOrder( VULKAN_HPP_NAMESPACE::RasterizationOrderAMD rasterizationOrder_ ) VULKAN_HPP_NOEXCEPT
69763     {
69764       rasterizationOrder = rasterizationOrder_;
69765       return *this;
69766     }
69767 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
69768 
operator VkPipelineRasterizationStateRasterizationOrderAMD const&VULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD69769     explicit operator VkPipelineRasterizationStateRasterizationOrderAMD const &() const VULKAN_HPP_NOEXCEPT
69770     {
69771       return *reinterpret_cast<const VkPipelineRasterizationStateRasterizationOrderAMD *>( this );
69772     }
69773 
operator VkPipelineRasterizationStateRasterizationOrderAMD&VULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD69774     explicit operator VkPipelineRasterizationStateRasterizationOrderAMD &() VULKAN_HPP_NOEXCEPT
69775     {
69776       return *reinterpret_cast<VkPipelineRasterizationStateRasterizationOrderAMD *>( this );
69777     }
69778 
69779 #if 14 <= VULKAN_HPP_CPP_VERSION
69780     auto
69781 #else
69782     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
69783                const void * const &,
69784                VULKAN_HPP_NAMESPACE::RasterizationOrderAMD const &>
69785 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD69786       reflect() const VULKAN_HPP_NOEXCEPT
69787     {
69788       return std::tie( sType, pNext, rasterizationOrder );
69789     }
69790 
69791 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
69792     auto operator<=>( PipelineRasterizationStateRasterizationOrderAMD const & ) const = default;
69793 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD69794     bool operator==( PipelineRasterizationStateRasterizationOrderAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
69795     {
69796       return this->reflect() == rhs.reflect();
69797     }
69798 
operator !=VULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD69799     bool operator!=( PipelineRasterizationStateRasterizationOrderAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
69800     {
69801       return this->reflect() != rhs.reflect();
69802     }
69803 #endif
69804 
69805   public:
69806     VULKAN_HPP_NAMESPACE::StructureType         sType = StructureType::ePipelineRasterizationStateRasterizationOrderAMD;
69807     const void *                                pNext = {};
69808     VULKAN_HPP_NAMESPACE::RasterizationOrderAMD rasterizationOrder =
69809       VULKAN_HPP_NAMESPACE::RasterizationOrderAMD::eStrict;
69810   };
69811   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD ) ==
69812                               sizeof( VkPipelineRasterizationStateRasterizationOrderAMD ),
69813                             "struct and wrapper have different size!" );
69814   VULKAN_HPP_STATIC_ASSERT(
69815     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD>::value,
69816     "struct wrapper is not a standard layout!" );
69817   VULKAN_HPP_STATIC_ASSERT(
69818     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD>::value,
69819     "PipelineRasterizationStateRasterizationOrderAMD is not nothrow_move_constructible!" );
69820 
69821   template <>
69822   struct CppType<StructureType, StructureType::ePipelineRasterizationStateRasterizationOrderAMD>
69823   {
69824     using Type = PipelineRasterizationStateRasterizationOrderAMD;
69825   };
69826 
69827   struct PipelineRasterizationStateStreamCreateInfoEXT
69828   {
69829     using NativeType = VkPipelineRasterizationStateStreamCreateInfoEXT;
69830 
69831     static const bool                                  allowDuplicate = false;
69832     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
69833       StructureType::ePipelineRasterizationStateStreamCreateInfoEXT;
69834 
69835 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineRasterizationStateStreamCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT69836     VULKAN_HPP_CONSTEXPR PipelineRasterizationStateStreamCreateInfoEXT(
69837       VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateFlagsEXT flags_ = {},
69838       uint32_t rasterizationStream_                                               = {} ) VULKAN_HPP_NOEXCEPT
69839       : flags( flags_ )
69840       , rasterizationStream( rasterizationStream_ )
69841     {}
69842 
69843     VULKAN_HPP_CONSTEXPR PipelineRasterizationStateStreamCreateInfoEXT(
69844       PipelineRasterizationStateStreamCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69845 
PipelineRasterizationStateStreamCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT69846     PipelineRasterizationStateStreamCreateInfoEXT( VkPipelineRasterizationStateStreamCreateInfoEXT const & rhs )
69847       VULKAN_HPP_NOEXCEPT
69848       : PipelineRasterizationStateStreamCreateInfoEXT(
69849           *reinterpret_cast<PipelineRasterizationStateStreamCreateInfoEXT const *>( &rhs ) )
69850     {}
69851 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
69852 
69853     PipelineRasterizationStateStreamCreateInfoEXT &
69854       operator=( PipelineRasterizationStateStreamCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69855 
69856     PipelineRasterizationStateStreamCreateInfoEXT &
operator =VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT69857       operator=( VkPipelineRasterizationStateStreamCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
69858     {
69859       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT const *>( &rhs );
69860       return *this;
69861     }
69862 
69863 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
69864     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateStreamCreateInfoEXT &
setPNextVULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT69865                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
69866     {
69867       pNext = pNext_;
69868       return *this;
69869     }
69870 
69871     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateStreamCreateInfoEXT &
setFlagsVULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT69872       setFlags( VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
69873     {
69874       flags = flags_;
69875       return *this;
69876     }
69877 
69878     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateStreamCreateInfoEXT &
setRasterizationStreamVULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT69879                             setRasterizationStream( uint32_t rasterizationStream_ ) VULKAN_HPP_NOEXCEPT
69880     {
69881       rasterizationStream = rasterizationStream_;
69882       return *this;
69883     }
69884 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
69885 
operator VkPipelineRasterizationStateStreamCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT69886     explicit operator VkPipelineRasterizationStateStreamCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
69887     {
69888       return *reinterpret_cast<const VkPipelineRasterizationStateStreamCreateInfoEXT *>( this );
69889     }
69890 
operator VkPipelineRasterizationStateStreamCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT69891     explicit operator VkPipelineRasterizationStateStreamCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
69892     {
69893       return *reinterpret_cast<VkPipelineRasterizationStateStreamCreateInfoEXT *>( this );
69894     }
69895 
69896 #if 14 <= VULKAN_HPP_CPP_VERSION
69897     auto
69898 #else
69899     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
69900                const void * const &,
69901                VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateFlagsEXT const &,
69902                uint32_t const &>
69903 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT69904       reflect() const VULKAN_HPP_NOEXCEPT
69905     {
69906       return std::tie( sType, pNext, flags, rasterizationStream );
69907     }
69908 
69909 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
69910     auto operator<=>( PipelineRasterizationStateStreamCreateInfoEXT const & ) const = default;
69911 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT69912     bool operator==( PipelineRasterizationStateStreamCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
69913     {
69914       return this->reflect() == rhs.reflect();
69915     }
69916 
operator !=VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT69917     bool operator!=( PipelineRasterizationStateStreamCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
69918     {
69919       return this->reflect() != rhs.reflect();
69920     }
69921 #endif
69922 
69923   public:
69924     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRasterizationStateStreamCreateInfoEXT;
69925     const void *                        pNext = {};
69926     VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateFlagsEXT flags               = {};
69927     uint32_t                                                             rasterizationStream = {};
69928   };
69929   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT ) ==
69930                               sizeof( VkPipelineRasterizationStateStreamCreateInfoEXT ),
69931                             "struct and wrapper have different size!" );
69932   VULKAN_HPP_STATIC_ASSERT(
69933     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT>::value,
69934     "struct wrapper is not a standard layout!" );
69935   VULKAN_HPP_STATIC_ASSERT(
69936     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT>::value,
69937     "PipelineRasterizationStateStreamCreateInfoEXT is not nothrow_move_constructible!" );
69938 
69939   template <>
69940   struct CppType<StructureType, StructureType::ePipelineRasterizationStateStreamCreateInfoEXT>
69941   {
69942     using Type = PipelineRasterizationStateStreamCreateInfoEXT;
69943   };
69944 
69945   struct PipelineRenderingCreateInfoKHR
69946   {
69947     using NativeType = VkPipelineRenderingCreateInfoKHR;
69948 
69949     static const bool                                  allowDuplicate = false;
69950     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineRenderingCreateInfoKHR;
69951 
69952 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineRenderingCreateInfoKHRVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfoKHR69953     VULKAN_HPP_CONSTEXPR PipelineRenderingCreateInfoKHR(
69954       uint32_t                             viewMask_                = {},
69955       uint32_t                             colorAttachmentCount_    = {},
69956       const VULKAN_HPP_NAMESPACE::Format * pColorAttachmentFormats_ = {},
69957       VULKAN_HPP_NAMESPACE::Format         depthAttachmentFormat_   = VULKAN_HPP_NAMESPACE::Format::eUndefined,
69958       VULKAN_HPP_NAMESPACE::Format         stencilAttachmentFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined )
69959       VULKAN_HPP_NOEXCEPT
69960       : viewMask( viewMask_ )
69961       , colorAttachmentCount( colorAttachmentCount_ )
69962       , pColorAttachmentFormats( pColorAttachmentFormats_ )
69963       , depthAttachmentFormat( depthAttachmentFormat_ )
69964       , stencilAttachmentFormat( stencilAttachmentFormat_ )
69965     {}
69966 
69967     VULKAN_HPP_CONSTEXPR
69968       PipelineRenderingCreateInfoKHR( PipelineRenderingCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69969 
PipelineRenderingCreateInfoKHRVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfoKHR69970     PipelineRenderingCreateInfoKHR( VkPipelineRenderingCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
69971       : PipelineRenderingCreateInfoKHR( *reinterpret_cast<PipelineRenderingCreateInfoKHR const *>( &rhs ) )
69972     {}
69973 
69974 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineRenderingCreateInfoKHRVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfoKHR69975     PipelineRenderingCreateInfoKHR(
69976       uint32_t                                                                                  viewMask_,
69977       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const & colorAttachmentFormats_,
69978       VULKAN_HPP_NAMESPACE::Format depthAttachmentFormat_   = VULKAN_HPP_NAMESPACE::Format::eUndefined,
69979       VULKAN_HPP_NAMESPACE::Format stencilAttachmentFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined )
69980       : viewMask( viewMask_ )
69981       , colorAttachmentCount( static_cast<uint32_t>( colorAttachmentFormats_.size() ) )
69982       , pColorAttachmentFormats( colorAttachmentFormats_.data() )
69983       , depthAttachmentFormat( depthAttachmentFormat_ )
69984       , stencilAttachmentFormat( stencilAttachmentFormat_ )
69985     {}
69986 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
69987 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
69988 
69989     PipelineRenderingCreateInfoKHR &
69990       operator=( PipelineRenderingCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69991 
operator =VULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfoKHR69992     PipelineRenderingCreateInfoKHR & operator=( VkPipelineRenderingCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
69993     {
69994       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfoKHR const *>( &rhs );
69995       return *this;
69996     }
69997 
69998 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfoKHR69999     VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
70000     {
70001       pNext = pNext_;
70002       return *this;
70003     }
70004 
setViewMaskVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfoKHR70005     VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfoKHR & setViewMask( uint32_t viewMask_ ) VULKAN_HPP_NOEXCEPT
70006     {
70007       viewMask = viewMask_;
70008       return *this;
70009     }
70010 
70011     VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfoKHR &
setColorAttachmentCountVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfoKHR70012                             setColorAttachmentCount( uint32_t colorAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
70013     {
70014       colorAttachmentCount = colorAttachmentCount_;
70015       return *this;
70016     }
70017 
70018     VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfoKHR &
setPColorAttachmentFormatsVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfoKHR70019       setPColorAttachmentFormats( const VULKAN_HPP_NAMESPACE::Format * pColorAttachmentFormats_ ) VULKAN_HPP_NOEXCEPT
70020     {
70021       pColorAttachmentFormats = pColorAttachmentFormats_;
70022       return *this;
70023     }
70024 
70025 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setColorAttachmentFormatsVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfoKHR70026     PipelineRenderingCreateInfoKHR & setColorAttachmentFormats(
70027       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const &
70028         colorAttachmentFormats_ ) VULKAN_HPP_NOEXCEPT
70029     {
70030       colorAttachmentCount    = static_cast<uint32_t>( colorAttachmentFormats_.size() );
70031       pColorAttachmentFormats = colorAttachmentFormats_.data();
70032       return *this;
70033     }
70034 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
70035 
70036     VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfoKHR &
setDepthAttachmentFormatVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfoKHR70037       setDepthAttachmentFormat( VULKAN_HPP_NAMESPACE::Format depthAttachmentFormat_ ) VULKAN_HPP_NOEXCEPT
70038     {
70039       depthAttachmentFormat = depthAttachmentFormat_;
70040       return *this;
70041     }
70042 
70043     VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfoKHR &
setStencilAttachmentFormatVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfoKHR70044       setStencilAttachmentFormat( VULKAN_HPP_NAMESPACE::Format stencilAttachmentFormat_ ) VULKAN_HPP_NOEXCEPT
70045     {
70046       stencilAttachmentFormat = stencilAttachmentFormat_;
70047       return *this;
70048     }
70049 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
70050 
operator VkPipelineRenderingCreateInfoKHR const&VULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfoKHR70051     explicit operator VkPipelineRenderingCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
70052     {
70053       return *reinterpret_cast<const VkPipelineRenderingCreateInfoKHR *>( this );
70054     }
70055 
operator VkPipelineRenderingCreateInfoKHR&VULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfoKHR70056     explicit operator VkPipelineRenderingCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
70057     {
70058       return *reinterpret_cast<VkPipelineRenderingCreateInfoKHR *>( this );
70059     }
70060 
70061 #if 14 <= VULKAN_HPP_CPP_VERSION
70062     auto
70063 #else
70064     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
70065                const void * const &,
70066                uint32_t const &,
70067                uint32_t const &,
70068                const VULKAN_HPP_NAMESPACE::Format * const &,
70069                VULKAN_HPP_NAMESPACE::Format const &,
70070                VULKAN_HPP_NAMESPACE::Format const &>
70071 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfoKHR70072       reflect() const VULKAN_HPP_NOEXCEPT
70073     {
70074       return std::tie( sType,
70075                        pNext,
70076                        viewMask,
70077                        colorAttachmentCount,
70078                        pColorAttachmentFormats,
70079                        depthAttachmentFormat,
70080                        stencilAttachmentFormat );
70081     }
70082 
70083 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
70084     auto operator<=>( PipelineRenderingCreateInfoKHR const & ) const = default;
70085 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfoKHR70086     bool operator==( PipelineRenderingCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
70087     {
70088       return this->reflect() == rhs.reflect();
70089     }
70090 
operator !=VULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfoKHR70091     bool operator!=( PipelineRenderingCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
70092     {
70093       return this->reflect() != rhs.reflect();
70094     }
70095 #endif
70096 
70097   public:
70098     VULKAN_HPP_NAMESPACE::StructureType  sType                   = StructureType::ePipelineRenderingCreateInfoKHR;
70099     const void *                         pNext                   = {};
70100     uint32_t                             viewMask                = {};
70101     uint32_t                             colorAttachmentCount    = {};
70102     const VULKAN_HPP_NAMESPACE::Format * pColorAttachmentFormats = {};
70103     VULKAN_HPP_NAMESPACE::Format         depthAttachmentFormat   = VULKAN_HPP_NAMESPACE::Format::eUndefined;
70104     VULKAN_HPP_NAMESPACE::Format         stencilAttachmentFormat = VULKAN_HPP_NAMESPACE::Format::eUndefined;
70105   };
70106   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfoKHR ) ==
70107                               sizeof( VkPipelineRenderingCreateInfoKHR ),
70108                             "struct and wrapper have different size!" );
70109   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfoKHR>::value,
70110                             "struct wrapper is not a standard layout!" );
70111   VULKAN_HPP_STATIC_ASSERT(
70112     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfoKHR>::value,
70113     "PipelineRenderingCreateInfoKHR is not nothrow_move_constructible!" );
70114 
70115   template <>
70116   struct CppType<StructureType, StructureType::ePipelineRenderingCreateInfoKHR>
70117   {
70118     using Type = PipelineRenderingCreateInfoKHR;
70119   };
70120 
70121   struct PipelineRepresentativeFragmentTestStateCreateInfoNV
70122   {
70123     using NativeType = VkPipelineRepresentativeFragmentTestStateCreateInfoNV;
70124 
70125     static const bool                                  allowDuplicate = false;
70126     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
70127       StructureType::ePipelineRepresentativeFragmentTestStateCreateInfoNV;
70128 
70129 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineRepresentativeFragmentTestStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV70130     VULKAN_HPP_CONSTEXPR PipelineRepresentativeFragmentTestStateCreateInfoNV(
70131       VULKAN_HPP_NAMESPACE::Bool32 representativeFragmentTestEnable_ = {} ) VULKAN_HPP_NOEXCEPT
70132       : representativeFragmentTestEnable( representativeFragmentTestEnable_ )
70133     {}
70134 
70135     VULKAN_HPP_CONSTEXPR PipelineRepresentativeFragmentTestStateCreateInfoNV(
70136       PipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70137 
PipelineRepresentativeFragmentTestStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV70138     PipelineRepresentativeFragmentTestStateCreateInfoNV(
70139       VkPipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
70140       : PipelineRepresentativeFragmentTestStateCreateInfoNV(
70141           *reinterpret_cast<PipelineRepresentativeFragmentTestStateCreateInfoNV const *>( &rhs ) )
70142     {}
70143 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
70144 
70145     PipelineRepresentativeFragmentTestStateCreateInfoNV &
70146       operator=( PipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70147 
70148     PipelineRepresentativeFragmentTestStateCreateInfoNV &
operator =VULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV70149       operator=( VkPipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
70150     {
70151       *this =
70152         *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV const *>( &rhs );
70153       return *this;
70154     }
70155 
70156 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
70157     VULKAN_HPP_CONSTEXPR_14 PipelineRepresentativeFragmentTestStateCreateInfoNV &
setPNextVULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV70158                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
70159     {
70160       pNext = pNext_;
70161       return *this;
70162     }
70163 
setRepresentativeFragmentTestEnableVULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV70164     VULKAN_HPP_CONSTEXPR_14 PipelineRepresentativeFragmentTestStateCreateInfoNV & setRepresentativeFragmentTestEnable(
70165       VULKAN_HPP_NAMESPACE::Bool32 representativeFragmentTestEnable_ ) VULKAN_HPP_NOEXCEPT
70166     {
70167       representativeFragmentTestEnable = representativeFragmentTestEnable_;
70168       return *this;
70169     }
70170 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
70171 
operator VkPipelineRepresentativeFragmentTestStateCreateInfoNV const&VULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV70172     explicit operator VkPipelineRepresentativeFragmentTestStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
70173     {
70174       return *reinterpret_cast<const VkPipelineRepresentativeFragmentTestStateCreateInfoNV *>( this );
70175     }
70176 
operator VkPipelineRepresentativeFragmentTestStateCreateInfoNV&VULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV70177     explicit operator VkPipelineRepresentativeFragmentTestStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT
70178     {
70179       return *reinterpret_cast<VkPipelineRepresentativeFragmentTestStateCreateInfoNV *>( this );
70180     }
70181 
70182 #if 14 <= VULKAN_HPP_CPP_VERSION
70183     auto
70184 #else
70185     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
70186 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV70187       reflect() const VULKAN_HPP_NOEXCEPT
70188     {
70189       return std::tie( sType, pNext, representativeFragmentTestEnable );
70190     }
70191 
70192 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
70193     auto operator<=>( PipelineRepresentativeFragmentTestStateCreateInfoNV const & ) const = default;
70194 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV70195     bool operator==( PipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
70196     {
70197       return this->reflect() == rhs.reflect();
70198     }
70199 
operator !=VULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV70200     bool operator!=( PipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
70201     {
70202       return this->reflect() != rhs.reflect();
70203     }
70204 #endif
70205 
70206   public:
70207     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRepresentativeFragmentTestStateCreateInfoNV;
70208     const void *                        pNext = {};
70209     VULKAN_HPP_NAMESPACE::Bool32        representativeFragmentTestEnable = {};
70210   };
70211   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV ) ==
70212                               sizeof( VkPipelineRepresentativeFragmentTestStateCreateInfoNV ),
70213                             "struct and wrapper have different size!" );
70214   VULKAN_HPP_STATIC_ASSERT(
70215     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV>::value,
70216     "struct wrapper is not a standard layout!" );
70217   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<
70218                               VULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV>::value,
70219                             "PipelineRepresentativeFragmentTestStateCreateInfoNV is not nothrow_move_constructible!" );
70220 
70221   template <>
70222   struct CppType<StructureType, StructureType::ePipelineRepresentativeFragmentTestStateCreateInfoNV>
70223   {
70224     using Type = PipelineRepresentativeFragmentTestStateCreateInfoNV;
70225   };
70226 
70227   struct PipelineSampleLocationsStateCreateInfoEXT
70228   {
70229     using NativeType = VkPipelineSampleLocationsStateCreateInfoEXT;
70230 
70231     static const bool                                  allowDuplicate = false;
70232     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
70233       StructureType::ePipelineSampleLocationsStateCreateInfoEXT;
70234 
70235 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineSampleLocationsStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT70236     VULKAN_HPP_CONSTEXPR PipelineSampleLocationsStateCreateInfoEXT(
70237       VULKAN_HPP_NAMESPACE::Bool32                 sampleLocationsEnable_ = {},
70238       VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT sampleLocationsInfo_   = {} ) VULKAN_HPP_NOEXCEPT
70239       : sampleLocationsEnable( sampleLocationsEnable_ )
70240       , sampleLocationsInfo( sampleLocationsInfo_ )
70241     {}
70242 
70243     VULKAN_HPP_CONSTEXPR PipelineSampleLocationsStateCreateInfoEXT(
70244       PipelineSampleLocationsStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70245 
PipelineSampleLocationsStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT70246     PipelineSampleLocationsStateCreateInfoEXT( VkPipelineSampleLocationsStateCreateInfoEXT const & rhs )
70247       VULKAN_HPP_NOEXCEPT
70248       : PipelineSampleLocationsStateCreateInfoEXT(
70249           *reinterpret_cast<PipelineSampleLocationsStateCreateInfoEXT const *>( &rhs ) )
70250     {}
70251 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
70252 
70253     PipelineSampleLocationsStateCreateInfoEXT &
70254       operator=( PipelineSampleLocationsStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70255 
70256     PipelineSampleLocationsStateCreateInfoEXT &
operator =VULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT70257       operator=( VkPipelineSampleLocationsStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
70258     {
70259       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT const *>( &rhs );
70260       return *this;
70261     }
70262 
70263 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
70264     VULKAN_HPP_CONSTEXPR_14 PipelineSampleLocationsStateCreateInfoEXT &
setPNextVULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT70265                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
70266     {
70267       pNext = pNext_;
70268       return *this;
70269     }
70270 
70271     VULKAN_HPP_CONSTEXPR_14 PipelineSampleLocationsStateCreateInfoEXT &
setSampleLocationsEnableVULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT70272       setSampleLocationsEnable( VULKAN_HPP_NAMESPACE::Bool32 sampleLocationsEnable_ ) VULKAN_HPP_NOEXCEPT
70273     {
70274       sampleLocationsEnable = sampleLocationsEnable_;
70275       return *this;
70276     }
70277 
setSampleLocationsInfoVULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT70278     VULKAN_HPP_CONSTEXPR_14 PipelineSampleLocationsStateCreateInfoEXT & setSampleLocationsInfo(
70279       VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const & sampleLocationsInfo_ ) VULKAN_HPP_NOEXCEPT
70280     {
70281       sampleLocationsInfo = sampleLocationsInfo_;
70282       return *this;
70283     }
70284 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
70285 
operator VkPipelineSampleLocationsStateCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT70286     explicit operator VkPipelineSampleLocationsStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
70287     {
70288       return *reinterpret_cast<const VkPipelineSampleLocationsStateCreateInfoEXT *>( this );
70289     }
70290 
operator VkPipelineSampleLocationsStateCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT70291     explicit operator VkPipelineSampleLocationsStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
70292     {
70293       return *reinterpret_cast<VkPipelineSampleLocationsStateCreateInfoEXT *>( this );
70294     }
70295 
70296 #if 14 <= VULKAN_HPP_CPP_VERSION
70297     auto
70298 #else
70299     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
70300                const void * const &,
70301                VULKAN_HPP_NAMESPACE::Bool32 const &,
70302                VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const &>
70303 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT70304       reflect() const VULKAN_HPP_NOEXCEPT
70305     {
70306       return std::tie( sType, pNext, sampleLocationsEnable, sampleLocationsInfo );
70307     }
70308 
70309 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
70310     auto operator<=>( PipelineSampleLocationsStateCreateInfoEXT const & ) const = default;
70311 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT70312     bool operator==( PipelineSampleLocationsStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
70313     {
70314       return this->reflect() == rhs.reflect();
70315     }
70316 
operator !=VULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT70317     bool operator!=( PipelineSampleLocationsStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
70318     {
70319       return this->reflect() != rhs.reflect();
70320     }
70321 #endif
70322 
70323   public:
70324     VULKAN_HPP_NAMESPACE::StructureType          sType = StructureType::ePipelineSampleLocationsStateCreateInfoEXT;
70325     const void *                                 pNext = {};
70326     VULKAN_HPP_NAMESPACE::Bool32                 sampleLocationsEnable = {};
70327     VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT sampleLocationsInfo   = {};
70328   };
70329   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT ) ==
70330                               sizeof( VkPipelineSampleLocationsStateCreateInfoEXT ),
70331                             "struct and wrapper have different size!" );
70332   VULKAN_HPP_STATIC_ASSERT(
70333     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT>::value,
70334     "struct wrapper is not a standard layout!" );
70335   VULKAN_HPP_STATIC_ASSERT(
70336     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT>::value,
70337     "PipelineSampleLocationsStateCreateInfoEXT is not nothrow_move_constructible!" );
70338 
70339   template <>
70340   struct CppType<StructureType, StructureType::ePipelineSampleLocationsStateCreateInfoEXT>
70341   {
70342     using Type = PipelineSampleLocationsStateCreateInfoEXT;
70343   };
70344 
70345   struct PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT
70346   {
70347     using NativeType = VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT;
70348 
70349     static const bool                                  allowDuplicate = false;
70350     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
70351       StructureType::ePipelineShaderStageRequiredSubgroupSizeCreateInfoEXT;
70352 
70353 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
70354     VULKAN_HPP_CONSTEXPR
PipelineShaderStageRequiredSubgroupSizeCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT70355       PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT( uint32_t requiredSubgroupSize_ = {} ) VULKAN_HPP_NOEXCEPT
70356       : requiredSubgroupSize( requiredSubgroupSize_ )
70357     {}
70358 
70359     VULKAN_HPP_CONSTEXPR PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT(
70360       PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70361 
PipelineShaderStageRequiredSubgroupSizeCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT70362     PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT(
70363       VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
70364       : PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT(
70365           *reinterpret_cast<PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const *>( &rhs ) )
70366     {}
70367 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
70368 
70369     PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT &
70370       operator=( PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70371 
70372     PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT &
operator =VULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT70373       operator=( VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
70374     {
70375       *this =
70376         *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const *>( &rhs );
70377       return *this;
70378     }
70379 
operator VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT70380     explicit operator VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
70381     {
70382       return *reinterpret_cast<const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT *>( this );
70383     }
70384 
operator VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT70385     explicit operator VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
70386     {
70387       return *reinterpret_cast<VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT *>( this );
70388     }
70389 
70390 #if 14 <= VULKAN_HPP_CPP_VERSION
70391     auto
70392 #else
70393     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
70394 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT70395       reflect() const VULKAN_HPP_NOEXCEPT
70396     {
70397       return std::tie( sType, pNext, requiredSubgroupSize );
70398     }
70399 
70400 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
70401     auto operator<=>( PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const & ) const = default;
70402 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT70403     bool operator==( PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
70404     {
70405       return this->reflect() == rhs.reflect();
70406     }
70407 
operator !=VULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT70408     bool operator!=( PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
70409     {
70410       return this->reflect() != rhs.reflect();
70411     }
70412 #endif
70413 
70414   public:
70415     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineShaderStageRequiredSubgroupSizeCreateInfoEXT;
70416     void *                              pNext = {};
70417     uint32_t                            requiredSubgroupSize = {};
70418   };
70419   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT ) ==
70420                               sizeof( VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT ),
70421                             "struct and wrapper have different size!" );
70422   VULKAN_HPP_STATIC_ASSERT(
70423     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT>::value,
70424     "struct wrapper is not a standard layout!" );
70425   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<
70426                               VULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT>::value,
70427                             "PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT is not nothrow_move_constructible!" );
70428 
70429   template <>
70430   struct CppType<StructureType, StructureType::ePipelineShaderStageRequiredSubgroupSizeCreateInfoEXT>
70431   {
70432     using Type = PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT;
70433   };
70434 
70435   struct PipelineTessellationDomainOriginStateCreateInfo
70436   {
70437     using NativeType = VkPipelineTessellationDomainOriginStateCreateInfo;
70438 
70439     static const bool                                  allowDuplicate = false;
70440     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
70441       StructureType::ePipelineTessellationDomainOriginStateCreateInfo;
70442 
70443 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineTessellationDomainOriginStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo70444     VULKAN_HPP_CONSTEXPR PipelineTessellationDomainOriginStateCreateInfo(
70445       VULKAN_HPP_NAMESPACE::TessellationDomainOrigin domainOrigin_ =
70446         VULKAN_HPP_NAMESPACE::TessellationDomainOrigin::eUpperLeft ) VULKAN_HPP_NOEXCEPT : domainOrigin( domainOrigin_ )
70447     {}
70448 
70449     VULKAN_HPP_CONSTEXPR PipelineTessellationDomainOriginStateCreateInfo(
70450       PipelineTessellationDomainOriginStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70451 
PipelineTessellationDomainOriginStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo70452     PipelineTessellationDomainOriginStateCreateInfo( VkPipelineTessellationDomainOriginStateCreateInfo const & rhs )
70453       VULKAN_HPP_NOEXCEPT
70454       : PipelineTessellationDomainOriginStateCreateInfo(
70455           *reinterpret_cast<PipelineTessellationDomainOriginStateCreateInfo const *>( &rhs ) )
70456     {}
70457 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
70458 
70459     PipelineTessellationDomainOriginStateCreateInfo &
70460       operator=( PipelineTessellationDomainOriginStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70461 
70462     PipelineTessellationDomainOriginStateCreateInfo &
operator =VULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo70463       operator=( VkPipelineTessellationDomainOriginStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
70464     {
70465       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo const *>( &rhs );
70466       return *this;
70467     }
70468 
70469 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
70470     VULKAN_HPP_CONSTEXPR_14 PipelineTessellationDomainOriginStateCreateInfo &
setPNextVULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo70471                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
70472     {
70473       pNext = pNext_;
70474       return *this;
70475     }
70476 
70477     VULKAN_HPP_CONSTEXPR_14 PipelineTessellationDomainOriginStateCreateInfo &
setDomainOriginVULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo70478       setDomainOrigin( VULKAN_HPP_NAMESPACE::TessellationDomainOrigin domainOrigin_ ) VULKAN_HPP_NOEXCEPT
70479     {
70480       domainOrigin = domainOrigin_;
70481       return *this;
70482     }
70483 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
70484 
operator VkPipelineTessellationDomainOriginStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo70485     explicit operator VkPipelineTessellationDomainOriginStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
70486     {
70487       return *reinterpret_cast<const VkPipelineTessellationDomainOriginStateCreateInfo *>( this );
70488     }
70489 
operator VkPipelineTessellationDomainOriginStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo70490     explicit operator VkPipelineTessellationDomainOriginStateCreateInfo &() VULKAN_HPP_NOEXCEPT
70491     {
70492       return *reinterpret_cast<VkPipelineTessellationDomainOriginStateCreateInfo *>( this );
70493     }
70494 
70495 #if 14 <= VULKAN_HPP_CPP_VERSION
70496     auto
70497 #else
70498     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
70499                const void * const &,
70500                VULKAN_HPP_NAMESPACE::TessellationDomainOrigin const &>
70501 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo70502       reflect() const VULKAN_HPP_NOEXCEPT
70503     {
70504       return std::tie( sType, pNext, domainOrigin );
70505     }
70506 
70507 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
70508     auto operator<=>( PipelineTessellationDomainOriginStateCreateInfo const & ) const = default;
70509 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo70510     bool operator==( PipelineTessellationDomainOriginStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
70511     {
70512       return this->reflect() == rhs.reflect();
70513     }
70514 
operator !=VULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo70515     bool operator!=( PipelineTessellationDomainOriginStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
70516     {
70517       return this->reflect() != rhs.reflect();
70518     }
70519 #endif
70520 
70521   public:
70522     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineTessellationDomainOriginStateCreateInfo;
70523     const void *                        pNext = {};
70524     VULKAN_HPP_NAMESPACE::TessellationDomainOrigin domainOrigin =
70525       VULKAN_HPP_NAMESPACE::TessellationDomainOrigin::eUpperLeft;
70526   };
70527   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo ) ==
70528                               sizeof( VkPipelineTessellationDomainOriginStateCreateInfo ),
70529                             "struct and wrapper have different size!" );
70530   VULKAN_HPP_STATIC_ASSERT(
70531     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo>::value,
70532     "struct wrapper is not a standard layout!" );
70533   VULKAN_HPP_STATIC_ASSERT(
70534     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo>::value,
70535     "PipelineTessellationDomainOriginStateCreateInfo is not nothrow_move_constructible!" );
70536 
70537   template <>
70538   struct CppType<StructureType, StructureType::ePipelineTessellationDomainOriginStateCreateInfo>
70539   {
70540     using Type = PipelineTessellationDomainOriginStateCreateInfo;
70541   };
70542   using PipelineTessellationDomainOriginStateCreateInfoKHR = PipelineTessellationDomainOriginStateCreateInfo;
70543 
70544   struct VertexInputBindingDivisorDescriptionEXT
70545   {
70546     using NativeType = VkVertexInputBindingDivisorDescriptionEXT;
70547 
70548 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VertexInputBindingDivisorDescriptionEXTVULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT70549     VULKAN_HPP_CONSTEXPR VertexInputBindingDivisorDescriptionEXT( uint32_t binding_ = {},
70550                                                                   uint32_t divisor_ = {} ) VULKAN_HPP_NOEXCEPT
70551       : binding( binding_ )
70552       , divisor( divisor_ )
70553     {}
70554 
70555     VULKAN_HPP_CONSTEXPR VertexInputBindingDivisorDescriptionEXT( VertexInputBindingDivisorDescriptionEXT const & rhs )
70556       VULKAN_HPP_NOEXCEPT = default;
70557 
VertexInputBindingDivisorDescriptionEXTVULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT70558     VertexInputBindingDivisorDescriptionEXT( VkVertexInputBindingDivisorDescriptionEXT const & rhs ) VULKAN_HPP_NOEXCEPT
70559       : VertexInputBindingDivisorDescriptionEXT(
70560           *reinterpret_cast<VertexInputBindingDivisorDescriptionEXT const *>( &rhs ) )
70561     {}
70562 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
70563 
70564     VertexInputBindingDivisorDescriptionEXT &
70565       operator=( VertexInputBindingDivisorDescriptionEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70566 
70567     VertexInputBindingDivisorDescriptionEXT &
operator =VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT70568       operator=( VkVertexInputBindingDivisorDescriptionEXT const & rhs ) VULKAN_HPP_NOEXCEPT
70569     {
70570       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT const *>( &rhs );
70571       return *this;
70572     }
70573 
70574 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
70575     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDivisorDescriptionEXT &
setBindingVULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT70576                             setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT
70577     {
70578       binding = binding_;
70579       return *this;
70580     }
70581 
70582     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDivisorDescriptionEXT &
setDivisorVULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT70583                             setDivisor( uint32_t divisor_ ) VULKAN_HPP_NOEXCEPT
70584     {
70585       divisor = divisor_;
70586       return *this;
70587     }
70588 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
70589 
operator VkVertexInputBindingDivisorDescriptionEXT const&VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT70590     explicit operator VkVertexInputBindingDivisorDescriptionEXT const &() const VULKAN_HPP_NOEXCEPT
70591     {
70592       return *reinterpret_cast<const VkVertexInputBindingDivisorDescriptionEXT *>( this );
70593     }
70594 
operator VkVertexInputBindingDivisorDescriptionEXT&VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT70595     explicit operator VkVertexInputBindingDivisorDescriptionEXT &() VULKAN_HPP_NOEXCEPT
70596     {
70597       return *reinterpret_cast<VkVertexInputBindingDivisorDescriptionEXT *>( this );
70598     }
70599 
70600 #if 14 <= VULKAN_HPP_CPP_VERSION
70601     auto
70602 #else
70603     std::tuple<uint32_t const &, uint32_t const &>
70604 #endif
reflectVULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT70605       reflect() const VULKAN_HPP_NOEXCEPT
70606     {
70607       return std::tie( binding, divisor );
70608     }
70609 
70610 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
70611     auto operator<=>( VertexInputBindingDivisorDescriptionEXT const & ) const = default;
70612 #else
operator ==VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT70613     bool operator==( VertexInputBindingDivisorDescriptionEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
70614     {
70615       return this->reflect() == rhs.reflect();
70616     }
70617 
operator !=VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT70618     bool operator!=( VertexInputBindingDivisorDescriptionEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
70619     {
70620       return this->reflect() != rhs.reflect();
70621     }
70622 #endif
70623 
70624   public:
70625     uint32_t binding = {};
70626     uint32_t divisor = {};
70627   };
70628   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT ) ==
70629                               sizeof( VkVertexInputBindingDivisorDescriptionEXT ),
70630                             "struct and wrapper have different size!" );
70631   VULKAN_HPP_STATIC_ASSERT(
70632     std::is_standard_layout<VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT>::value,
70633     "struct wrapper is not a standard layout!" );
70634   VULKAN_HPP_STATIC_ASSERT(
70635     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT>::value,
70636     "VertexInputBindingDivisorDescriptionEXT is not nothrow_move_constructible!" );
70637 
70638   struct PipelineVertexInputDivisorStateCreateInfoEXT
70639   {
70640     using NativeType = VkPipelineVertexInputDivisorStateCreateInfoEXT;
70641 
70642     static const bool                                  allowDuplicate = false;
70643     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
70644       StructureType::ePipelineVertexInputDivisorStateCreateInfoEXT;
70645 
70646 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineVertexInputDivisorStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoEXT70647     VULKAN_HPP_CONSTEXPR PipelineVertexInputDivisorStateCreateInfoEXT(
70648       uint32_t                                                              vertexBindingDivisorCount_ = {},
70649       const VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT * pVertexBindingDivisors_    = {} )
70650       VULKAN_HPP_NOEXCEPT
70651       : vertexBindingDivisorCount( vertexBindingDivisorCount_ )
70652       , pVertexBindingDivisors( pVertexBindingDivisors_ )
70653     {}
70654 
70655     VULKAN_HPP_CONSTEXPR PipelineVertexInputDivisorStateCreateInfoEXT(
70656       PipelineVertexInputDivisorStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70657 
PipelineVertexInputDivisorStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoEXT70658     PipelineVertexInputDivisorStateCreateInfoEXT( VkPipelineVertexInputDivisorStateCreateInfoEXT const & rhs )
70659       VULKAN_HPP_NOEXCEPT
70660       : PipelineVertexInputDivisorStateCreateInfoEXT(
70661           *reinterpret_cast<PipelineVertexInputDivisorStateCreateInfoEXT const *>( &rhs ) )
70662     {}
70663 
70664 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineVertexInputDivisorStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoEXT70665     PipelineVertexInputDivisorStateCreateInfoEXT(
70666       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<
70667         const VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT> const & vertexBindingDivisors_ )
70668       : vertexBindingDivisorCount( static_cast<uint32_t>( vertexBindingDivisors_.size() ) )
70669       , pVertexBindingDivisors( vertexBindingDivisors_.data() )
70670     {}
70671 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
70672 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
70673 
70674     PipelineVertexInputDivisorStateCreateInfoEXT &
70675       operator=( PipelineVertexInputDivisorStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70676 
70677     PipelineVertexInputDivisorStateCreateInfoEXT &
operator =VULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoEXT70678       operator=( VkPipelineVertexInputDivisorStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
70679     {
70680       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoEXT const *>( &rhs );
70681       return *this;
70682     }
70683 
70684 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
70685     VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputDivisorStateCreateInfoEXT &
setPNextVULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoEXT70686                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
70687     {
70688       pNext = pNext_;
70689       return *this;
70690     }
70691 
70692     VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputDivisorStateCreateInfoEXT &
setVertexBindingDivisorCountVULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoEXT70693                             setVertexBindingDivisorCount( uint32_t vertexBindingDivisorCount_ ) VULKAN_HPP_NOEXCEPT
70694     {
70695       vertexBindingDivisorCount = vertexBindingDivisorCount_;
70696       return *this;
70697     }
70698 
setPVertexBindingDivisorsVULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoEXT70699     VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputDivisorStateCreateInfoEXT & setPVertexBindingDivisors(
70700       const VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT * pVertexBindingDivisors_ )
70701       VULKAN_HPP_NOEXCEPT
70702     {
70703       pVertexBindingDivisors = pVertexBindingDivisors_;
70704       return *this;
70705     }
70706 
70707 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setVertexBindingDivisorsVULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoEXT70708     PipelineVertexInputDivisorStateCreateInfoEXT & setVertexBindingDivisors(
70709       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<
70710         const VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT> const & vertexBindingDivisors_ )
70711       VULKAN_HPP_NOEXCEPT
70712     {
70713       vertexBindingDivisorCount = static_cast<uint32_t>( vertexBindingDivisors_.size() );
70714       pVertexBindingDivisors    = vertexBindingDivisors_.data();
70715       return *this;
70716     }
70717 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
70718 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
70719 
operator VkPipelineVertexInputDivisorStateCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoEXT70720     explicit operator VkPipelineVertexInputDivisorStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
70721     {
70722       return *reinterpret_cast<const VkPipelineVertexInputDivisorStateCreateInfoEXT *>( this );
70723     }
70724 
operator VkPipelineVertexInputDivisorStateCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoEXT70725     explicit operator VkPipelineVertexInputDivisorStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
70726     {
70727       return *reinterpret_cast<VkPipelineVertexInputDivisorStateCreateInfoEXT *>( this );
70728     }
70729 
70730 #if 14 <= VULKAN_HPP_CPP_VERSION
70731     auto
70732 #else
70733     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
70734                const void * const &,
70735                uint32_t const &,
70736                const VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT * const &>
70737 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoEXT70738       reflect() const VULKAN_HPP_NOEXCEPT
70739     {
70740       return std::tie( sType, pNext, vertexBindingDivisorCount, pVertexBindingDivisors );
70741     }
70742 
70743 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
70744     auto operator<=>( PipelineVertexInputDivisorStateCreateInfoEXT const & ) const = default;
70745 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoEXT70746     bool operator==( PipelineVertexInputDivisorStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
70747     {
70748       return this->reflect() == rhs.reflect();
70749     }
70750 
operator !=VULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoEXT70751     bool operator!=( PipelineVertexInputDivisorStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
70752     {
70753       return this->reflect() != rhs.reflect();
70754     }
70755 #endif
70756 
70757   public:
70758     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineVertexInputDivisorStateCreateInfoEXT;
70759     const void *                        pNext = {};
70760     uint32_t                            vertexBindingDivisorCount                                = {};
70761     const VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT * pVertexBindingDivisors = {};
70762   };
70763   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoEXT ) ==
70764                               sizeof( VkPipelineVertexInputDivisorStateCreateInfoEXT ),
70765                             "struct and wrapper have different size!" );
70766   VULKAN_HPP_STATIC_ASSERT(
70767     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoEXT>::value,
70768     "struct wrapper is not a standard layout!" );
70769   VULKAN_HPP_STATIC_ASSERT(
70770     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoEXT>::value,
70771     "PipelineVertexInputDivisorStateCreateInfoEXT is not nothrow_move_constructible!" );
70772 
70773   template <>
70774   struct CppType<StructureType, StructureType::ePipelineVertexInputDivisorStateCreateInfoEXT>
70775   {
70776     using Type = PipelineVertexInputDivisorStateCreateInfoEXT;
70777   };
70778 
70779   struct PipelineViewportCoarseSampleOrderStateCreateInfoNV
70780   {
70781     using NativeType = VkPipelineViewportCoarseSampleOrderStateCreateInfoNV;
70782 
70783     static const bool                                  allowDuplicate = false;
70784     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
70785       StructureType::ePipelineViewportCoarseSampleOrderStateCreateInfoNV;
70786 
70787 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineViewportCoarseSampleOrderStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV70788     VULKAN_HPP_CONSTEXPR PipelineViewportCoarseSampleOrderStateCreateInfoNV(
70789       VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV sampleOrderType_ =
70790         VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV::eDefault,
70791       uint32_t                                                customSampleOrderCount_ = {},
70792       const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV * pCustomSampleOrders_    = {} ) VULKAN_HPP_NOEXCEPT
70793       : sampleOrderType( sampleOrderType_ )
70794       , customSampleOrderCount( customSampleOrderCount_ )
70795       , pCustomSampleOrders( pCustomSampleOrders_ )
70796     {}
70797 
70798     VULKAN_HPP_CONSTEXPR PipelineViewportCoarseSampleOrderStateCreateInfoNV(
70799       PipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70800 
PipelineViewportCoarseSampleOrderStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV70801     PipelineViewportCoarseSampleOrderStateCreateInfoNV(
70802       VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
70803       : PipelineViewportCoarseSampleOrderStateCreateInfoNV(
70804           *reinterpret_cast<PipelineViewportCoarseSampleOrderStateCreateInfoNV const *>( &rhs ) )
70805     {}
70806 
70807 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineViewportCoarseSampleOrderStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV70808     PipelineViewportCoarseSampleOrderStateCreateInfoNV(
70809       VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV sampleOrderType_,
70810       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV> const &
70811         customSampleOrders_ )
70812       : sampleOrderType( sampleOrderType_ )
70813       , customSampleOrderCount( static_cast<uint32_t>( customSampleOrders_.size() ) )
70814       , pCustomSampleOrders( customSampleOrders_.data() )
70815     {}
70816 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
70817 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
70818 
70819     PipelineViewportCoarseSampleOrderStateCreateInfoNV &
70820       operator=( PipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70821 
70822     PipelineViewportCoarseSampleOrderStateCreateInfoNV &
operator =VULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV70823       operator=( VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
70824     {
70825       *this =
70826         *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV const *>( &rhs );
70827       return *this;
70828     }
70829 
70830 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
70831     VULKAN_HPP_CONSTEXPR_14 PipelineViewportCoarseSampleOrderStateCreateInfoNV &
setPNextVULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV70832                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
70833     {
70834       pNext = pNext_;
70835       return *this;
70836     }
70837 
70838     VULKAN_HPP_CONSTEXPR_14 PipelineViewportCoarseSampleOrderStateCreateInfoNV &
setSampleOrderTypeVULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV70839       setSampleOrderType( VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV sampleOrderType_ ) VULKAN_HPP_NOEXCEPT
70840     {
70841       sampleOrderType = sampleOrderType_;
70842       return *this;
70843     }
70844 
70845     VULKAN_HPP_CONSTEXPR_14 PipelineViewportCoarseSampleOrderStateCreateInfoNV &
setCustomSampleOrderCountVULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV70846                             setCustomSampleOrderCount( uint32_t customSampleOrderCount_ ) VULKAN_HPP_NOEXCEPT
70847     {
70848       customSampleOrderCount = customSampleOrderCount_;
70849       return *this;
70850     }
70851 
setPCustomSampleOrdersVULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV70852     VULKAN_HPP_CONSTEXPR_14 PipelineViewportCoarseSampleOrderStateCreateInfoNV & setPCustomSampleOrders(
70853       const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV * pCustomSampleOrders_ ) VULKAN_HPP_NOEXCEPT
70854     {
70855       pCustomSampleOrders = pCustomSampleOrders_;
70856       return *this;
70857     }
70858 
70859 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setCustomSampleOrdersVULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV70860     PipelineViewportCoarseSampleOrderStateCreateInfoNV & setCustomSampleOrders(
70861       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV> const &
70862         customSampleOrders_ ) VULKAN_HPP_NOEXCEPT
70863     {
70864       customSampleOrderCount = static_cast<uint32_t>( customSampleOrders_.size() );
70865       pCustomSampleOrders    = customSampleOrders_.data();
70866       return *this;
70867     }
70868 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
70869 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
70870 
operator VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const&VULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV70871     explicit operator VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
70872     {
70873       return *reinterpret_cast<const VkPipelineViewportCoarseSampleOrderStateCreateInfoNV *>( this );
70874     }
70875 
operator VkPipelineViewportCoarseSampleOrderStateCreateInfoNV&VULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV70876     explicit operator VkPipelineViewportCoarseSampleOrderStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT
70877     {
70878       return *reinterpret_cast<VkPipelineViewportCoarseSampleOrderStateCreateInfoNV *>( this );
70879     }
70880 
70881 #if 14 <= VULKAN_HPP_CPP_VERSION
70882     auto
70883 #else
70884     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
70885                const void * const &,
70886                VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV const &,
70887                uint32_t const &,
70888                const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV * const &>
70889 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV70890       reflect() const VULKAN_HPP_NOEXCEPT
70891     {
70892       return std::tie( sType, pNext, sampleOrderType, customSampleOrderCount, pCustomSampleOrders );
70893     }
70894 
70895 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
70896     auto operator<=>( PipelineViewportCoarseSampleOrderStateCreateInfoNV const & ) const = default;
70897 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV70898     bool operator==( PipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
70899     {
70900       return this->reflect() == rhs.reflect();
70901     }
70902 
operator !=VULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV70903     bool operator!=( PipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
70904     {
70905       return this->reflect() != rhs.reflect();
70906     }
70907 #endif
70908 
70909   public:
70910     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineViewportCoarseSampleOrderStateCreateInfoNV;
70911     const void *                        pNext = {};
70912     VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV sampleOrderType =
70913       VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV::eDefault;
70914     uint32_t                                                customSampleOrderCount = {};
70915     const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV * pCustomSampleOrders    = {};
70916   };
70917   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV ) ==
70918                               sizeof( VkPipelineViewportCoarseSampleOrderStateCreateInfoNV ),
70919                             "struct and wrapper have different size!" );
70920   VULKAN_HPP_STATIC_ASSERT(
70921     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV>::value,
70922     "struct wrapper is not a standard layout!" );
70923   VULKAN_HPP_STATIC_ASSERT(
70924     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV>::value,
70925     "PipelineViewportCoarseSampleOrderStateCreateInfoNV is not nothrow_move_constructible!" );
70926 
70927   template <>
70928   struct CppType<StructureType, StructureType::ePipelineViewportCoarseSampleOrderStateCreateInfoNV>
70929   {
70930     using Type = PipelineViewportCoarseSampleOrderStateCreateInfoNV;
70931   };
70932 
70933   struct PipelineViewportDepthClipControlCreateInfoEXT
70934   {
70935     using NativeType = VkPipelineViewportDepthClipControlCreateInfoEXT;
70936 
70937     static const bool                                  allowDuplicate = false;
70938     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
70939       StructureType::ePipelineViewportDepthClipControlCreateInfoEXT;
70940 
70941 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineViewportDepthClipControlCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT70942     VULKAN_HPP_CONSTEXPR PipelineViewportDepthClipControlCreateInfoEXT(
70943       VULKAN_HPP_NAMESPACE::Bool32 negativeOneToOne_ = {} ) VULKAN_HPP_NOEXCEPT : negativeOneToOne( negativeOneToOne_ )
70944     {}
70945 
70946     VULKAN_HPP_CONSTEXPR PipelineViewportDepthClipControlCreateInfoEXT(
70947       PipelineViewportDepthClipControlCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70948 
PipelineViewportDepthClipControlCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT70949     PipelineViewportDepthClipControlCreateInfoEXT( VkPipelineViewportDepthClipControlCreateInfoEXT const & rhs )
70950       VULKAN_HPP_NOEXCEPT
70951       : PipelineViewportDepthClipControlCreateInfoEXT(
70952           *reinterpret_cast<PipelineViewportDepthClipControlCreateInfoEXT const *>( &rhs ) )
70953     {}
70954 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
70955 
70956     PipelineViewportDepthClipControlCreateInfoEXT &
70957       operator=( PipelineViewportDepthClipControlCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70958 
70959     PipelineViewportDepthClipControlCreateInfoEXT &
operator =VULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT70960       operator=( VkPipelineViewportDepthClipControlCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
70961     {
70962       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT const *>( &rhs );
70963       return *this;
70964     }
70965 
70966 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
70967     VULKAN_HPP_CONSTEXPR_14 PipelineViewportDepthClipControlCreateInfoEXT &
setPNextVULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT70968                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
70969     {
70970       pNext = pNext_;
70971       return *this;
70972     }
70973 
70974     VULKAN_HPP_CONSTEXPR_14 PipelineViewportDepthClipControlCreateInfoEXT &
setNegativeOneToOneVULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT70975                             setNegativeOneToOne( VULKAN_HPP_NAMESPACE::Bool32 negativeOneToOne_ ) VULKAN_HPP_NOEXCEPT
70976     {
70977       negativeOneToOne = negativeOneToOne_;
70978       return *this;
70979     }
70980 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
70981 
operator VkPipelineViewportDepthClipControlCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT70982     explicit operator VkPipelineViewportDepthClipControlCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
70983     {
70984       return *reinterpret_cast<const VkPipelineViewportDepthClipControlCreateInfoEXT *>( this );
70985     }
70986 
operator VkPipelineViewportDepthClipControlCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT70987     explicit operator VkPipelineViewportDepthClipControlCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
70988     {
70989       return *reinterpret_cast<VkPipelineViewportDepthClipControlCreateInfoEXT *>( this );
70990     }
70991 
70992 #if 14 <= VULKAN_HPP_CPP_VERSION
70993     auto
70994 #else
70995     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
70996 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT70997       reflect() const VULKAN_HPP_NOEXCEPT
70998     {
70999       return std::tie( sType, pNext, negativeOneToOne );
71000     }
71001 
71002 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
71003     auto operator<=>( PipelineViewportDepthClipControlCreateInfoEXT const & ) const = default;
71004 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT71005     bool operator==( PipelineViewportDepthClipControlCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
71006     {
71007       return this->reflect() == rhs.reflect();
71008     }
71009 
operator !=VULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT71010     bool operator!=( PipelineViewportDepthClipControlCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
71011     {
71012       return this->reflect() != rhs.reflect();
71013     }
71014 #endif
71015 
71016   public:
71017     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineViewportDepthClipControlCreateInfoEXT;
71018     const void *                        pNext = {};
71019     VULKAN_HPP_NAMESPACE::Bool32        negativeOneToOne = {};
71020   };
71021   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT ) ==
71022                               sizeof( VkPipelineViewportDepthClipControlCreateInfoEXT ),
71023                             "struct and wrapper have different size!" );
71024   VULKAN_HPP_STATIC_ASSERT(
71025     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT>::value,
71026     "struct wrapper is not a standard layout!" );
71027   VULKAN_HPP_STATIC_ASSERT(
71028     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT>::value,
71029     "PipelineViewportDepthClipControlCreateInfoEXT is not nothrow_move_constructible!" );
71030 
71031   template <>
71032   struct CppType<StructureType, StructureType::ePipelineViewportDepthClipControlCreateInfoEXT>
71033   {
71034     using Type = PipelineViewportDepthClipControlCreateInfoEXT;
71035   };
71036 
71037   struct PipelineViewportExclusiveScissorStateCreateInfoNV
71038   {
71039     using NativeType = VkPipelineViewportExclusiveScissorStateCreateInfoNV;
71040 
71041     static const bool                                  allowDuplicate = false;
71042     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
71043       StructureType::ePipelineViewportExclusiveScissorStateCreateInfoNV;
71044 
71045 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineViewportExclusiveScissorStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV71046     VULKAN_HPP_CONSTEXPR PipelineViewportExclusiveScissorStateCreateInfoNV(
71047       uint32_t                             exclusiveScissorCount_ = {},
71048       const VULKAN_HPP_NAMESPACE::Rect2D * pExclusiveScissors_    = {} ) VULKAN_HPP_NOEXCEPT
71049       : exclusiveScissorCount( exclusiveScissorCount_ )
71050       , pExclusiveScissors( pExclusiveScissors_ )
71051     {}
71052 
71053     VULKAN_HPP_CONSTEXPR PipelineViewportExclusiveScissorStateCreateInfoNV(
71054       PipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
71055 
PipelineViewportExclusiveScissorStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV71056     PipelineViewportExclusiveScissorStateCreateInfoNV( VkPipelineViewportExclusiveScissorStateCreateInfoNV const & rhs )
71057       VULKAN_HPP_NOEXCEPT
71058       : PipelineViewportExclusiveScissorStateCreateInfoNV(
71059           *reinterpret_cast<PipelineViewportExclusiveScissorStateCreateInfoNV const *>( &rhs ) )
71060     {}
71061 
71062 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineViewportExclusiveScissorStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV71063     PipelineViewportExclusiveScissorStateCreateInfoNV(
71064       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & exclusiveScissors_ )
71065       : exclusiveScissorCount( static_cast<uint32_t>( exclusiveScissors_.size() ) )
71066       , pExclusiveScissors( exclusiveScissors_.data() )
71067     {}
71068 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
71069 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
71070 
71071     PipelineViewportExclusiveScissorStateCreateInfoNV &
71072       operator=( PipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
71073 
71074     PipelineViewportExclusiveScissorStateCreateInfoNV &
operator =VULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV71075       operator=( VkPipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
71076     {
71077       *this =
71078         *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV const *>( &rhs );
71079       return *this;
71080     }
71081 
71082 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
71083     VULKAN_HPP_CONSTEXPR_14 PipelineViewportExclusiveScissorStateCreateInfoNV &
setPNextVULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV71084                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
71085     {
71086       pNext = pNext_;
71087       return *this;
71088     }
71089 
71090     VULKAN_HPP_CONSTEXPR_14 PipelineViewportExclusiveScissorStateCreateInfoNV &
setExclusiveScissorCountVULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV71091                             setExclusiveScissorCount( uint32_t exclusiveScissorCount_ ) VULKAN_HPP_NOEXCEPT
71092     {
71093       exclusiveScissorCount = exclusiveScissorCount_;
71094       return *this;
71095     }
71096 
71097     VULKAN_HPP_CONSTEXPR_14 PipelineViewportExclusiveScissorStateCreateInfoNV &
setPExclusiveScissorsVULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV71098       setPExclusiveScissors( const VULKAN_HPP_NAMESPACE::Rect2D * pExclusiveScissors_ ) VULKAN_HPP_NOEXCEPT
71099     {
71100       pExclusiveScissors = pExclusiveScissors_;
71101       return *this;
71102     }
71103 
71104 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setExclusiveScissorsVULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV71105     PipelineViewportExclusiveScissorStateCreateInfoNV & setExclusiveScissors(
71106       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & exclusiveScissors_ )
71107       VULKAN_HPP_NOEXCEPT
71108     {
71109       exclusiveScissorCount = static_cast<uint32_t>( exclusiveScissors_.size() );
71110       pExclusiveScissors    = exclusiveScissors_.data();
71111       return *this;
71112     }
71113 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
71114 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
71115 
operator VkPipelineViewportExclusiveScissorStateCreateInfoNV const&VULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV71116     explicit operator VkPipelineViewportExclusiveScissorStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
71117     {
71118       return *reinterpret_cast<const VkPipelineViewportExclusiveScissorStateCreateInfoNV *>( this );
71119     }
71120 
operator VkPipelineViewportExclusiveScissorStateCreateInfoNV&VULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV71121     explicit operator VkPipelineViewportExclusiveScissorStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT
71122     {
71123       return *reinterpret_cast<VkPipelineViewportExclusiveScissorStateCreateInfoNV *>( this );
71124     }
71125 
71126 #if 14 <= VULKAN_HPP_CPP_VERSION
71127     auto
71128 #else
71129     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
71130                const void * const &,
71131                uint32_t const &,
71132                const VULKAN_HPP_NAMESPACE::Rect2D * const &>
71133 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV71134       reflect() const VULKAN_HPP_NOEXCEPT
71135     {
71136       return std::tie( sType, pNext, exclusiveScissorCount, pExclusiveScissors );
71137     }
71138 
71139 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
71140     auto operator<=>( PipelineViewportExclusiveScissorStateCreateInfoNV const & ) const = default;
71141 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV71142     bool operator==( PipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
71143     {
71144       return this->reflect() == rhs.reflect();
71145     }
71146 
operator !=VULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV71147     bool operator!=( PipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
71148     {
71149       return this->reflect() != rhs.reflect();
71150     }
71151 #endif
71152 
71153   public:
71154     VULKAN_HPP_NAMESPACE::StructureType  sType = StructureType::ePipelineViewportExclusiveScissorStateCreateInfoNV;
71155     const void *                         pNext = {};
71156     uint32_t                             exclusiveScissorCount = {};
71157     const VULKAN_HPP_NAMESPACE::Rect2D * pExclusiveScissors    = {};
71158   };
71159   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV ) ==
71160                               sizeof( VkPipelineViewportExclusiveScissorStateCreateInfoNV ),
71161                             "struct and wrapper have different size!" );
71162   VULKAN_HPP_STATIC_ASSERT(
71163     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV>::value,
71164     "struct wrapper is not a standard layout!" );
71165   VULKAN_HPP_STATIC_ASSERT(
71166     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV>::value,
71167     "PipelineViewportExclusiveScissorStateCreateInfoNV is not nothrow_move_constructible!" );
71168 
71169   template <>
71170   struct CppType<StructureType, StructureType::ePipelineViewportExclusiveScissorStateCreateInfoNV>
71171   {
71172     using Type = PipelineViewportExclusiveScissorStateCreateInfoNV;
71173   };
71174 
71175   struct ShadingRatePaletteNV
71176   {
71177     using NativeType = VkShadingRatePaletteNV;
71178 
71179 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ShadingRatePaletteNVVULKAN_HPP_NAMESPACE::ShadingRatePaletteNV71180     VULKAN_HPP_CONSTEXPR ShadingRatePaletteNV(
71181       uint32_t                                                shadingRatePaletteEntryCount_ = {},
71182       const VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV * pShadingRatePaletteEntries_   = {} ) VULKAN_HPP_NOEXCEPT
71183       : shadingRatePaletteEntryCount( shadingRatePaletteEntryCount_ )
71184       , pShadingRatePaletteEntries( pShadingRatePaletteEntries_ )
71185     {}
71186 
71187     VULKAN_HPP_CONSTEXPR ShadingRatePaletteNV( ShadingRatePaletteNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
71188 
ShadingRatePaletteNVVULKAN_HPP_NAMESPACE::ShadingRatePaletteNV71189     ShadingRatePaletteNV( VkShadingRatePaletteNV const & rhs ) VULKAN_HPP_NOEXCEPT
71190       : ShadingRatePaletteNV( *reinterpret_cast<ShadingRatePaletteNV const *>( &rhs ) )
71191     {}
71192 
71193 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ShadingRatePaletteNVVULKAN_HPP_NAMESPACE::ShadingRatePaletteNV71194     ShadingRatePaletteNV(
71195       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV> const &
71196         shadingRatePaletteEntries_ )
71197       : shadingRatePaletteEntryCount( static_cast<uint32_t>( shadingRatePaletteEntries_.size() ) )
71198       , pShadingRatePaletteEntries( shadingRatePaletteEntries_.data() )
71199     {}
71200 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
71201 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
71202 
71203     ShadingRatePaletteNV & operator=( ShadingRatePaletteNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
71204 
operator =VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV71205     ShadingRatePaletteNV & operator=( VkShadingRatePaletteNV const & rhs ) VULKAN_HPP_NOEXCEPT
71206     {
71207       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV const *>( &rhs );
71208       return *this;
71209     }
71210 
71211 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
71212     VULKAN_HPP_CONSTEXPR_14 ShadingRatePaletteNV &
setShadingRatePaletteEntryCountVULKAN_HPP_NAMESPACE::ShadingRatePaletteNV71213       setShadingRatePaletteEntryCount( uint32_t shadingRatePaletteEntryCount_ ) VULKAN_HPP_NOEXCEPT
71214     {
71215       shadingRatePaletteEntryCount = shadingRatePaletteEntryCount_;
71216       return *this;
71217     }
71218 
setPShadingRatePaletteEntriesVULKAN_HPP_NAMESPACE::ShadingRatePaletteNV71219     VULKAN_HPP_CONSTEXPR_14 ShadingRatePaletteNV & setPShadingRatePaletteEntries(
71220       const VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV * pShadingRatePaletteEntries_ ) VULKAN_HPP_NOEXCEPT
71221     {
71222       pShadingRatePaletteEntries = pShadingRatePaletteEntries_;
71223       return *this;
71224     }
71225 
71226 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setShadingRatePaletteEntriesVULKAN_HPP_NAMESPACE::ShadingRatePaletteNV71227     ShadingRatePaletteNV & setShadingRatePaletteEntries(
71228       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV> const &
71229         shadingRatePaletteEntries_ ) VULKAN_HPP_NOEXCEPT
71230     {
71231       shadingRatePaletteEntryCount = static_cast<uint32_t>( shadingRatePaletteEntries_.size() );
71232       pShadingRatePaletteEntries   = shadingRatePaletteEntries_.data();
71233       return *this;
71234     }
71235 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
71236 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
71237 
operator VkShadingRatePaletteNV const&VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV71238     explicit operator VkShadingRatePaletteNV const &() const VULKAN_HPP_NOEXCEPT
71239     {
71240       return *reinterpret_cast<const VkShadingRatePaletteNV *>( this );
71241     }
71242 
operator VkShadingRatePaletteNV&VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV71243     explicit operator VkShadingRatePaletteNV &() VULKAN_HPP_NOEXCEPT
71244     {
71245       return *reinterpret_cast<VkShadingRatePaletteNV *>( this );
71246     }
71247 
71248 #if 14 <= VULKAN_HPP_CPP_VERSION
71249     auto
71250 #else
71251     std::tuple<uint32_t const &, const VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV * const &>
71252 #endif
reflectVULKAN_HPP_NAMESPACE::ShadingRatePaletteNV71253       reflect() const VULKAN_HPP_NOEXCEPT
71254     {
71255       return std::tie( shadingRatePaletteEntryCount, pShadingRatePaletteEntries );
71256     }
71257 
71258 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
71259     auto operator<=>( ShadingRatePaletteNV const & ) const = default;
71260 #else
operator ==VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV71261     bool operator==( ShadingRatePaletteNV const & rhs ) const VULKAN_HPP_NOEXCEPT
71262     {
71263       return this->reflect() == rhs.reflect();
71264     }
71265 
operator !=VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV71266     bool operator!=( ShadingRatePaletteNV const & rhs ) const VULKAN_HPP_NOEXCEPT
71267     {
71268       return this->reflect() != rhs.reflect();
71269     }
71270 #endif
71271 
71272   public:
71273     uint32_t                                                shadingRatePaletteEntryCount = {};
71274     const VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV * pShadingRatePaletteEntries   = {};
71275   };
71276   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV ) == sizeof( VkShadingRatePaletteNV ),
71277                             "struct and wrapper have different size!" );
71278   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV>::value,
71279                             "struct wrapper is not a standard layout!" );
71280   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV>::value,
71281                             "ShadingRatePaletteNV is not nothrow_move_constructible!" );
71282 
71283   struct PipelineViewportShadingRateImageStateCreateInfoNV
71284   {
71285     using NativeType = VkPipelineViewportShadingRateImageStateCreateInfoNV;
71286 
71287     static const bool                                  allowDuplicate = false;
71288     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
71289       StructureType::ePipelineViewportShadingRateImageStateCreateInfoNV;
71290 
71291 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineViewportShadingRateImageStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV71292     VULKAN_HPP_CONSTEXPR PipelineViewportShadingRateImageStateCreateInfoNV(
71293       VULKAN_HPP_NAMESPACE::Bool32                       shadingRateImageEnable_ = {},
71294       uint32_t                                           viewportCount_          = {},
71295       const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV * pShadingRatePalettes_   = {} ) VULKAN_HPP_NOEXCEPT
71296       : shadingRateImageEnable( shadingRateImageEnable_ )
71297       , viewportCount( viewportCount_ )
71298       , pShadingRatePalettes( pShadingRatePalettes_ )
71299     {}
71300 
71301     VULKAN_HPP_CONSTEXPR PipelineViewportShadingRateImageStateCreateInfoNV(
71302       PipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
71303 
PipelineViewportShadingRateImageStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV71304     PipelineViewportShadingRateImageStateCreateInfoNV( VkPipelineViewportShadingRateImageStateCreateInfoNV const & rhs )
71305       VULKAN_HPP_NOEXCEPT
71306       : PipelineViewportShadingRateImageStateCreateInfoNV(
71307           *reinterpret_cast<PipelineViewportShadingRateImageStateCreateInfoNV const *>( &rhs ) )
71308     {}
71309 
71310 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineViewportShadingRateImageStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV71311     PipelineViewportShadingRateImageStateCreateInfoNV(
71312       VULKAN_HPP_NAMESPACE::Bool32 shadingRateImageEnable_,
71313       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV> const &
71314         shadingRatePalettes_ )
71315       : shadingRateImageEnable( shadingRateImageEnable_ )
71316       , viewportCount( static_cast<uint32_t>( shadingRatePalettes_.size() ) )
71317       , pShadingRatePalettes( shadingRatePalettes_.data() )
71318     {}
71319 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
71320 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
71321 
71322     PipelineViewportShadingRateImageStateCreateInfoNV &
71323       operator=( PipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
71324 
71325     PipelineViewportShadingRateImageStateCreateInfoNV &
operator =VULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV71326       operator=( VkPipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
71327     {
71328       *this =
71329         *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV const *>( &rhs );
71330       return *this;
71331     }
71332 
71333 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
71334     VULKAN_HPP_CONSTEXPR_14 PipelineViewportShadingRateImageStateCreateInfoNV &
setPNextVULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV71335                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
71336     {
71337       pNext = pNext_;
71338       return *this;
71339     }
71340 
71341     VULKAN_HPP_CONSTEXPR_14 PipelineViewportShadingRateImageStateCreateInfoNV &
setShadingRateImageEnableVULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV71342       setShadingRateImageEnable( VULKAN_HPP_NAMESPACE::Bool32 shadingRateImageEnable_ ) VULKAN_HPP_NOEXCEPT
71343     {
71344       shadingRateImageEnable = shadingRateImageEnable_;
71345       return *this;
71346     }
71347 
71348     VULKAN_HPP_CONSTEXPR_14 PipelineViewportShadingRateImageStateCreateInfoNV &
setViewportCountVULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV71349                             setViewportCount( uint32_t viewportCount_ ) VULKAN_HPP_NOEXCEPT
71350     {
71351       viewportCount = viewportCount_;
71352       return *this;
71353     }
71354 
setPShadingRatePalettesVULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV71355     VULKAN_HPP_CONSTEXPR_14 PipelineViewportShadingRateImageStateCreateInfoNV & setPShadingRatePalettes(
71356       const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV * pShadingRatePalettes_ ) VULKAN_HPP_NOEXCEPT
71357     {
71358       pShadingRatePalettes = pShadingRatePalettes_;
71359       return *this;
71360     }
71361 
71362 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setShadingRatePalettesVULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV71363     PipelineViewportShadingRateImageStateCreateInfoNV & setShadingRatePalettes(
71364       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV> const &
71365         shadingRatePalettes_ ) VULKAN_HPP_NOEXCEPT
71366     {
71367       viewportCount        = static_cast<uint32_t>( shadingRatePalettes_.size() );
71368       pShadingRatePalettes = shadingRatePalettes_.data();
71369       return *this;
71370     }
71371 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
71372 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
71373 
operator VkPipelineViewportShadingRateImageStateCreateInfoNV const&VULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV71374     explicit operator VkPipelineViewportShadingRateImageStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
71375     {
71376       return *reinterpret_cast<const VkPipelineViewportShadingRateImageStateCreateInfoNV *>( this );
71377     }
71378 
operator VkPipelineViewportShadingRateImageStateCreateInfoNV&VULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV71379     explicit operator VkPipelineViewportShadingRateImageStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT
71380     {
71381       return *reinterpret_cast<VkPipelineViewportShadingRateImageStateCreateInfoNV *>( this );
71382     }
71383 
71384 #if 14 <= VULKAN_HPP_CPP_VERSION
71385     auto
71386 #else
71387     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
71388                const void * const &,
71389                VULKAN_HPP_NAMESPACE::Bool32 const &,
71390                uint32_t const &,
71391                const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV * const &>
71392 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV71393       reflect() const VULKAN_HPP_NOEXCEPT
71394     {
71395       return std::tie( sType, pNext, shadingRateImageEnable, viewportCount, pShadingRatePalettes );
71396     }
71397 
71398 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
71399     auto operator<=>( PipelineViewportShadingRateImageStateCreateInfoNV const & ) const = default;
71400 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV71401     bool operator==( PipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
71402     {
71403       return this->reflect() == rhs.reflect();
71404     }
71405 
operator !=VULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV71406     bool operator!=( PipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
71407     {
71408       return this->reflect() != rhs.reflect();
71409     }
71410 #endif
71411 
71412   public:
71413     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineViewportShadingRateImageStateCreateInfoNV;
71414     const void *                        pNext = {};
71415     VULKAN_HPP_NAMESPACE::Bool32        shadingRateImageEnable              = {};
71416     uint32_t                            viewportCount                       = {};
71417     const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV * pShadingRatePalettes = {};
71418   };
71419   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV ) ==
71420                               sizeof( VkPipelineViewportShadingRateImageStateCreateInfoNV ),
71421                             "struct and wrapper have different size!" );
71422   VULKAN_HPP_STATIC_ASSERT(
71423     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV>::value,
71424     "struct wrapper is not a standard layout!" );
71425   VULKAN_HPP_STATIC_ASSERT(
71426     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV>::value,
71427     "PipelineViewportShadingRateImageStateCreateInfoNV is not nothrow_move_constructible!" );
71428 
71429   template <>
71430   struct CppType<StructureType, StructureType::ePipelineViewportShadingRateImageStateCreateInfoNV>
71431   {
71432     using Type = PipelineViewportShadingRateImageStateCreateInfoNV;
71433   };
71434 
71435   struct ViewportSwizzleNV
71436   {
71437     using NativeType = VkViewportSwizzleNV;
71438 
71439 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
71440     VULKAN_HPP_CONSTEXPR
ViewportSwizzleNVVULKAN_HPP_NAMESPACE::ViewportSwizzleNV71441       ViewportSwizzleNV( VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV x_ =
71442                            VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX,
71443                          VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV y_ =
71444                            VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX,
71445                          VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV z_ =
71446                            VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX,
71447                          VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV w_ =
71448                            VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX ) VULKAN_HPP_NOEXCEPT
71449       : x( x_ )
71450       , y( y_ )
71451       , z( z_ )
71452       , w( w_ )
71453     {}
71454 
71455     VULKAN_HPP_CONSTEXPR ViewportSwizzleNV( ViewportSwizzleNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
71456 
ViewportSwizzleNVVULKAN_HPP_NAMESPACE::ViewportSwizzleNV71457     ViewportSwizzleNV( VkViewportSwizzleNV const & rhs ) VULKAN_HPP_NOEXCEPT
71458       : ViewportSwizzleNV( *reinterpret_cast<ViewportSwizzleNV const *>( &rhs ) )
71459     {}
71460 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
71461 
71462     ViewportSwizzleNV & operator=( ViewportSwizzleNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
71463 
operator =VULKAN_HPP_NAMESPACE::ViewportSwizzleNV71464     ViewportSwizzleNV & operator=( VkViewportSwizzleNV const & rhs ) VULKAN_HPP_NOEXCEPT
71465     {
71466       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ViewportSwizzleNV const *>( &rhs );
71467       return *this;
71468     }
71469 
71470 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
71471     VULKAN_HPP_CONSTEXPR_14 ViewportSwizzleNV &
setXVULKAN_HPP_NAMESPACE::ViewportSwizzleNV71472                             setX( VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV x_ ) VULKAN_HPP_NOEXCEPT
71473     {
71474       x = x_;
71475       return *this;
71476     }
71477 
71478     VULKAN_HPP_CONSTEXPR_14 ViewportSwizzleNV &
setYVULKAN_HPP_NAMESPACE::ViewportSwizzleNV71479                             setY( VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV y_ ) VULKAN_HPP_NOEXCEPT
71480     {
71481       y = y_;
71482       return *this;
71483     }
71484 
71485     VULKAN_HPP_CONSTEXPR_14 ViewportSwizzleNV &
setZVULKAN_HPP_NAMESPACE::ViewportSwizzleNV71486                             setZ( VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV z_ ) VULKAN_HPP_NOEXCEPT
71487     {
71488       z = z_;
71489       return *this;
71490     }
71491 
71492     VULKAN_HPP_CONSTEXPR_14 ViewportSwizzleNV &
setWVULKAN_HPP_NAMESPACE::ViewportSwizzleNV71493                             setW( VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV w_ ) VULKAN_HPP_NOEXCEPT
71494     {
71495       w = w_;
71496       return *this;
71497     }
71498 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
71499 
operator VkViewportSwizzleNV const&VULKAN_HPP_NAMESPACE::ViewportSwizzleNV71500     explicit operator VkViewportSwizzleNV const &() const VULKAN_HPP_NOEXCEPT
71501     {
71502       return *reinterpret_cast<const VkViewportSwizzleNV *>( this );
71503     }
71504 
operator VkViewportSwizzleNV&VULKAN_HPP_NAMESPACE::ViewportSwizzleNV71505     explicit operator VkViewportSwizzleNV &() VULKAN_HPP_NOEXCEPT
71506     {
71507       return *reinterpret_cast<VkViewportSwizzleNV *>( this );
71508     }
71509 
71510 #if 14 <= VULKAN_HPP_CPP_VERSION
71511     auto
71512 #else
71513     std::tuple<VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV const &,
71514                VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV const &,
71515                VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV const &,
71516                VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV const &>
71517 #endif
reflectVULKAN_HPP_NAMESPACE::ViewportSwizzleNV71518       reflect() const VULKAN_HPP_NOEXCEPT
71519     {
71520       return std::tie( x, y, z, w );
71521     }
71522 
71523 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
71524     auto operator<=>( ViewportSwizzleNV const & ) const = default;
71525 #else
operator ==VULKAN_HPP_NAMESPACE::ViewportSwizzleNV71526     bool operator==( ViewportSwizzleNV const & rhs ) const VULKAN_HPP_NOEXCEPT
71527     {
71528       return this->reflect() == rhs.reflect();
71529     }
71530 
operator !=VULKAN_HPP_NAMESPACE::ViewportSwizzleNV71531     bool operator!=( ViewportSwizzleNV const & rhs ) const VULKAN_HPP_NOEXCEPT
71532     {
71533       return this->reflect() != rhs.reflect();
71534     }
71535 #endif
71536 
71537   public:
71538     VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV x = VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX;
71539     VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV y = VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX;
71540     VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV z = VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX;
71541     VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV w = VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX;
71542   };
71543   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ViewportSwizzleNV ) == sizeof( VkViewportSwizzleNV ),
71544                             "struct and wrapper have different size!" );
71545   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ViewportSwizzleNV>::value,
71546                             "struct wrapper is not a standard layout!" );
71547   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ViewportSwizzleNV>::value,
71548                             "ViewportSwizzleNV is not nothrow_move_constructible!" );
71549 
71550   struct PipelineViewportSwizzleStateCreateInfoNV
71551   {
71552     using NativeType = VkPipelineViewportSwizzleStateCreateInfoNV;
71553 
71554     static const bool                                  allowDuplicate = false;
71555     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
71556       StructureType::ePipelineViewportSwizzleStateCreateInfoNV;
71557 
71558 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineViewportSwizzleStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV71559     VULKAN_HPP_CONSTEXPR PipelineViewportSwizzleStateCreateInfoNV(
71560       VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateFlagsNV flags_             = {},
71561       uint32_t                                                        viewportCount_     = {},
71562       const VULKAN_HPP_NAMESPACE::ViewportSwizzleNV *                 pViewportSwizzles_ = {} ) VULKAN_HPP_NOEXCEPT
71563       : flags( flags_ )
71564       , viewportCount( viewportCount_ )
71565       , pViewportSwizzles( pViewportSwizzles_ )
71566     {}
71567 
71568     VULKAN_HPP_CONSTEXPR PipelineViewportSwizzleStateCreateInfoNV(
71569       PipelineViewportSwizzleStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
71570 
PipelineViewportSwizzleStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV71571     PipelineViewportSwizzleStateCreateInfoNV( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
71572       VULKAN_HPP_NOEXCEPT
71573       : PipelineViewportSwizzleStateCreateInfoNV(
71574           *reinterpret_cast<PipelineViewportSwizzleStateCreateInfoNV const *>( &rhs ) )
71575     {}
71576 
71577 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineViewportSwizzleStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV71578     PipelineViewportSwizzleStateCreateInfoNV(
71579       VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateFlagsNV flags_,
71580       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ViewportSwizzleNV> const &
71581         viewportSwizzles_ )
71582       : flags( flags_ )
71583       , viewportCount( static_cast<uint32_t>( viewportSwizzles_.size() ) )
71584       , pViewportSwizzles( viewportSwizzles_.data() )
71585     {}
71586 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
71587 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
71588 
71589     PipelineViewportSwizzleStateCreateInfoNV &
71590       operator=( PipelineViewportSwizzleStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
71591 
71592     PipelineViewportSwizzleStateCreateInfoNV &
operator =VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV71593       operator=( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
71594     {
71595       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV const *>( &rhs );
71596       return *this;
71597     }
71598 
71599 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
71600     VULKAN_HPP_CONSTEXPR_14 PipelineViewportSwizzleStateCreateInfoNV &
setPNextVULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV71601                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
71602     {
71603       pNext = pNext_;
71604       return *this;
71605     }
71606 
71607     VULKAN_HPP_CONSTEXPR_14 PipelineViewportSwizzleStateCreateInfoNV &
setFlagsVULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV71608       setFlags( VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT
71609     {
71610       flags = flags_;
71611       return *this;
71612     }
71613 
71614     VULKAN_HPP_CONSTEXPR_14 PipelineViewportSwizzleStateCreateInfoNV &
setViewportCountVULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV71615                             setViewportCount( uint32_t viewportCount_ ) VULKAN_HPP_NOEXCEPT
71616     {
71617       viewportCount = viewportCount_;
71618       return *this;
71619     }
71620 
71621     VULKAN_HPP_CONSTEXPR_14 PipelineViewportSwizzleStateCreateInfoNV &
setPViewportSwizzlesVULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV71622       setPViewportSwizzles( const VULKAN_HPP_NAMESPACE::ViewportSwizzleNV * pViewportSwizzles_ ) VULKAN_HPP_NOEXCEPT
71623     {
71624       pViewportSwizzles = pViewportSwizzles_;
71625       return *this;
71626     }
71627 
71628 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setViewportSwizzlesVULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV71629     PipelineViewportSwizzleStateCreateInfoNV & setViewportSwizzles(
71630       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ViewportSwizzleNV> const &
71631         viewportSwizzles_ ) VULKAN_HPP_NOEXCEPT
71632     {
71633       viewportCount     = static_cast<uint32_t>( viewportSwizzles_.size() );
71634       pViewportSwizzles = viewportSwizzles_.data();
71635       return *this;
71636     }
71637 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
71638 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
71639 
operator VkPipelineViewportSwizzleStateCreateInfoNV const&VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV71640     explicit operator VkPipelineViewportSwizzleStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
71641     {
71642       return *reinterpret_cast<const VkPipelineViewportSwizzleStateCreateInfoNV *>( this );
71643     }
71644 
operator VkPipelineViewportSwizzleStateCreateInfoNV&VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV71645     explicit operator VkPipelineViewportSwizzleStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT
71646     {
71647       return *reinterpret_cast<VkPipelineViewportSwizzleStateCreateInfoNV *>( this );
71648     }
71649 
71650 #if 14 <= VULKAN_HPP_CPP_VERSION
71651     auto
71652 #else
71653     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
71654                const void * const &,
71655                VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateFlagsNV const &,
71656                uint32_t const &,
71657                const VULKAN_HPP_NAMESPACE::ViewportSwizzleNV * const &>
71658 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV71659       reflect() const VULKAN_HPP_NOEXCEPT
71660     {
71661       return std::tie( sType, pNext, flags, viewportCount, pViewportSwizzles );
71662     }
71663 
71664 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
71665     auto operator<=>( PipelineViewportSwizzleStateCreateInfoNV const & ) const = default;
71666 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV71667     bool operator==( PipelineViewportSwizzleStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
71668     {
71669       return this->reflect() == rhs.reflect();
71670     }
71671 
operator !=VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV71672     bool operator!=( PipelineViewportSwizzleStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
71673     {
71674       return this->reflect() != rhs.reflect();
71675     }
71676 #endif
71677 
71678   public:
71679     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineViewportSwizzleStateCreateInfoNV;
71680     const void *                        pNext = {};
71681     VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateFlagsNV flags             = {};
71682     uint32_t                                                        viewportCount     = {};
71683     const VULKAN_HPP_NAMESPACE::ViewportSwizzleNV *                 pViewportSwizzles = {};
71684   };
71685   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV ) ==
71686                               sizeof( VkPipelineViewportSwizzleStateCreateInfoNV ),
71687                             "struct and wrapper have different size!" );
71688   VULKAN_HPP_STATIC_ASSERT(
71689     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV>::value,
71690     "struct wrapper is not a standard layout!" );
71691   VULKAN_HPP_STATIC_ASSERT(
71692     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV>::value,
71693     "PipelineViewportSwizzleStateCreateInfoNV is not nothrow_move_constructible!" );
71694 
71695   template <>
71696   struct CppType<StructureType, StructureType::ePipelineViewportSwizzleStateCreateInfoNV>
71697   {
71698     using Type = PipelineViewportSwizzleStateCreateInfoNV;
71699   };
71700 
71701   struct ViewportWScalingNV
71702   {
71703     using NativeType = VkViewportWScalingNV;
71704 
71705 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ViewportWScalingNVVULKAN_HPP_NAMESPACE::ViewportWScalingNV71706     VULKAN_HPP_CONSTEXPR ViewportWScalingNV( float xcoeff_ = {}, float ycoeff_ = {} ) VULKAN_HPP_NOEXCEPT
71707       : xcoeff( xcoeff_ )
71708       , ycoeff( ycoeff_ )
71709     {}
71710 
71711     VULKAN_HPP_CONSTEXPR ViewportWScalingNV( ViewportWScalingNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
71712 
ViewportWScalingNVVULKAN_HPP_NAMESPACE::ViewportWScalingNV71713     ViewportWScalingNV( VkViewportWScalingNV const & rhs ) VULKAN_HPP_NOEXCEPT
71714       : ViewportWScalingNV( *reinterpret_cast<ViewportWScalingNV const *>( &rhs ) )
71715     {}
71716 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
71717 
71718     ViewportWScalingNV & operator=( ViewportWScalingNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
71719 
operator =VULKAN_HPP_NAMESPACE::ViewportWScalingNV71720     ViewportWScalingNV & operator=( VkViewportWScalingNV const & rhs ) VULKAN_HPP_NOEXCEPT
71721     {
71722       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ViewportWScalingNV const *>( &rhs );
71723       return *this;
71724     }
71725 
71726 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setXcoeffVULKAN_HPP_NAMESPACE::ViewportWScalingNV71727     VULKAN_HPP_CONSTEXPR_14 ViewportWScalingNV & setXcoeff( float xcoeff_ ) VULKAN_HPP_NOEXCEPT
71728     {
71729       xcoeff = xcoeff_;
71730       return *this;
71731     }
71732 
setYcoeffVULKAN_HPP_NAMESPACE::ViewportWScalingNV71733     VULKAN_HPP_CONSTEXPR_14 ViewportWScalingNV & setYcoeff( float ycoeff_ ) VULKAN_HPP_NOEXCEPT
71734     {
71735       ycoeff = ycoeff_;
71736       return *this;
71737     }
71738 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
71739 
operator VkViewportWScalingNV const&VULKAN_HPP_NAMESPACE::ViewportWScalingNV71740     explicit operator VkViewportWScalingNV const &() const VULKAN_HPP_NOEXCEPT
71741     {
71742       return *reinterpret_cast<const VkViewportWScalingNV *>( this );
71743     }
71744 
operator VkViewportWScalingNV&VULKAN_HPP_NAMESPACE::ViewportWScalingNV71745     explicit operator VkViewportWScalingNV &() VULKAN_HPP_NOEXCEPT
71746     {
71747       return *reinterpret_cast<VkViewportWScalingNV *>( this );
71748     }
71749 
71750 #if 14 <= VULKAN_HPP_CPP_VERSION
71751     auto
71752 #else
71753     std::tuple<float const &, float const &>
71754 #endif
reflectVULKAN_HPP_NAMESPACE::ViewportWScalingNV71755       reflect() const VULKAN_HPP_NOEXCEPT
71756     {
71757       return std::tie( xcoeff, ycoeff );
71758     }
71759 
71760 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
71761     auto operator<=>( ViewportWScalingNV const & ) const = default;
71762 #else
operator ==VULKAN_HPP_NAMESPACE::ViewportWScalingNV71763     bool operator==( ViewportWScalingNV const & rhs ) const VULKAN_HPP_NOEXCEPT
71764     {
71765       return this->reflect() == rhs.reflect();
71766     }
71767 
operator !=VULKAN_HPP_NAMESPACE::ViewportWScalingNV71768     bool operator!=( ViewportWScalingNV const & rhs ) const VULKAN_HPP_NOEXCEPT
71769     {
71770       return this->reflect() != rhs.reflect();
71771     }
71772 #endif
71773 
71774   public:
71775     float xcoeff = {};
71776     float ycoeff = {};
71777   };
71778   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ViewportWScalingNV ) == sizeof( VkViewportWScalingNV ),
71779                             "struct and wrapper have different size!" );
71780   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ViewportWScalingNV>::value,
71781                             "struct wrapper is not a standard layout!" );
71782   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ViewportWScalingNV>::value,
71783                             "ViewportWScalingNV is not nothrow_move_constructible!" );
71784 
71785   struct PipelineViewportWScalingStateCreateInfoNV
71786   {
71787     using NativeType = VkPipelineViewportWScalingStateCreateInfoNV;
71788 
71789     static const bool                                  allowDuplicate = false;
71790     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
71791       StructureType::ePipelineViewportWScalingStateCreateInfoNV;
71792 
71793 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineViewportWScalingStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV71794     VULKAN_HPP_CONSTEXPR PipelineViewportWScalingStateCreateInfoNV(
71795       VULKAN_HPP_NAMESPACE::Bool32                     viewportWScalingEnable_ = {},
71796       uint32_t                                         viewportCount_          = {},
71797       const VULKAN_HPP_NAMESPACE::ViewportWScalingNV * pViewportWScalings_     = {} ) VULKAN_HPP_NOEXCEPT
71798       : viewportWScalingEnable( viewportWScalingEnable_ )
71799       , viewportCount( viewportCount_ )
71800       , pViewportWScalings( pViewportWScalings_ )
71801     {}
71802 
71803     VULKAN_HPP_CONSTEXPR PipelineViewportWScalingStateCreateInfoNV(
71804       PipelineViewportWScalingStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
71805 
PipelineViewportWScalingStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV71806     PipelineViewportWScalingStateCreateInfoNV( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
71807       VULKAN_HPP_NOEXCEPT
71808       : PipelineViewportWScalingStateCreateInfoNV(
71809           *reinterpret_cast<PipelineViewportWScalingStateCreateInfoNV const *>( &rhs ) )
71810     {}
71811 
71812 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineViewportWScalingStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV71813     PipelineViewportWScalingStateCreateInfoNV(
71814       VULKAN_HPP_NAMESPACE::Bool32 viewportWScalingEnable_,
71815       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ViewportWScalingNV> const &
71816         viewportWScalings_ )
71817       : viewportWScalingEnable( viewportWScalingEnable_ )
71818       , viewportCount( static_cast<uint32_t>( viewportWScalings_.size() ) )
71819       , pViewportWScalings( viewportWScalings_.data() )
71820     {}
71821 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
71822 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
71823 
71824     PipelineViewportWScalingStateCreateInfoNV &
71825       operator=( PipelineViewportWScalingStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
71826 
71827     PipelineViewportWScalingStateCreateInfoNV &
operator =VULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV71828       operator=( VkPipelineViewportWScalingStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
71829     {
71830       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV const *>( &rhs );
71831       return *this;
71832     }
71833 
71834 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
71835     VULKAN_HPP_CONSTEXPR_14 PipelineViewportWScalingStateCreateInfoNV &
setPNextVULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV71836                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
71837     {
71838       pNext = pNext_;
71839       return *this;
71840     }
71841 
71842     VULKAN_HPP_CONSTEXPR_14 PipelineViewportWScalingStateCreateInfoNV &
setViewportWScalingEnableVULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV71843       setViewportWScalingEnable( VULKAN_HPP_NAMESPACE::Bool32 viewportWScalingEnable_ ) VULKAN_HPP_NOEXCEPT
71844     {
71845       viewportWScalingEnable = viewportWScalingEnable_;
71846       return *this;
71847     }
71848 
71849     VULKAN_HPP_CONSTEXPR_14 PipelineViewportWScalingStateCreateInfoNV &
setViewportCountVULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV71850                             setViewportCount( uint32_t viewportCount_ ) VULKAN_HPP_NOEXCEPT
71851     {
71852       viewportCount = viewportCount_;
71853       return *this;
71854     }
71855 
71856     VULKAN_HPP_CONSTEXPR_14 PipelineViewportWScalingStateCreateInfoNV &
setPViewportWScalingsVULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV71857       setPViewportWScalings( const VULKAN_HPP_NAMESPACE::ViewportWScalingNV * pViewportWScalings_ ) VULKAN_HPP_NOEXCEPT
71858     {
71859       pViewportWScalings = pViewportWScalings_;
71860       return *this;
71861     }
71862 
71863 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setViewportWScalingsVULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV71864     PipelineViewportWScalingStateCreateInfoNV & setViewportWScalings(
71865       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ViewportWScalingNV> const &
71866         viewportWScalings_ ) VULKAN_HPP_NOEXCEPT
71867     {
71868       viewportCount      = static_cast<uint32_t>( viewportWScalings_.size() );
71869       pViewportWScalings = viewportWScalings_.data();
71870       return *this;
71871     }
71872 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
71873 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
71874 
operator VkPipelineViewportWScalingStateCreateInfoNV const&VULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV71875     explicit operator VkPipelineViewportWScalingStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
71876     {
71877       return *reinterpret_cast<const VkPipelineViewportWScalingStateCreateInfoNV *>( this );
71878     }
71879 
operator VkPipelineViewportWScalingStateCreateInfoNV&VULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV71880     explicit operator VkPipelineViewportWScalingStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT
71881     {
71882       return *reinterpret_cast<VkPipelineViewportWScalingStateCreateInfoNV *>( this );
71883     }
71884 
71885 #if 14 <= VULKAN_HPP_CPP_VERSION
71886     auto
71887 #else
71888     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
71889                const void * const &,
71890                VULKAN_HPP_NAMESPACE::Bool32 const &,
71891                uint32_t const &,
71892                const VULKAN_HPP_NAMESPACE::ViewportWScalingNV * const &>
71893 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV71894       reflect() const VULKAN_HPP_NOEXCEPT
71895     {
71896       return std::tie( sType, pNext, viewportWScalingEnable, viewportCount, pViewportWScalings );
71897     }
71898 
71899 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
71900     auto operator<=>( PipelineViewportWScalingStateCreateInfoNV const & ) const = default;
71901 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV71902     bool operator==( PipelineViewportWScalingStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
71903     {
71904       return this->reflect() == rhs.reflect();
71905     }
71906 
operator !=VULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV71907     bool operator!=( PipelineViewportWScalingStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
71908     {
71909       return this->reflect() != rhs.reflect();
71910     }
71911 #endif
71912 
71913   public:
71914     VULKAN_HPP_NAMESPACE::StructureType              sType = StructureType::ePipelineViewportWScalingStateCreateInfoNV;
71915     const void *                                     pNext = {};
71916     VULKAN_HPP_NAMESPACE::Bool32                     viewportWScalingEnable = {};
71917     uint32_t                                         viewportCount          = {};
71918     const VULKAN_HPP_NAMESPACE::ViewportWScalingNV * pViewportWScalings     = {};
71919   };
71920   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV ) ==
71921                               sizeof( VkPipelineViewportWScalingStateCreateInfoNV ),
71922                             "struct and wrapper have different size!" );
71923   VULKAN_HPP_STATIC_ASSERT(
71924     std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV>::value,
71925     "struct wrapper is not a standard layout!" );
71926   VULKAN_HPP_STATIC_ASSERT(
71927     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV>::value,
71928     "PipelineViewportWScalingStateCreateInfoNV is not nothrow_move_constructible!" );
71929 
71930   template <>
71931   struct CppType<StructureType, StructureType::ePipelineViewportWScalingStateCreateInfoNV>
71932   {
71933     using Type = PipelineViewportWScalingStateCreateInfoNV;
71934   };
71935 
71936 #if defined( VK_USE_PLATFORM_GGP )
71937   struct PresentFrameTokenGGP
71938   {
71939     using NativeType = VkPresentFrameTokenGGP;
71940 
71941     static const bool                                  allowDuplicate = false;
71942     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePresentFrameTokenGGP;
71943 
71944 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PresentFrameTokenGGPVULKAN_HPP_NAMESPACE::PresentFrameTokenGGP71945     VULKAN_HPP_CONSTEXPR PresentFrameTokenGGP( GgpFrameToken frameToken_ = {} ) VULKAN_HPP_NOEXCEPT
71946       : frameToken( frameToken_ )
71947     {}
71948 
71949     VULKAN_HPP_CONSTEXPR PresentFrameTokenGGP( PresentFrameTokenGGP const & rhs ) VULKAN_HPP_NOEXCEPT = default;
71950 
PresentFrameTokenGGPVULKAN_HPP_NAMESPACE::PresentFrameTokenGGP71951     PresentFrameTokenGGP( VkPresentFrameTokenGGP const & rhs ) VULKAN_HPP_NOEXCEPT
71952       : PresentFrameTokenGGP( *reinterpret_cast<PresentFrameTokenGGP const *>( &rhs ) )
71953     {}
71954 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
71955 
71956     PresentFrameTokenGGP & operator=( PresentFrameTokenGGP const & rhs ) VULKAN_HPP_NOEXCEPT = default;
71957 
operator =VULKAN_HPP_NAMESPACE::PresentFrameTokenGGP71958     PresentFrameTokenGGP & operator=( VkPresentFrameTokenGGP const & rhs ) VULKAN_HPP_NOEXCEPT
71959     {
71960       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PresentFrameTokenGGP const *>( &rhs );
71961       return *this;
71962     }
71963 
71964 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PresentFrameTokenGGP71965     VULKAN_HPP_CONSTEXPR_14 PresentFrameTokenGGP & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
71966     {
71967       pNext = pNext_;
71968       return *this;
71969     }
71970 
setFrameTokenVULKAN_HPP_NAMESPACE::PresentFrameTokenGGP71971     VULKAN_HPP_CONSTEXPR_14 PresentFrameTokenGGP & setFrameToken( GgpFrameToken frameToken_ ) VULKAN_HPP_NOEXCEPT
71972     {
71973       frameToken = frameToken_;
71974       return *this;
71975     }
71976 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
71977 
operator VkPresentFrameTokenGGP const&VULKAN_HPP_NAMESPACE::PresentFrameTokenGGP71978     explicit operator VkPresentFrameTokenGGP const &() const VULKAN_HPP_NOEXCEPT
71979     {
71980       return *reinterpret_cast<const VkPresentFrameTokenGGP *>( this );
71981     }
71982 
operator VkPresentFrameTokenGGP&VULKAN_HPP_NAMESPACE::PresentFrameTokenGGP71983     explicit operator VkPresentFrameTokenGGP &() VULKAN_HPP_NOEXCEPT
71984     {
71985       return *reinterpret_cast<VkPresentFrameTokenGGP *>( this );
71986     }
71987 
71988 #  if 14 <= VULKAN_HPP_CPP_VERSION
71989     auto
71990 #  else
71991     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, GgpFrameToken const &>
71992 #  endif
reflectVULKAN_HPP_NAMESPACE::PresentFrameTokenGGP71993       reflect() const VULKAN_HPP_NOEXCEPT
71994     {
71995       return std::tie( sType, pNext, frameToken );
71996     }
71997 
71998 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
71999     auto operator<=>( PresentFrameTokenGGP const & ) const = default;
72000 #  else
operator ==VULKAN_HPP_NAMESPACE::PresentFrameTokenGGP72001     bool operator==( PresentFrameTokenGGP const & rhs ) const VULKAN_HPP_NOEXCEPT
72002     {
72003       return this->reflect() == rhs.reflect();
72004     }
72005 
operator !=VULKAN_HPP_NAMESPACE::PresentFrameTokenGGP72006     bool operator!=( PresentFrameTokenGGP const & rhs ) const VULKAN_HPP_NOEXCEPT
72007     {
72008       return this->reflect() != rhs.reflect();
72009     }
72010 #  endif
72011 
72012   public:
72013     VULKAN_HPP_NAMESPACE::StructureType sType      = StructureType::ePresentFrameTokenGGP;
72014     const void *                        pNext      = {};
72015     GgpFrameToken                       frameToken = {};
72016   };
72017   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PresentFrameTokenGGP ) == sizeof( VkPresentFrameTokenGGP ),
72018                             "struct and wrapper have different size!" );
72019   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PresentFrameTokenGGP>::value,
72020                             "struct wrapper is not a standard layout!" );
72021   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PresentFrameTokenGGP>::value,
72022                             "PresentFrameTokenGGP is not nothrow_move_constructible!" );
72023 
72024   template <>
72025   struct CppType<StructureType, StructureType::ePresentFrameTokenGGP>
72026   {
72027     using Type = PresentFrameTokenGGP;
72028   };
72029 #endif /*VK_USE_PLATFORM_GGP*/
72030 
72031   struct PresentIdKHR
72032   {
72033     using NativeType = VkPresentIdKHR;
72034 
72035     static const bool                                  allowDuplicate = false;
72036     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePresentIdKHR;
72037 
72038 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PresentIdKHRVULKAN_HPP_NAMESPACE::PresentIdKHR72039     VULKAN_HPP_CONSTEXPR PresentIdKHR( uint32_t         swapchainCount_ = {},
72040                                        const uint64_t * pPresentIds_    = {} ) VULKAN_HPP_NOEXCEPT
72041       : swapchainCount( swapchainCount_ )
72042       , pPresentIds( pPresentIds_ )
72043     {}
72044 
72045     VULKAN_HPP_CONSTEXPR PresentIdKHR( PresentIdKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72046 
PresentIdKHRVULKAN_HPP_NAMESPACE::PresentIdKHR72047     PresentIdKHR( VkPresentIdKHR const & rhs ) VULKAN_HPP_NOEXCEPT
72048       : PresentIdKHR( *reinterpret_cast<PresentIdKHR const *>( &rhs ) )
72049     {}
72050 
72051 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PresentIdKHRVULKAN_HPP_NAMESPACE::PresentIdKHR72052     PresentIdKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & presentIds_ )
72053       : swapchainCount( static_cast<uint32_t>( presentIds_.size() ) ), pPresentIds( presentIds_.data() )
72054     {}
72055 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
72056 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
72057 
72058     PresentIdKHR & operator=( PresentIdKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72059 
operator =VULKAN_HPP_NAMESPACE::PresentIdKHR72060     PresentIdKHR & operator=( VkPresentIdKHR const & rhs ) VULKAN_HPP_NOEXCEPT
72061     {
72062       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PresentIdKHR const *>( &rhs );
72063       return *this;
72064     }
72065 
72066 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PresentIdKHR72067     VULKAN_HPP_CONSTEXPR_14 PresentIdKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
72068     {
72069       pNext = pNext_;
72070       return *this;
72071     }
72072 
setSwapchainCountVULKAN_HPP_NAMESPACE::PresentIdKHR72073     VULKAN_HPP_CONSTEXPR_14 PresentIdKHR & setSwapchainCount( uint32_t swapchainCount_ ) VULKAN_HPP_NOEXCEPT
72074     {
72075       swapchainCount = swapchainCount_;
72076       return *this;
72077     }
72078 
setPPresentIdsVULKAN_HPP_NAMESPACE::PresentIdKHR72079     VULKAN_HPP_CONSTEXPR_14 PresentIdKHR & setPPresentIds( const uint64_t * pPresentIds_ ) VULKAN_HPP_NOEXCEPT
72080     {
72081       pPresentIds = pPresentIds_;
72082       return *this;
72083     }
72084 
72085 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPresentIdsVULKAN_HPP_NAMESPACE::PresentIdKHR72086     PresentIdKHR & setPresentIds( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & presentIds_ )
72087       VULKAN_HPP_NOEXCEPT
72088     {
72089       swapchainCount = static_cast<uint32_t>( presentIds_.size() );
72090       pPresentIds    = presentIds_.data();
72091       return *this;
72092     }
72093 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
72094 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
72095 
operator VkPresentIdKHR const&VULKAN_HPP_NAMESPACE::PresentIdKHR72096     explicit operator VkPresentIdKHR const &() const VULKAN_HPP_NOEXCEPT
72097     {
72098       return *reinterpret_cast<const VkPresentIdKHR *>( this );
72099     }
72100 
operator VkPresentIdKHR&VULKAN_HPP_NAMESPACE::PresentIdKHR72101     explicit operator VkPresentIdKHR &() VULKAN_HPP_NOEXCEPT
72102     {
72103       return *reinterpret_cast<VkPresentIdKHR *>( this );
72104     }
72105 
72106 #if 14 <= VULKAN_HPP_CPP_VERSION
72107     auto
72108 #else
72109     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
72110                const void * const &,
72111                uint32_t const &,
72112                const uint64_t * const &>
72113 #endif
reflectVULKAN_HPP_NAMESPACE::PresentIdKHR72114       reflect() const VULKAN_HPP_NOEXCEPT
72115     {
72116       return std::tie( sType, pNext, swapchainCount, pPresentIds );
72117     }
72118 
72119 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
72120     auto operator<=>( PresentIdKHR const & ) const = default;
72121 #else
operator ==VULKAN_HPP_NAMESPACE::PresentIdKHR72122     bool operator==( PresentIdKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
72123     {
72124       return this->reflect() == rhs.reflect();
72125     }
72126 
operator !=VULKAN_HPP_NAMESPACE::PresentIdKHR72127     bool operator!=( PresentIdKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
72128     {
72129       return this->reflect() != rhs.reflect();
72130     }
72131 #endif
72132 
72133   public:
72134     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::ePresentIdKHR;
72135     const void *                        pNext          = {};
72136     uint32_t                            swapchainCount = {};
72137     const uint64_t *                    pPresentIds    = {};
72138   };
72139   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PresentIdKHR ) == sizeof( VkPresentIdKHR ),
72140                             "struct and wrapper have different size!" );
72141   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PresentIdKHR>::value,
72142                             "struct wrapper is not a standard layout!" );
72143   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PresentIdKHR>::value,
72144                             "PresentIdKHR is not nothrow_move_constructible!" );
72145 
72146   template <>
72147   struct CppType<StructureType, StructureType::ePresentIdKHR>
72148   {
72149     using Type = PresentIdKHR;
72150   };
72151 
72152   struct PresentInfoKHR
72153   {
72154     using NativeType = VkPresentInfoKHR;
72155 
72156     static const bool                                  allowDuplicate = false;
72157     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePresentInfoKHR;
72158 
72159 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PresentInfoKHRVULKAN_HPP_NAMESPACE::PresentInfoKHR72160     VULKAN_HPP_CONSTEXPR PresentInfoKHR( uint32_t                                   waitSemaphoreCount_ = {},
72161                                          const VULKAN_HPP_NAMESPACE::Semaphore *    pWaitSemaphores_    = {},
72162                                          uint32_t                                   swapchainCount_     = {},
72163                                          const VULKAN_HPP_NAMESPACE::SwapchainKHR * pSwapchains_        = {},
72164                                          const uint32_t *                           pImageIndices_      = {},
72165                                          VULKAN_HPP_NAMESPACE::Result *             pResults_ = {} ) VULKAN_HPP_NOEXCEPT
72166       : waitSemaphoreCount( waitSemaphoreCount_ )
72167       , pWaitSemaphores( pWaitSemaphores_ )
72168       , swapchainCount( swapchainCount_ )
72169       , pSwapchains( pSwapchains_ )
72170       , pImageIndices( pImageIndices_ )
72171       , pResults( pResults_ )
72172     {}
72173 
72174     VULKAN_HPP_CONSTEXPR PresentInfoKHR( PresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72175 
PresentInfoKHRVULKAN_HPP_NAMESPACE::PresentInfoKHR72176     PresentInfoKHR( VkPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
72177       : PresentInfoKHR( *reinterpret_cast<PresentInfoKHR const *>( &rhs ) )
72178     {}
72179 
72180 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PresentInfoKHRVULKAN_HPP_NAMESPACE::PresentInfoKHR72181     PresentInfoKHR(
72182       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const &    waitSemaphores_,
72183       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SwapchainKHR> const & swapchains_ = {},
72184       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const &               imageIndices_           = {},
72185       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::Result> const & results_                = {} )
72186       : waitSemaphoreCount( static_cast<uint32_t>( waitSemaphores_.size() ) )
72187       , pWaitSemaphores( waitSemaphores_.data() )
72188       , swapchainCount( static_cast<uint32_t>( swapchains_.size() ) )
72189       , pSwapchains( swapchains_.data() )
72190       , pImageIndices( imageIndices_.data() )
72191       , pResults( results_.data() )
72192     {
72193 #    ifdef VULKAN_HPP_NO_EXCEPTIONS
72194       VULKAN_HPP_ASSERT( swapchains_.size() == imageIndices_.size() );
72195       VULKAN_HPP_ASSERT( results_.empty() || ( swapchains_.size() == results_.size() ) );
72196       VULKAN_HPP_ASSERT( results_.empty() || ( imageIndices_.size() == results_.size() ) );
72197 #    else
72198       if ( swapchains_.size() != imageIndices_.size() )
72199       {
72200         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
72201                           "::PresentInfoKHR::PresentInfoKHR: swapchains_.size() != imageIndices_.size()" );
72202       }
72203       if ( !results_.empty() && ( swapchains_.size() != results_.size() ) )
72204       {
72205         throw LogicError(
72206           VULKAN_HPP_NAMESPACE_STRING
72207           "::PresentInfoKHR::PresentInfoKHR: !results_.empty() && ( swapchains_.size() != results_.size() )" );
72208       }
72209       if ( !results_.empty() && ( imageIndices_.size() != results_.size() ) )
72210       {
72211         throw LogicError(
72212           VULKAN_HPP_NAMESPACE_STRING
72213           "::PresentInfoKHR::PresentInfoKHR: !results_.empty() && ( imageIndices_.size() != results_.size() )" );
72214       }
72215 #    endif /*VULKAN_HPP_NO_EXCEPTIONS*/
72216     }
72217 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
72218 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
72219 
72220     PresentInfoKHR & operator=( PresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72221 
operator =VULKAN_HPP_NAMESPACE::PresentInfoKHR72222     PresentInfoKHR & operator=( VkPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
72223     {
72224       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PresentInfoKHR const *>( &rhs );
72225       return *this;
72226     }
72227 
72228 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PresentInfoKHR72229     VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
72230     {
72231       pNext = pNext_;
72232       return *this;
72233     }
72234 
setWaitSemaphoreCountVULKAN_HPP_NAMESPACE::PresentInfoKHR72235     VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT
72236     {
72237       waitSemaphoreCount = waitSemaphoreCount_;
72238       return *this;
72239     }
72240 
72241     VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR &
setPWaitSemaphoresVULKAN_HPP_NAMESPACE::PresentInfoKHR72242       setPWaitSemaphores( const VULKAN_HPP_NAMESPACE::Semaphore * pWaitSemaphores_ ) VULKAN_HPP_NOEXCEPT
72243     {
72244       pWaitSemaphores = pWaitSemaphores_;
72245       return *this;
72246     }
72247 
72248 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setWaitSemaphoresVULKAN_HPP_NAMESPACE::PresentInfoKHR72249     PresentInfoKHR & setWaitSemaphores(
72250       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const & waitSemaphores_ )
72251       VULKAN_HPP_NOEXCEPT
72252     {
72253       waitSemaphoreCount = static_cast<uint32_t>( waitSemaphores_.size() );
72254       pWaitSemaphores    = waitSemaphores_.data();
72255       return *this;
72256     }
72257 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
72258 
setSwapchainCountVULKAN_HPP_NAMESPACE::PresentInfoKHR72259     VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setSwapchainCount( uint32_t swapchainCount_ ) VULKAN_HPP_NOEXCEPT
72260     {
72261       swapchainCount = swapchainCount_;
72262       return *this;
72263     }
72264 
72265     VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR &
setPSwapchainsVULKAN_HPP_NAMESPACE::PresentInfoKHR72266       setPSwapchains( const VULKAN_HPP_NAMESPACE::SwapchainKHR * pSwapchains_ ) VULKAN_HPP_NOEXCEPT
72267     {
72268       pSwapchains = pSwapchains_;
72269       return *this;
72270     }
72271 
72272 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSwapchainsVULKAN_HPP_NAMESPACE::PresentInfoKHR72273     PresentInfoKHR & setSwapchains(
72274       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SwapchainKHR> const & swapchains_ )
72275       VULKAN_HPP_NOEXCEPT
72276     {
72277       swapchainCount = static_cast<uint32_t>( swapchains_.size() );
72278       pSwapchains    = swapchains_.data();
72279       return *this;
72280     }
72281 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
72282 
setPImageIndicesVULKAN_HPP_NAMESPACE::PresentInfoKHR72283     VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setPImageIndices( const uint32_t * pImageIndices_ ) VULKAN_HPP_NOEXCEPT
72284     {
72285       pImageIndices = pImageIndices_;
72286       return *this;
72287     }
72288 
72289 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setImageIndicesVULKAN_HPP_NAMESPACE::PresentInfoKHR72290     PresentInfoKHR & setImageIndices(
72291       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & imageIndices_ ) VULKAN_HPP_NOEXCEPT
72292     {
72293       swapchainCount = static_cast<uint32_t>( imageIndices_.size() );
72294       pImageIndices  = imageIndices_.data();
72295       return *this;
72296     }
72297 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
72298 
setPResultsVULKAN_HPP_NAMESPACE::PresentInfoKHR72299     VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setPResults( VULKAN_HPP_NAMESPACE::Result * pResults_ ) VULKAN_HPP_NOEXCEPT
72300     {
72301       pResults = pResults_;
72302       return *this;
72303     }
72304 
72305 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setResultsVULKAN_HPP_NAMESPACE::PresentInfoKHR72306     PresentInfoKHR & setResults(
72307       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::Result> const & results_ ) VULKAN_HPP_NOEXCEPT
72308     {
72309       swapchainCount = static_cast<uint32_t>( results_.size() );
72310       pResults       = results_.data();
72311       return *this;
72312     }
72313 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
72314 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
72315 
operator VkPresentInfoKHR const&VULKAN_HPP_NAMESPACE::PresentInfoKHR72316     explicit operator VkPresentInfoKHR const &() const VULKAN_HPP_NOEXCEPT
72317     {
72318       return *reinterpret_cast<const VkPresentInfoKHR *>( this );
72319     }
72320 
operator VkPresentInfoKHR&VULKAN_HPP_NAMESPACE::PresentInfoKHR72321     explicit operator VkPresentInfoKHR &() VULKAN_HPP_NOEXCEPT
72322     {
72323       return *reinterpret_cast<VkPresentInfoKHR *>( this );
72324     }
72325 
72326 #if 14 <= VULKAN_HPP_CPP_VERSION
72327     auto
72328 #else
72329     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
72330                const void * const &,
72331                uint32_t const &,
72332                const VULKAN_HPP_NAMESPACE::Semaphore * const &,
72333                uint32_t const &,
72334                const VULKAN_HPP_NAMESPACE::SwapchainKHR * const &,
72335                const uint32_t * const &,
72336                VULKAN_HPP_NAMESPACE::Result * const &>
72337 #endif
reflectVULKAN_HPP_NAMESPACE::PresentInfoKHR72338       reflect() const VULKAN_HPP_NOEXCEPT
72339     {
72340       return std::tie(
72341         sType, pNext, waitSemaphoreCount, pWaitSemaphores, swapchainCount, pSwapchains, pImageIndices, pResults );
72342     }
72343 
72344 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
72345     auto operator<=>( PresentInfoKHR const & ) const = default;
72346 #else
operator ==VULKAN_HPP_NAMESPACE::PresentInfoKHR72347     bool operator==( PresentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
72348     {
72349       return this->reflect() == rhs.reflect();
72350     }
72351 
operator !=VULKAN_HPP_NAMESPACE::PresentInfoKHR72352     bool operator!=( PresentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
72353     {
72354       return this->reflect() != rhs.reflect();
72355     }
72356 #endif
72357 
72358   public:
72359     VULKAN_HPP_NAMESPACE::StructureType        sType              = StructureType::ePresentInfoKHR;
72360     const void *                               pNext              = {};
72361     uint32_t                                   waitSemaphoreCount = {};
72362     const VULKAN_HPP_NAMESPACE::Semaphore *    pWaitSemaphores    = {};
72363     uint32_t                                   swapchainCount     = {};
72364     const VULKAN_HPP_NAMESPACE::SwapchainKHR * pSwapchains        = {};
72365     const uint32_t *                           pImageIndices      = {};
72366     VULKAN_HPP_NAMESPACE::Result *             pResults           = {};
72367   };
72368   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PresentInfoKHR ) == sizeof( VkPresentInfoKHR ),
72369                             "struct and wrapper have different size!" );
72370   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PresentInfoKHR>::value,
72371                             "struct wrapper is not a standard layout!" );
72372   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PresentInfoKHR>::value,
72373                             "PresentInfoKHR is not nothrow_move_constructible!" );
72374 
72375   template <>
72376   struct CppType<StructureType, StructureType::ePresentInfoKHR>
72377   {
72378     using Type = PresentInfoKHR;
72379   };
72380 
72381   struct RectLayerKHR
72382   {
72383     using NativeType = VkRectLayerKHR;
72384 
72385 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RectLayerKHRVULKAN_HPP_NAMESPACE::RectLayerKHR72386     VULKAN_HPP_CONSTEXPR RectLayerKHR( VULKAN_HPP_NAMESPACE::Offset2D offset_ = {},
72387                                        VULKAN_HPP_NAMESPACE::Extent2D extent_ = {},
72388                                        uint32_t                       layer_  = {} ) VULKAN_HPP_NOEXCEPT
72389       : offset( offset_ )
72390       , extent( extent_ )
72391       , layer( layer_ )
72392     {}
72393 
72394     VULKAN_HPP_CONSTEXPR RectLayerKHR( RectLayerKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72395 
RectLayerKHRVULKAN_HPP_NAMESPACE::RectLayerKHR72396     RectLayerKHR( VkRectLayerKHR const & rhs ) VULKAN_HPP_NOEXCEPT
72397       : RectLayerKHR( *reinterpret_cast<RectLayerKHR const *>( &rhs ) )
72398     {}
72399 
RectLayerKHRVULKAN_HPP_NAMESPACE::RectLayerKHR72400     explicit RectLayerKHR( Rect2D const & rect2D, uint32_t layer_ = {} )
72401       : offset( rect2D.offset ), extent( rect2D.extent ), layer( layer_ )
72402     {}
72403 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
72404 
72405     RectLayerKHR & operator=( RectLayerKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72406 
operator =VULKAN_HPP_NAMESPACE::RectLayerKHR72407     RectLayerKHR & operator=( VkRectLayerKHR const & rhs ) VULKAN_HPP_NOEXCEPT
72408     {
72409       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RectLayerKHR const *>( &rhs );
72410       return *this;
72411     }
72412 
72413 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
72414     VULKAN_HPP_CONSTEXPR_14 RectLayerKHR &
setOffsetVULKAN_HPP_NAMESPACE::RectLayerKHR72415                             setOffset( VULKAN_HPP_NAMESPACE::Offset2D const & offset_ ) VULKAN_HPP_NOEXCEPT
72416     {
72417       offset = offset_;
72418       return *this;
72419     }
72420 
72421     VULKAN_HPP_CONSTEXPR_14 RectLayerKHR &
setExtentVULKAN_HPP_NAMESPACE::RectLayerKHR72422                             setExtent( VULKAN_HPP_NAMESPACE::Extent2D const & extent_ ) VULKAN_HPP_NOEXCEPT
72423     {
72424       extent = extent_;
72425       return *this;
72426     }
72427 
setLayerVULKAN_HPP_NAMESPACE::RectLayerKHR72428     VULKAN_HPP_CONSTEXPR_14 RectLayerKHR & setLayer( uint32_t layer_ ) VULKAN_HPP_NOEXCEPT
72429     {
72430       layer = layer_;
72431       return *this;
72432     }
72433 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
72434 
operator VkRectLayerKHR const&VULKAN_HPP_NAMESPACE::RectLayerKHR72435     explicit operator VkRectLayerKHR const &() const VULKAN_HPP_NOEXCEPT
72436     {
72437       return *reinterpret_cast<const VkRectLayerKHR *>( this );
72438     }
72439 
operator VkRectLayerKHR&VULKAN_HPP_NAMESPACE::RectLayerKHR72440     explicit operator VkRectLayerKHR &() VULKAN_HPP_NOEXCEPT
72441     {
72442       return *reinterpret_cast<VkRectLayerKHR *>( this );
72443     }
72444 
72445 #if 14 <= VULKAN_HPP_CPP_VERSION
72446     auto
72447 #else
72448     std::tuple<VULKAN_HPP_NAMESPACE::Offset2D const &, VULKAN_HPP_NAMESPACE::Extent2D const &, uint32_t const &>
72449 #endif
reflectVULKAN_HPP_NAMESPACE::RectLayerKHR72450       reflect() const VULKAN_HPP_NOEXCEPT
72451     {
72452       return std::tie( offset, extent, layer );
72453     }
72454 
72455 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
72456     auto operator<=>( RectLayerKHR const & ) const = default;
72457 #else
operator ==VULKAN_HPP_NAMESPACE::RectLayerKHR72458     bool operator==( RectLayerKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
72459     {
72460       return this->reflect() == rhs.reflect();
72461     }
72462 
operator !=VULKAN_HPP_NAMESPACE::RectLayerKHR72463     bool operator!=( RectLayerKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
72464     {
72465       return this->reflect() != rhs.reflect();
72466     }
72467 #endif
72468 
72469   public:
72470     VULKAN_HPP_NAMESPACE::Offset2D offset = {};
72471     VULKAN_HPP_NAMESPACE::Extent2D extent = {};
72472     uint32_t                       layer  = {};
72473   };
72474   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RectLayerKHR ) == sizeof( VkRectLayerKHR ),
72475                             "struct and wrapper have different size!" );
72476   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::RectLayerKHR>::value,
72477                             "struct wrapper is not a standard layout!" );
72478   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::RectLayerKHR>::value,
72479                             "RectLayerKHR is not nothrow_move_constructible!" );
72480 
72481   struct PresentRegionKHR
72482   {
72483     using NativeType = VkPresentRegionKHR;
72484 
72485 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
72486     VULKAN_HPP_CONSTEXPR
PresentRegionKHRVULKAN_HPP_NAMESPACE::PresentRegionKHR72487       PresentRegionKHR( uint32_t                                   rectangleCount_ = {},
72488                         const VULKAN_HPP_NAMESPACE::RectLayerKHR * pRectangles_    = {} ) VULKAN_HPP_NOEXCEPT
72489       : rectangleCount( rectangleCount_ )
72490       , pRectangles( pRectangles_ )
72491     {}
72492 
72493     VULKAN_HPP_CONSTEXPR PresentRegionKHR( PresentRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72494 
PresentRegionKHRVULKAN_HPP_NAMESPACE::PresentRegionKHR72495     PresentRegionKHR( VkPresentRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT
72496       : PresentRegionKHR( *reinterpret_cast<PresentRegionKHR const *>( &rhs ) )
72497     {}
72498 
72499 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PresentRegionKHRVULKAN_HPP_NAMESPACE::PresentRegionKHR72500     PresentRegionKHR(
72501       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::RectLayerKHR> const & rectangles_ )
72502       : rectangleCount( static_cast<uint32_t>( rectangles_.size() ) ), pRectangles( rectangles_.data() )
72503     {}
72504 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
72505 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
72506 
72507     PresentRegionKHR & operator=( PresentRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72508 
operator =VULKAN_HPP_NAMESPACE::PresentRegionKHR72509     PresentRegionKHR & operator=( VkPresentRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT
72510     {
72511       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PresentRegionKHR const *>( &rhs );
72512       return *this;
72513     }
72514 
72515 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setRectangleCountVULKAN_HPP_NAMESPACE::PresentRegionKHR72516     VULKAN_HPP_CONSTEXPR_14 PresentRegionKHR & setRectangleCount( uint32_t rectangleCount_ ) VULKAN_HPP_NOEXCEPT
72517     {
72518       rectangleCount = rectangleCount_;
72519       return *this;
72520     }
72521 
72522     VULKAN_HPP_CONSTEXPR_14 PresentRegionKHR &
setPRectanglesVULKAN_HPP_NAMESPACE::PresentRegionKHR72523       setPRectangles( const VULKAN_HPP_NAMESPACE::RectLayerKHR * pRectangles_ ) VULKAN_HPP_NOEXCEPT
72524     {
72525       pRectangles = pRectangles_;
72526       return *this;
72527     }
72528 
72529 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setRectanglesVULKAN_HPP_NAMESPACE::PresentRegionKHR72530     PresentRegionKHR & setRectangles(
72531       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::RectLayerKHR> const & rectangles_ )
72532       VULKAN_HPP_NOEXCEPT
72533     {
72534       rectangleCount = static_cast<uint32_t>( rectangles_.size() );
72535       pRectangles    = rectangles_.data();
72536       return *this;
72537     }
72538 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
72539 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
72540 
operator VkPresentRegionKHR const&VULKAN_HPP_NAMESPACE::PresentRegionKHR72541     explicit operator VkPresentRegionKHR const &() const VULKAN_HPP_NOEXCEPT
72542     {
72543       return *reinterpret_cast<const VkPresentRegionKHR *>( this );
72544     }
72545 
operator VkPresentRegionKHR&VULKAN_HPP_NAMESPACE::PresentRegionKHR72546     explicit operator VkPresentRegionKHR &() VULKAN_HPP_NOEXCEPT
72547     {
72548       return *reinterpret_cast<VkPresentRegionKHR *>( this );
72549     }
72550 
72551 #if 14 <= VULKAN_HPP_CPP_VERSION
72552     auto
72553 #else
72554     std::tuple<uint32_t const &, const VULKAN_HPP_NAMESPACE::RectLayerKHR * const &>
72555 #endif
reflectVULKAN_HPP_NAMESPACE::PresentRegionKHR72556       reflect() const VULKAN_HPP_NOEXCEPT
72557     {
72558       return std::tie( rectangleCount, pRectangles );
72559     }
72560 
72561 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
72562     auto operator<=>( PresentRegionKHR const & ) const = default;
72563 #else
operator ==VULKAN_HPP_NAMESPACE::PresentRegionKHR72564     bool operator==( PresentRegionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
72565     {
72566       return this->reflect() == rhs.reflect();
72567     }
72568 
operator !=VULKAN_HPP_NAMESPACE::PresentRegionKHR72569     bool operator!=( PresentRegionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
72570     {
72571       return this->reflect() != rhs.reflect();
72572     }
72573 #endif
72574 
72575   public:
72576     uint32_t                                   rectangleCount = {};
72577     const VULKAN_HPP_NAMESPACE::RectLayerKHR * pRectangles    = {};
72578   };
72579   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PresentRegionKHR ) == sizeof( VkPresentRegionKHR ),
72580                             "struct and wrapper have different size!" );
72581   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PresentRegionKHR>::value,
72582                             "struct wrapper is not a standard layout!" );
72583   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PresentRegionKHR>::value,
72584                             "PresentRegionKHR is not nothrow_move_constructible!" );
72585 
72586   struct PresentRegionsKHR
72587   {
72588     using NativeType = VkPresentRegionsKHR;
72589 
72590     static const bool                                  allowDuplicate = false;
72591     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePresentRegionsKHR;
72592 
72593 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
72594     VULKAN_HPP_CONSTEXPR
PresentRegionsKHRVULKAN_HPP_NAMESPACE::PresentRegionsKHR72595       PresentRegionsKHR( uint32_t                                       swapchainCount_ = {},
72596                          const VULKAN_HPP_NAMESPACE::PresentRegionKHR * pRegions_       = {} ) VULKAN_HPP_NOEXCEPT
72597       : swapchainCount( swapchainCount_ )
72598       , pRegions( pRegions_ )
72599     {}
72600 
72601     VULKAN_HPP_CONSTEXPR PresentRegionsKHR( PresentRegionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72602 
PresentRegionsKHRVULKAN_HPP_NAMESPACE::PresentRegionsKHR72603     PresentRegionsKHR( VkPresentRegionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT
72604       : PresentRegionsKHR( *reinterpret_cast<PresentRegionsKHR const *>( &rhs ) )
72605     {}
72606 
72607 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PresentRegionsKHRVULKAN_HPP_NAMESPACE::PresentRegionsKHR72608     PresentRegionsKHR(
72609       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PresentRegionKHR> const & regions_ )
72610       : swapchainCount( static_cast<uint32_t>( regions_.size() ) ), pRegions( regions_.data() )
72611     {}
72612 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
72613 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
72614 
72615     PresentRegionsKHR & operator=( PresentRegionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72616 
operator =VULKAN_HPP_NAMESPACE::PresentRegionsKHR72617     PresentRegionsKHR & operator=( VkPresentRegionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT
72618     {
72619       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PresentRegionsKHR const *>( &rhs );
72620       return *this;
72621     }
72622 
72623 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PresentRegionsKHR72624     VULKAN_HPP_CONSTEXPR_14 PresentRegionsKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
72625     {
72626       pNext = pNext_;
72627       return *this;
72628     }
72629 
setSwapchainCountVULKAN_HPP_NAMESPACE::PresentRegionsKHR72630     VULKAN_HPP_CONSTEXPR_14 PresentRegionsKHR & setSwapchainCount( uint32_t swapchainCount_ ) VULKAN_HPP_NOEXCEPT
72631     {
72632       swapchainCount = swapchainCount_;
72633       return *this;
72634     }
72635 
72636     VULKAN_HPP_CONSTEXPR_14 PresentRegionsKHR &
setPRegionsVULKAN_HPP_NAMESPACE::PresentRegionsKHR72637                             setPRegions( const VULKAN_HPP_NAMESPACE::PresentRegionKHR * pRegions_ ) VULKAN_HPP_NOEXCEPT
72638     {
72639       pRegions = pRegions_;
72640       return *this;
72641     }
72642 
72643 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setRegionsVULKAN_HPP_NAMESPACE::PresentRegionsKHR72644     PresentRegionsKHR & setRegions(
72645       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PresentRegionKHR> const & regions_ )
72646       VULKAN_HPP_NOEXCEPT
72647     {
72648       swapchainCount = static_cast<uint32_t>( regions_.size() );
72649       pRegions       = regions_.data();
72650       return *this;
72651     }
72652 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
72653 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
72654 
operator VkPresentRegionsKHR const&VULKAN_HPP_NAMESPACE::PresentRegionsKHR72655     explicit operator VkPresentRegionsKHR const &() const VULKAN_HPP_NOEXCEPT
72656     {
72657       return *reinterpret_cast<const VkPresentRegionsKHR *>( this );
72658     }
72659 
operator VkPresentRegionsKHR&VULKAN_HPP_NAMESPACE::PresentRegionsKHR72660     explicit operator VkPresentRegionsKHR &() VULKAN_HPP_NOEXCEPT
72661     {
72662       return *reinterpret_cast<VkPresentRegionsKHR *>( this );
72663     }
72664 
72665 #if 14 <= VULKAN_HPP_CPP_VERSION
72666     auto
72667 #else
72668     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
72669                const void * const &,
72670                uint32_t const &,
72671                const VULKAN_HPP_NAMESPACE::PresentRegionKHR * const &>
72672 #endif
reflectVULKAN_HPP_NAMESPACE::PresentRegionsKHR72673       reflect() const VULKAN_HPP_NOEXCEPT
72674     {
72675       return std::tie( sType, pNext, swapchainCount, pRegions );
72676     }
72677 
72678 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
72679     auto operator<=>( PresentRegionsKHR const & ) const = default;
72680 #else
operator ==VULKAN_HPP_NAMESPACE::PresentRegionsKHR72681     bool operator==( PresentRegionsKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
72682     {
72683       return this->reflect() == rhs.reflect();
72684     }
72685 
operator !=VULKAN_HPP_NAMESPACE::PresentRegionsKHR72686     bool operator!=( PresentRegionsKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
72687     {
72688       return this->reflect() != rhs.reflect();
72689     }
72690 #endif
72691 
72692   public:
72693     VULKAN_HPP_NAMESPACE::StructureType            sType          = StructureType::ePresentRegionsKHR;
72694     const void *                                   pNext          = {};
72695     uint32_t                                       swapchainCount = {};
72696     const VULKAN_HPP_NAMESPACE::PresentRegionKHR * pRegions       = {};
72697   };
72698   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PresentRegionsKHR ) == sizeof( VkPresentRegionsKHR ),
72699                             "struct and wrapper have different size!" );
72700   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PresentRegionsKHR>::value,
72701                             "struct wrapper is not a standard layout!" );
72702   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PresentRegionsKHR>::value,
72703                             "PresentRegionsKHR is not nothrow_move_constructible!" );
72704 
72705   template <>
72706   struct CppType<StructureType, StructureType::ePresentRegionsKHR>
72707   {
72708     using Type = PresentRegionsKHR;
72709   };
72710 
72711   struct PresentTimeGOOGLE
72712   {
72713     using NativeType = VkPresentTimeGOOGLE;
72714 
72715 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PresentTimeGOOGLEVULKAN_HPP_NAMESPACE::PresentTimeGOOGLE72716     VULKAN_HPP_CONSTEXPR PresentTimeGOOGLE( uint32_t presentID_          = {},
72717                                             uint64_t desiredPresentTime_ = {} ) VULKAN_HPP_NOEXCEPT
72718       : presentID( presentID_ )
72719       , desiredPresentTime( desiredPresentTime_ )
72720     {}
72721 
72722     VULKAN_HPP_CONSTEXPR PresentTimeGOOGLE( PresentTimeGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72723 
PresentTimeGOOGLEVULKAN_HPP_NAMESPACE::PresentTimeGOOGLE72724     PresentTimeGOOGLE( VkPresentTimeGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT
72725       : PresentTimeGOOGLE( *reinterpret_cast<PresentTimeGOOGLE const *>( &rhs ) )
72726     {}
72727 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
72728 
72729     PresentTimeGOOGLE & operator=( PresentTimeGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72730 
operator =VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE72731     PresentTimeGOOGLE & operator=( VkPresentTimeGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT
72732     {
72733       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE const *>( &rhs );
72734       return *this;
72735     }
72736 
72737 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPresentIDVULKAN_HPP_NAMESPACE::PresentTimeGOOGLE72738     VULKAN_HPP_CONSTEXPR_14 PresentTimeGOOGLE & setPresentID( uint32_t presentID_ ) VULKAN_HPP_NOEXCEPT
72739     {
72740       presentID = presentID_;
72741       return *this;
72742     }
72743 
72744     VULKAN_HPP_CONSTEXPR_14 PresentTimeGOOGLE &
setDesiredPresentTimeVULKAN_HPP_NAMESPACE::PresentTimeGOOGLE72745                             setDesiredPresentTime( uint64_t desiredPresentTime_ ) VULKAN_HPP_NOEXCEPT
72746     {
72747       desiredPresentTime = desiredPresentTime_;
72748       return *this;
72749     }
72750 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
72751 
operator VkPresentTimeGOOGLE const&VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE72752     explicit operator VkPresentTimeGOOGLE const &() const VULKAN_HPP_NOEXCEPT
72753     {
72754       return *reinterpret_cast<const VkPresentTimeGOOGLE *>( this );
72755     }
72756 
operator VkPresentTimeGOOGLE&VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE72757     explicit operator VkPresentTimeGOOGLE &() VULKAN_HPP_NOEXCEPT
72758     {
72759       return *reinterpret_cast<VkPresentTimeGOOGLE *>( this );
72760     }
72761 
72762 #if 14 <= VULKAN_HPP_CPP_VERSION
72763     auto
72764 #else
72765     std::tuple<uint32_t const &, uint64_t const &>
72766 #endif
reflectVULKAN_HPP_NAMESPACE::PresentTimeGOOGLE72767       reflect() const VULKAN_HPP_NOEXCEPT
72768     {
72769       return std::tie( presentID, desiredPresentTime );
72770     }
72771 
72772 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
72773     auto operator<=>( PresentTimeGOOGLE const & ) const = default;
72774 #else
operator ==VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE72775     bool operator==( PresentTimeGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT
72776     {
72777       return this->reflect() == rhs.reflect();
72778     }
72779 
operator !=VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE72780     bool operator!=( PresentTimeGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT
72781     {
72782       return this->reflect() != rhs.reflect();
72783     }
72784 #endif
72785 
72786   public:
72787     uint32_t presentID          = {};
72788     uint64_t desiredPresentTime = {};
72789   };
72790   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE ) == sizeof( VkPresentTimeGOOGLE ),
72791                             "struct and wrapper have different size!" );
72792   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE>::value,
72793                             "struct wrapper is not a standard layout!" );
72794   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE>::value,
72795                             "PresentTimeGOOGLE is not nothrow_move_constructible!" );
72796 
72797   struct PresentTimesInfoGOOGLE
72798   {
72799     using NativeType = VkPresentTimesInfoGOOGLE;
72800 
72801     static const bool                                  allowDuplicate = false;
72802     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePresentTimesInfoGOOGLE;
72803 
72804 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
72805     VULKAN_HPP_CONSTEXPR
PresentTimesInfoGOOGLEVULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE72806       PresentTimesInfoGOOGLE( uint32_t                                        swapchainCount_ = {},
72807                               const VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE * pTimes_         = {} ) VULKAN_HPP_NOEXCEPT
72808       : swapchainCount( swapchainCount_ )
72809       , pTimes( pTimes_ )
72810     {}
72811 
72812     VULKAN_HPP_CONSTEXPR PresentTimesInfoGOOGLE( PresentTimesInfoGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72813 
PresentTimesInfoGOOGLEVULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE72814     PresentTimesInfoGOOGLE( VkPresentTimesInfoGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT
72815       : PresentTimesInfoGOOGLE( *reinterpret_cast<PresentTimesInfoGOOGLE const *>( &rhs ) )
72816     {}
72817 
72818 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PresentTimesInfoGOOGLEVULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE72819     PresentTimesInfoGOOGLE(
72820       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE> const & times_ )
72821       : swapchainCount( static_cast<uint32_t>( times_.size() ) ), pTimes( times_.data() )
72822     {}
72823 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
72824 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
72825 
72826     PresentTimesInfoGOOGLE & operator=( PresentTimesInfoGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72827 
operator =VULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE72828     PresentTimesInfoGOOGLE & operator=( VkPresentTimesInfoGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT
72829     {
72830       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE const *>( &rhs );
72831       return *this;
72832     }
72833 
72834 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE72835     VULKAN_HPP_CONSTEXPR_14 PresentTimesInfoGOOGLE & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
72836     {
72837       pNext = pNext_;
72838       return *this;
72839     }
72840 
setSwapchainCountVULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE72841     VULKAN_HPP_CONSTEXPR_14 PresentTimesInfoGOOGLE & setSwapchainCount( uint32_t swapchainCount_ ) VULKAN_HPP_NOEXCEPT
72842     {
72843       swapchainCount = swapchainCount_;
72844       return *this;
72845     }
72846 
72847     VULKAN_HPP_CONSTEXPR_14 PresentTimesInfoGOOGLE &
setPTimesVULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE72848                             setPTimes( const VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE * pTimes_ ) VULKAN_HPP_NOEXCEPT
72849     {
72850       pTimes = pTimes_;
72851       return *this;
72852     }
72853 
72854 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setTimesVULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE72855     PresentTimesInfoGOOGLE & setTimes(
72856       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE> const & times_ )
72857       VULKAN_HPP_NOEXCEPT
72858     {
72859       swapchainCount = static_cast<uint32_t>( times_.size() );
72860       pTimes         = times_.data();
72861       return *this;
72862     }
72863 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
72864 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
72865 
operator VkPresentTimesInfoGOOGLE const&VULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE72866     explicit operator VkPresentTimesInfoGOOGLE const &() const VULKAN_HPP_NOEXCEPT
72867     {
72868       return *reinterpret_cast<const VkPresentTimesInfoGOOGLE *>( this );
72869     }
72870 
operator VkPresentTimesInfoGOOGLE&VULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE72871     explicit operator VkPresentTimesInfoGOOGLE &() VULKAN_HPP_NOEXCEPT
72872     {
72873       return *reinterpret_cast<VkPresentTimesInfoGOOGLE *>( this );
72874     }
72875 
72876 #if 14 <= VULKAN_HPP_CPP_VERSION
72877     auto
72878 #else
72879     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
72880                const void * const &,
72881                uint32_t const &,
72882                const VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE * const &>
72883 #endif
reflectVULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE72884       reflect() const VULKAN_HPP_NOEXCEPT
72885     {
72886       return std::tie( sType, pNext, swapchainCount, pTimes );
72887     }
72888 
72889 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
72890     auto operator<=>( PresentTimesInfoGOOGLE const & ) const = default;
72891 #else
operator ==VULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE72892     bool operator==( PresentTimesInfoGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT
72893     {
72894       return this->reflect() == rhs.reflect();
72895     }
72896 
operator !=VULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE72897     bool operator!=( PresentTimesInfoGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT
72898     {
72899       return this->reflect() != rhs.reflect();
72900     }
72901 #endif
72902 
72903   public:
72904     VULKAN_HPP_NAMESPACE::StructureType             sType          = StructureType::ePresentTimesInfoGOOGLE;
72905     const void *                                    pNext          = {};
72906     uint32_t                                        swapchainCount = {};
72907     const VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE * pTimes         = {};
72908   };
72909   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE ) ==
72910                               sizeof( VkPresentTimesInfoGOOGLE ),
72911                             "struct and wrapper have different size!" );
72912   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE>::value,
72913                             "struct wrapper is not a standard layout!" );
72914   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE>::value,
72915                             "PresentTimesInfoGOOGLE is not nothrow_move_constructible!" );
72916 
72917   template <>
72918   struct CppType<StructureType, StructureType::ePresentTimesInfoGOOGLE>
72919   {
72920     using Type = PresentTimesInfoGOOGLE;
72921   };
72922 
72923   struct PrivateDataSlotCreateInfoEXT
72924   {
72925     using NativeType = VkPrivateDataSlotCreateInfoEXT;
72926 
72927     static const bool                                  allowDuplicate = false;
72928     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePrivateDataSlotCreateInfoEXT;
72929 
72930 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PrivateDataSlotCreateInfoEXTVULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfoEXT72931     VULKAN_HPP_CONSTEXPR PrivateDataSlotCreateInfoEXT( VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateFlagsEXT flags_ = {} )
72932       VULKAN_HPP_NOEXCEPT : flags( flags_ )
72933     {}
72934 
72935     VULKAN_HPP_CONSTEXPR
72936       PrivateDataSlotCreateInfoEXT( PrivateDataSlotCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72937 
PrivateDataSlotCreateInfoEXTVULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfoEXT72938     PrivateDataSlotCreateInfoEXT( VkPrivateDataSlotCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
72939       : PrivateDataSlotCreateInfoEXT( *reinterpret_cast<PrivateDataSlotCreateInfoEXT const *>( &rhs ) )
72940     {}
72941 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
72942 
72943     PrivateDataSlotCreateInfoEXT & operator=( PrivateDataSlotCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72944 
operator =VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfoEXT72945     PrivateDataSlotCreateInfoEXT & operator=( VkPrivateDataSlotCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
72946     {
72947       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfoEXT const *>( &rhs );
72948       return *this;
72949     }
72950 
72951 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfoEXT72952     VULKAN_HPP_CONSTEXPR_14 PrivateDataSlotCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
72953     {
72954       pNext = pNext_;
72955       return *this;
72956     }
72957 
72958     VULKAN_HPP_CONSTEXPR_14 PrivateDataSlotCreateInfoEXT &
setFlagsVULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfoEXT72959                             setFlags( VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
72960     {
72961       flags = flags_;
72962       return *this;
72963     }
72964 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
72965 
operator VkPrivateDataSlotCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfoEXT72966     explicit operator VkPrivateDataSlotCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
72967     {
72968       return *reinterpret_cast<const VkPrivateDataSlotCreateInfoEXT *>( this );
72969     }
72970 
operator VkPrivateDataSlotCreateInfoEXT&VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfoEXT72971     explicit operator VkPrivateDataSlotCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
72972     {
72973       return *reinterpret_cast<VkPrivateDataSlotCreateInfoEXT *>( this );
72974     }
72975 
72976 #if 14 <= VULKAN_HPP_CPP_VERSION
72977     auto
72978 #else
72979     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
72980                const void * const &,
72981                VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateFlagsEXT const &>
72982 #endif
reflectVULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfoEXT72983       reflect() const VULKAN_HPP_NOEXCEPT
72984     {
72985       return std::tie( sType, pNext, flags );
72986     }
72987 
72988 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
72989     auto operator<=>( PrivateDataSlotCreateInfoEXT const & ) const = default;
72990 #else
operator ==VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfoEXT72991     bool operator==( PrivateDataSlotCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
72992     {
72993       return this->reflect() == rhs.reflect();
72994     }
72995 
operator !=VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfoEXT72996     bool operator!=( PrivateDataSlotCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
72997     {
72998       return this->reflect() != rhs.reflect();
72999     }
73000 #endif
73001 
73002   public:
73003     VULKAN_HPP_NAMESPACE::StructureType                 sType = StructureType::ePrivateDataSlotCreateInfoEXT;
73004     const void *                                        pNext = {};
73005     VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateFlagsEXT flags = {};
73006   };
73007   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfoEXT ) ==
73008                               sizeof( VkPrivateDataSlotCreateInfoEXT ),
73009                             "struct and wrapper have different size!" );
73010   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfoEXT>::value,
73011                             "struct wrapper is not a standard layout!" );
73012   VULKAN_HPP_STATIC_ASSERT(
73013     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfoEXT>::value,
73014     "PrivateDataSlotCreateInfoEXT is not nothrow_move_constructible!" );
73015 
73016   template <>
73017   struct CppType<StructureType, StructureType::ePrivateDataSlotCreateInfoEXT>
73018   {
73019     using Type = PrivateDataSlotCreateInfoEXT;
73020   };
73021 
73022   struct ProtectedSubmitInfo
73023   {
73024     using NativeType = VkProtectedSubmitInfo;
73025 
73026     static const bool                                  allowDuplicate = false;
73027     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eProtectedSubmitInfo;
73028 
73029 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ProtectedSubmitInfoVULKAN_HPP_NAMESPACE::ProtectedSubmitInfo73030     VULKAN_HPP_CONSTEXPR ProtectedSubmitInfo( VULKAN_HPP_NAMESPACE::Bool32 protectedSubmit_ = {} ) VULKAN_HPP_NOEXCEPT
73031       : protectedSubmit( protectedSubmit_ )
73032     {}
73033 
73034     VULKAN_HPP_CONSTEXPR ProtectedSubmitInfo( ProtectedSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73035 
ProtectedSubmitInfoVULKAN_HPP_NAMESPACE::ProtectedSubmitInfo73036     ProtectedSubmitInfo( VkProtectedSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
73037       : ProtectedSubmitInfo( *reinterpret_cast<ProtectedSubmitInfo const *>( &rhs ) )
73038     {}
73039 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
73040 
73041     ProtectedSubmitInfo & operator=( ProtectedSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73042 
operator =VULKAN_HPP_NAMESPACE::ProtectedSubmitInfo73043     ProtectedSubmitInfo & operator=( VkProtectedSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
73044     {
73045       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ProtectedSubmitInfo const *>( &rhs );
73046       return *this;
73047     }
73048 
73049 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ProtectedSubmitInfo73050     VULKAN_HPP_CONSTEXPR_14 ProtectedSubmitInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
73051     {
73052       pNext = pNext_;
73053       return *this;
73054     }
73055 
73056     VULKAN_HPP_CONSTEXPR_14 ProtectedSubmitInfo &
setProtectedSubmitVULKAN_HPP_NAMESPACE::ProtectedSubmitInfo73057                             setProtectedSubmit( VULKAN_HPP_NAMESPACE::Bool32 protectedSubmit_ ) VULKAN_HPP_NOEXCEPT
73058     {
73059       protectedSubmit = protectedSubmit_;
73060       return *this;
73061     }
73062 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
73063 
operator VkProtectedSubmitInfo const&VULKAN_HPP_NAMESPACE::ProtectedSubmitInfo73064     explicit operator VkProtectedSubmitInfo const &() const VULKAN_HPP_NOEXCEPT
73065     {
73066       return *reinterpret_cast<const VkProtectedSubmitInfo *>( this );
73067     }
73068 
operator VkProtectedSubmitInfo&VULKAN_HPP_NAMESPACE::ProtectedSubmitInfo73069     explicit operator VkProtectedSubmitInfo &() VULKAN_HPP_NOEXCEPT
73070     {
73071       return *reinterpret_cast<VkProtectedSubmitInfo *>( this );
73072     }
73073 
73074 #if 14 <= VULKAN_HPP_CPP_VERSION
73075     auto
73076 #else
73077     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
73078 #endif
reflectVULKAN_HPP_NAMESPACE::ProtectedSubmitInfo73079       reflect() const VULKAN_HPP_NOEXCEPT
73080     {
73081       return std::tie( sType, pNext, protectedSubmit );
73082     }
73083 
73084 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
73085     auto operator<=>( ProtectedSubmitInfo const & ) const = default;
73086 #else
operator ==VULKAN_HPP_NAMESPACE::ProtectedSubmitInfo73087     bool operator==( ProtectedSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
73088     {
73089       return this->reflect() == rhs.reflect();
73090     }
73091 
operator !=VULKAN_HPP_NAMESPACE::ProtectedSubmitInfo73092     bool operator!=( ProtectedSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
73093     {
73094       return this->reflect() != rhs.reflect();
73095     }
73096 #endif
73097 
73098   public:
73099     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::eProtectedSubmitInfo;
73100     const void *                        pNext           = {};
73101     VULKAN_HPP_NAMESPACE::Bool32        protectedSubmit = {};
73102   };
73103   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ProtectedSubmitInfo ) == sizeof( VkProtectedSubmitInfo ),
73104                             "struct and wrapper have different size!" );
73105   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ProtectedSubmitInfo>::value,
73106                             "struct wrapper is not a standard layout!" );
73107   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ProtectedSubmitInfo>::value,
73108                             "ProtectedSubmitInfo is not nothrow_move_constructible!" );
73109 
73110   template <>
73111   struct CppType<StructureType, StructureType::eProtectedSubmitInfo>
73112   {
73113     using Type = ProtectedSubmitInfo;
73114   };
73115 
73116   struct QueryPoolCreateInfo
73117   {
73118     using NativeType = VkQueryPoolCreateInfo;
73119 
73120     static const bool                                  allowDuplicate = false;
73121     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eQueryPoolCreateInfo;
73122 
73123 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
QueryPoolCreateInfoVULKAN_HPP_NAMESPACE::QueryPoolCreateInfo73124     VULKAN_HPP_CONSTEXPR QueryPoolCreateInfo(
73125       VULKAN_HPP_NAMESPACE::QueryPoolCreateFlags        flags_      = {},
73126       VULKAN_HPP_NAMESPACE::QueryType                   queryType_  = VULKAN_HPP_NAMESPACE::QueryType::eOcclusion,
73127       uint32_t                                          queryCount_ = {},
73128       VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags pipelineStatistics_ = {} ) VULKAN_HPP_NOEXCEPT
73129       : flags( flags_ )
73130       , queryType( queryType_ )
73131       , queryCount( queryCount_ )
73132       , pipelineStatistics( pipelineStatistics_ )
73133     {}
73134 
73135     VULKAN_HPP_CONSTEXPR QueryPoolCreateInfo( QueryPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73136 
QueryPoolCreateInfoVULKAN_HPP_NAMESPACE::QueryPoolCreateInfo73137     QueryPoolCreateInfo( VkQueryPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
73138       : QueryPoolCreateInfo( *reinterpret_cast<QueryPoolCreateInfo const *>( &rhs ) )
73139     {}
73140 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
73141 
73142     QueryPoolCreateInfo & operator=( QueryPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73143 
operator =VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo73144     QueryPoolCreateInfo & operator=( VkQueryPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
73145     {
73146       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo const *>( &rhs );
73147       return *this;
73148     }
73149 
73150 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::QueryPoolCreateInfo73151     VULKAN_HPP_CONSTEXPR_14 QueryPoolCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
73152     {
73153       pNext = pNext_;
73154       return *this;
73155     }
73156 
73157     VULKAN_HPP_CONSTEXPR_14 QueryPoolCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::QueryPoolCreateInfo73158                             setFlags( VULKAN_HPP_NAMESPACE::QueryPoolCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
73159     {
73160       flags = flags_;
73161       return *this;
73162     }
73163 
73164     VULKAN_HPP_CONSTEXPR_14 QueryPoolCreateInfo &
setQueryTypeVULKAN_HPP_NAMESPACE::QueryPoolCreateInfo73165                             setQueryType( VULKAN_HPP_NAMESPACE::QueryType queryType_ ) VULKAN_HPP_NOEXCEPT
73166     {
73167       queryType = queryType_;
73168       return *this;
73169     }
73170 
setQueryCountVULKAN_HPP_NAMESPACE::QueryPoolCreateInfo73171     VULKAN_HPP_CONSTEXPR_14 QueryPoolCreateInfo & setQueryCount( uint32_t queryCount_ ) VULKAN_HPP_NOEXCEPT
73172     {
73173       queryCount = queryCount_;
73174       return *this;
73175     }
73176 
73177     VULKAN_HPP_CONSTEXPR_14 QueryPoolCreateInfo &
setPipelineStatisticsVULKAN_HPP_NAMESPACE::QueryPoolCreateInfo73178       setPipelineStatistics( VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags pipelineStatistics_ ) VULKAN_HPP_NOEXCEPT
73179     {
73180       pipelineStatistics = pipelineStatistics_;
73181       return *this;
73182     }
73183 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
73184 
operator VkQueryPoolCreateInfo const&VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo73185     explicit operator VkQueryPoolCreateInfo const &() const VULKAN_HPP_NOEXCEPT
73186     {
73187       return *reinterpret_cast<const VkQueryPoolCreateInfo *>( this );
73188     }
73189 
operator VkQueryPoolCreateInfo&VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo73190     explicit operator VkQueryPoolCreateInfo &() VULKAN_HPP_NOEXCEPT
73191     {
73192       return *reinterpret_cast<VkQueryPoolCreateInfo *>( this );
73193     }
73194 
73195 #if 14 <= VULKAN_HPP_CPP_VERSION
73196     auto
73197 #else
73198     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
73199                const void * const &,
73200                VULKAN_HPP_NAMESPACE::QueryPoolCreateFlags const &,
73201                VULKAN_HPP_NAMESPACE::QueryType const &,
73202                uint32_t const &,
73203                VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags const &>
73204 #endif
reflectVULKAN_HPP_NAMESPACE::QueryPoolCreateInfo73205       reflect() const VULKAN_HPP_NOEXCEPT
73206     {
73207       return std::tie( sType, pNext, flags, queryType, queryCount, pipelineStatistics );
73208     }
73209 
73210 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
73211     auto operator<=>( QueryPoolCreateInfo const & ) const = default;
73212 #else
operator ==VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo73213     bool operator==( QueryPoolCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
73214     {
73215       return this->reflect() == rhs.reflect();
73216     }
73217 
operator !=VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo73218     bool operator!=( QueryPoolCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
73219     {
73220       return this->reflect() != rhs.reflect();
73221     }
73222 #endif
73223 
73224   public:
73225     VULKAN_HPP_NAMESPACE::StructureType               sType              = StructureType::eQueryPoolCreateInfo;
73226     const void *                                      pNext              = {};
73227     VULKAN_HPP_NAMESPACE::QueryPoolCreateFlags        flags              = {};
73228     VULKAN_HPP_NAMESPACE::QueryType                   queryType          = VULKAN_HPP_NAMESPACE::QueryType::eOcclusion;
73229     uint32_t                                          queryCount         = {};
73230     VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags pipelineStatistics = {};
73231   };
73232   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo ) == sizeof( VkQueryPoolCreateInfo ),
73233                             "struct and wrapper have different size!" );
73234   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo>::value,
73235                             "struct wrapper is not a standard layout!" );
73236   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo>::value,
73237                             "QueryPoolCreateInfo is not nothrow_move_constructible!" );
73238 
73239   template <>
73240   struct CppType<StructureType, StructureType::eQueryPoolCreateInfo>
73241   {
73242     using Type = QueryPoolCreateInfo;
73243   };
73244 
73245   struct QueryPoolPerformanceCreateInfoKHR
73246   {
73247     using NativeType = VkQueryPoolPerformanceCreateInfoKHR;
73248 
73249     static const bool                                  allowDuplicate = false;
73250     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
73251       StructureType::eQueryPoolPerformanceCreateInfoKHR;
73252 
73253 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
QueryPoolPerformanceCreateInfoKHRVULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR73254     VULKAN_HPP_CONSTEXPR QueryPoolPerformanceCreateInfoKHR( uint32_t         queueFamilyIndex_  = {},
73255                                                             uint32_t         counterIndexCount_ = {},
73256                                                             const uint32_t * pCounterIndices_ = {} ) VULKAN_HPP_NOEXCEPT
73257       : queueFamilyIndex( queueFamilyIndex_ )
73258       , counterIndexCount( counterIndexCount_ )
73259       , pCounterIndices( pCounterIndices_ )
73260     {}
73261 
73262     VULKAN_HPP_CONSTEXPR
73263       QueryPoolPerformanceCreateInfoKHR( QueryPoolPerformanceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73264 
QueryPoolPerformanceCreateInfoKHRVULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR73265     QueryPoolPerformanceCreateInfoKHR( VkQueryPoolPerformanceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
73266       : QueryPoolPerformanceCreateInfoKHR( *reinterpret_cast<QueryPoolPerformanceCreateInfoKHR const *>( &rhs ) )
73267     {}
73268 
73269 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
QueryPoolPerformanceCreateInfoKHRVULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR73270     QueryPoolPerformanceCreateInfoKHR(
73271       uint32_t                                                              queueFamilyIndex_,
73272       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & counterIndices_ )
73273       : queueFamilyIndex( queueFamilyIndex_ )
73274       , counterIndexCount( static_cast<uint32_t>( counterIndices_.size() ) )
73275       , pCounterIndices( counterIndices_.data() )
73276     {}
73277 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
73278 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
73279 
73280     QueryPoolPerformanceCreateInfoKHR &
73281       operator=( QueryPoolPerformanceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73282 
operator =VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR73283     QueryPoolPerformanceCreateInfoKHR & operator=( VkQueryPoolPerformanceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
73284     {
73285       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR const *>( &rhs );
73286       return *this;
73287     }
73288 
73289 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR73290     VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
73291     {
73292       pNext = pNext_;
73293       return *this;
73294     }
73295 
73296     VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceCreateInfoKHR &
setQueueFamilyIndexVULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR73297                             setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
73298     {
73299       queueFamilyIndex = queueFamilyIndex_;
73300       return *this;
73301     }
73302 
73303     VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceCreateInfoKHR &
setCounterIndexCountVULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR73304                             setCounterIndexCount( uint32_t counterIndexCount_ ) VULKAN_HPP_NOEXCEPT
73305     {
73306       counterIndexCount = counterIndexCount_;
73307       return *this;
73308     }
73309 
73310     VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceCreateInfoKHR &
setPCounterIndicesVULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR73311                             setPCounterIndices( const uint32_t * pCounterIndices_ ) VULKAN_HPP_NOEXCEPT
73312     {
73313       pCounterIndices = pCounterIndices_;
73314       return *this;
73315     }
73316 
73317 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setCounterIndicesVULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR73318     QueryPoolPerformanceCreateInfoKHR & setCounterIndices(
73319       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & counterIndices_ ) VULKAN_HPP_NOEXCEPT
73320     {
73321       counterIndexCount = static_cast<uint32_t>( counterIndices_.size() );
73322       pCounterIndices   = counterIndices_.data();
73323       return *this;
73324     }
73325 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
73326 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
73327 
operator VkQueryPoolPerformanceCreateInfoKHR const&VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR73328     explicit operator VkQueryPoolPerformanceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
73329     {
73330       return *reinterpret_cast<const VkQueryPoolPerformanceCreateInfoKHR *>( this );
73331     }
73332 
operator VkQueryPoolPerformanceCreateInfoKHR&VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR73333     explicit operator VkQueryPoolPerformanceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
73334     {
73335       return *reinterpret_cast<VkQueryPoolPerformanceCreateInfoKHR *>( this );
73336     }
73337 
73338 #if 14 <= VULKAN_HPP_CPP_VERSION
73339     auto
73340 #else
73341     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
73342                const void * const &,
73343                uint32_t const &,
73344                uint32_t const &,
73345                const uint32_t * const &>
73346 #endif
reflectVULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR73347       reflect() const VULKAN_HPP_NOEXCEPT
73348     {
73349       return std::tie( sType, pNext, queueFamilyIndex, counterIndexCount, pCounterIndices );
73350     }
73351 
73352 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
73353     auto operator<=>( QueryPoolPerformanceCreateInfoKHR const & ) const = default;
73354 #else
operator ==VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR73355     bool operator==( QueryPoolPerformanceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
73356     {
73357       return this->reflect() == rhs.reflect();
73358     }
73359 
operator !=VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR73360     bool operator!=( QueryPoolPerformanceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
73361     {
73362       return this->reflect() != rhs.reflect();
73363     }
73364 #endif
73365 
73366   public:
73367     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::eQueryPoolPerformanceCreateInfoKHR;
73368     const void *                        pNext             = {};
73369     uint32_t                            queueFamilyIndex  = {};
73370     uint32_t                            counterIndexCount = {};
73371     const uint32_t *                    pCounterIndices   = {};
73372   };
73373   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR ) ==
73374                               sizeof( VkQueryPoolPerformanceCreateInfoKHR ),
73375                             "struct and wrapper have different size!" );
73376   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR>::value,
73377                             "struct wrapper is not a standard layout!" );
73378   VULKAN_HPP_STATIC_ASSERT(
73379     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR>::value,
73380     "QueryPoolPerformanceCreateInfoKHR is not nothrow_move_constructible!" );
73381 
73382   template <>
73383   struct CppType<StructureType, StructureType::eQueryPoolPerformanceCreateInfoKHR>
73384   {
73385     using Type = QueryPoolPerformanceCreateInfoKHR;
73386   };
73387 
73388   struct QueryPoolPerformanceQueryCreateInfoINTEL
73389   {
73390     using NativeType = VkQueryPoolPerformanceQueryCreateInfoINTEL;
73391 
73392     static const bool                                  allowDuplicate = false;
73393     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
73394       StructureType::eQueryPoolPerformanceQueryCreateInfoINTEL;
73395 
73396 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
QueryPoolPerformanceQueryCreateInfoINTELVULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL73397     VULKAN_HPP_CONSTEXPR QueryPoolPerformanceQueryCreateInfoINTEL(
73398       VULKAN_HPP_NAMESPACE::QueryPoolSamplingModeINTEL performanceCountersSampling_ =
73399         VULKAN_HPP_NAMESPACE::QueryPoolSamplingModeINTEL::eManual ) VULKAN_HPP_NOEXCEPT
73400       : performanceCountersSampling( performanceCountersSampling_ )
73401     {}
73402 
73403     VULKAN_HPP_CONSTEXPR QueryPoolPerformanceQueryCreateInfoINTEL(
73404       QueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73405 
QueryPoolPerformanceQueryCreateInfoINTELVULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL73406     QueryPoolPerformanceQueryCreateInfoINTEL( VkQueryPoolPerformanceQueryCreateInfoINTEL const & rhs )
73407       VULKAN_HPP_NOEXCEPT
73408       : QueryPoolPerformanceQueryCreateInfoINTEL(
73409           *reinterpret_cast<QueryPoolPerformanceQueryCreateInfoINTEL const *>( &rhs ) )
73410     {}
73411 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
73412 
73413     QueryPoolPerformanceQueryCreateInfoINTEL &
73414       operator=( QueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73415 
73416     QueryPoolPerformanceQueryCreateInfoINTEL &
operator =VULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL73417       operator=( VkQueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
73418     {
73419       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL const *>( &rhs );
73420       return *this;
73421     }
73422 
73423 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
73424     VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceQueryCreateInfoINTEL &
setPNextVULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL73425                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
73426     {
73427       pNext = pNext_;
73428       return *this;
73429     }
73430 
setPerformanceCountersSamplingVULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL73431     VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceQueryCreateInfoINTEL & setPerformanceCountersSampling(
73432       VULKAN_HPP_NAMESPACE::QueryPoolSamplingModeINTEL performanceCountersSampling_ ) VULKAN_HPP_NOEXCEPT
73433     {
73434       performanceCountersSampling = performanceCountersSampling_;
73435       return *this;
73436     }
73437 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
73438 
operator VkQueryPoolPerformanceQueryCreateInfoINTEL const&VULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL73439     explicit operator VkQueryPoolPerformanceQueryCreateInfoINTEL const &() const VULKAN_HPP_NOEXCEPT
73440     {
73441       return *reinterpret_cast<const VkQueryPoolPerformanceQueryCreateInfoINTEL *>( this );
73442     }
73443 
operator VkQueryPoolPerformanceQueryCreateInfoINTEL&VULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL73444     explicit operator VkQueryPoolPerformanceQueryCreateInfoINTEL &() VULKAN_HPP_NOEXCEPT
73445     {
73446       return *reinterpret_cast<VkQueryPoolPerformanceQueryCreateInfoINTEL *>( this );
73447     }
73448 
73449 #if 14 <= VULKAN_HPP_CPP_VERSION
73450     auto
73451 #else
73452     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
73453                const void * const &,
73454                VULKAN_HPP_NAMESPACE::QueryPoolSamplingModeINTEL const &>
73455 #endif
reflectVULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL73456       reflect() const VULKAN_HPP_NOEXCEPT
73457     {
73458       return std::tie( sType, pNext, performanceCountersSampling );
73459     }
73460 
73461 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
73462     auto operator<=>( QueryPoolPerformanceQueryCreateInfoINTEL const & ) const = default;
73463 #else
operator ==VULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL73464     bool operator==( QueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
73465     {
73466       return this->reflect() == rhs.reflect();
73467     }
73468 
operator !=VULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL73469     bool operator!=( QueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
73470     {
73471       return this->reflect() != rhs.reflect();
73472     }
73473 #endif
73474 
73475   public:
73476     VULKAN_HPP_NAMESPACE::StructureType              sType = StructureType::eQueryPoolPerformanceQueryCreateInfoINTEL;
73477     const void *                                     pNext = {};
73478     VULKAN_HPP_NAMESPACE::QueryPoolSamplingModeINTEL performanceCountersSampling =
73479       VULKAN_HPP_NAMESPACE::QueryPoolSamplingModeINTEL::eManual;
73480   };
73481   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL ) ==
73482                               sizeof( VkQueryPoolPerformanceQueryCreateInfoINTEL ),
73483                             "struct and wrapper have different size!" );
73484   VULKAN_HPP_STATIC_ASSERT(
73485     std::is_standard_layout<VULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL>::value,
73486     "struct wrapper is not a standard layout!" );
73487   VULKAN_HPP_STATIC_ASSERT(
73488     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL>::value,
73489     "QueryPoolPerformanceQueryCreateInfoINTEL is not nothrow_move_constructible!" );
73490 
73491   template <>
73492   struct CppType<StructureType, StructureType::eQueryPoolPerformanceQueryCreateInfoINTEL>
73493   {
73494     using Type = QueryPoolPerformanceQueryCreateInfoINTEL;
73495   };
73496   using QueryPoolCreateInfoINTEL = QueryPoolPerformanceQueryCreateInfoINTEL;
73497 
73498   struct QueueFamilyCheckpointProperties2NV
73499   {
73500     using NativeType = VkQueueFamilyCheckpointProperties2NV;
73501 
73502     static const bool                                  allowDuplicate = false;
73503     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
73504       StructureType::eQueueFamilyCheckpointProperties2NV;
73505 
73506 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
QueueFamilyCheckpointProperties2NVVULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV73507     VULKAN_HPP_CONSTEXPR QueueFamilyCheckpointProperties2NV(
73508       VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR checkpointExecutionStageMask_ = {} ) VULKAN_HPP_NOEXCEPT
73509       : checkpointExecutionStageMask( checkpointExecutionStageMask_ )
73510     {}
73511 
73512     VULKAN_HPP_CONSTEXPR QueueFamilyCheckpointProperties2NV( QueueFamilyCheckpointProperties2NV const & rhs )
73513       VULKAN_HPP_NOEXCEPT = default;
73514 
QueueFamilyCheckpointProperties2NVVULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV73515     QueueFamilyCheckpointProperties2NV( VkQueueFamilyCheckpointProperties2NV const & rhs ) VULKAN_HPP_NOEXCEPT
73516       : QueueFamilyCheckpointProperties2NV( *reinterpret_cast<QueueFamilyCheckpointProperties2NV const *>( &rhs ) )
73517     {}
73518 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
73519 
73520     QueueFamilyCheckpointProperties2NV &
73521       operator=( QueueFamilyCheckpointProperties2NV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73522 
73523     QueueFamilyCheckpointProperties2NV &
operator =VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV73524       operator=( VkQueueFamilyCheckpointProperties2NV const & rhs ) VULKAN_HPP_NOEXCEPT
73525     {
73526       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV const *>( &rhs );
73527       return *this;
73528     }
73529 
operator VkQueueFamilyCheckpointProperties2NV const&VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV73530     explicit operator VkQueueFamilyCheckpointProperties2NV const &() const VULKAN_HPP_NOEXCEPT
73531     {
73532       return *reinterpret_cast<const VkQueueFamilyCheckpointProperties2NV *>( this );
73533     }
73534 
operator VkQueueFamilyCheckpointProperties2NV&VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV73535     explicit operator VkQueueFamilyCheckpointProperties2NV &() VULKAN_HPP_NOEXCEPT
73536     {
73537       return *reinterpret_cast<VkQueueFamilyCheckpointProperties2NV *>( this );
73538     }
73539 
73540 #if 14 <= VULKAN_HPP_CPP_VERSION
73541     auto
73542 #else
73543     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
73544                void * const &,
73545                VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR const &>
73546 #endif
reflectVULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV73547       reflect() const VULKAN_HPP_NOEXCEPT
73548     {
73549       return std::tie( sType, pNext, checkpointExecutionStageMask );
73550     }
73551 
73552 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
73553     auto operator<=>( QueueFamilyCheckpointProperties2NV const & ) const = default;
73554 #else
operator ==VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV73555     bool operator==( QueueFamilyCheckpointProperties2NV const & rhs ) const VULKAN_HPP_NOEXCEPT
73556     {
73557       return this->reflect() == rhs.reflect();
73558     }
73559 
operator !=VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV73560     bool operator!=( QueueFamilyCheckpointProperties2NV const & rhs ) const VULKAN_HPP_NOEXCEPT
73561     {
73562       return this->reflect() != rhs.reflect();
73563     }
73564 #endif
73565 
73566   public:
73567     VULKAN_HPP_NAMESPACE::StructureType          sType = StructureType::eQueueFamilyCheckpointProperties2NV;
73568     void *                                       pNext = {};
73569     VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR checkpointExecutionStageMask = {};
73570   };
73571   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV ) ==
73572                               sizeof( VkQueueFamilyCheckpointProperties2NV ),
73573                             "struct and wrapper have different size!" );
73574   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV>::value,
73575                             "struct wrapper is not a standard layout!" );
73576   VULKAN_HPP_STATIC_ASSERT(
73577     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV>::value,
73578     "QueueFamilyCheckpointProperties2NV is not nothrow_move_constructible!" );
73579 
73580   template <>
73581   struct CppType<StructureType, StructureType::eQueueFamilyCheckpointProperties2NV>
73582   {
73583     using Type = QueueFamilyCheckpointProperties2NV;
73584   };
73585 
73586   struct QueueFamilyCheckpointPropertiesNV
73587   {
73588     using NativeType = VkQueueFamilyCheckpointPropertiesNV;
73589 
73590     static const bool                                  allowDuplicate = false;
73591     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
73592       StructureType::eQueueFamilyCheckpointPropertiesNV;
73593 
73594 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
QueueFamilyCheckpointPropertiesNVVULKAN_HPP_NAMESPACE::QueueFamilyCheckpointPropertiesNV73595     VULKAN_HPP_CONSTEXPR QueueFamilyCheckpointPropertiesNV(
73596       VULKAN_HPP_NAMESPACE::PipelineStageFlags checkpointExecutionStageMask_ = {} ) VULKAN_HPP_NOEXCEPT
73597       : checkpointExecutionStageMask( checkpointExecutionStageMask_ )
73598     {}
73599 
73600     VULKAN_HPP_CONSTEXPR
73601       QueueFamilyCheckpointPropertiesNV( QueueFamilyCheckpointPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73602 
QueueFamilyCheckpointPropertiesNVVULKAN_HPP_NAMESPACE::QueueFamilyCheckpointPropertiesNV73603     QueueFamilyCheckpointPropertiesNV( VkQueueFamilyCheckpointPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
73604       : QueueFamilyCheckpointPropertiesNV( *reinterpret_cast<QueueFamilyCheckpointPropertiesNV const *>( &rhs ) )
73605     {}
73606 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
73607 
73608     QueueFamilyCheckpointPropertiesNV &
73609       operator=( QueueFamilyCheckpointPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73610 
operator =VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointPropertiesNV73611     QueueFamilyCheckpointPropertiesNV & operator=( VkQueueFamilyCheckpointPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
73612     {
73613       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointPropertiesNV const *>( &rhs );
73614       return *this;
73615     }
73616 
operator VkQueueFamilyCheckpointPropertiesNV const&VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointPropertiesNV73617     explicit operator VkQueueFamilyCheckpointPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
73618     {
73619       return *reinterpret_cast<const VkQueueFamilyCheckpointPropertiesNV *>( this );
73620     }
73621 
operator VkQueueFamilyCheckpointPropertiesNV&VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointPropertiesNV73622     explicit operator VkQueueFamilyCheckpointPropertiesNV &() VULKAN_HPP_NOEXCEPT
73623     {
73624       return *reinterpret_cast<VkQueueFamilyCheckpointPropertiesNV *>( this );
73625     }
73626 
73627 #if 14 <= VULKAN_HPP_CPP_VERSION
73628     auto
73629 #else
73630     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
73631                void * const &,
73632                VULKAN_HPP_NAMESPACE::PipelineStageFlags const &>
73633 #endif
reflectVULKAN_HPP_NAMESPACE::QueueFamilyCheckpointPropertiesNV73634       reflect() const VULKAN_HPP_NOEXCEPT
73635     {
73636       return std::tie( sType, pNext, checkpointExecutionStageMask );
73637     }
73638 
73639 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
73640     auto operator<=>( QueueFamilyCheckpointPropertiesNV const & ) const = default;
73641 #else
operator ==VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointPropertiesNV73642     bool operator==( QueueFamilyCheckpointPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
73643     {
73644       return this->reflect() == rhs.reflect();
73645     }
73646 
operator !=VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointPropertiesNV73647     bool operator!=( QueueFamilyCheckpointPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
73648     {
73649       return this->reflect() != rhs.reflect();
73650     }
73651 #endif
73652 
73653   public:
73654     VULKAN_HPP_NAMESPACE::StructureType      sType = StructureType::eQueueFamilyCheckpointPropertiesNV;
73655     void *                                   pNext = {};
73656     VULKAN_HPP_NAMESPACE::PipelineStageFlags checkpointExecutionStageMask = {};
73657   };
73658   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointPropertiesNV ) ==
73659                               sizeof( VkQueueFamilyCheckpointPropertiesNV ),
73660                             "struct and wrapper have different size!" );
73661   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointPropertiesNV>::value,
73662                             "struct wrapper is not a standard layout!" );
73663   VULKAN_HPP_STATIC_ASSERT(
73664     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointPropertiesNV>::value,
73665     "QueueFamilyCheckpointPropertiesNV is not nothrow_move_constructible!" );
73666 
73667   template <>
73668   struct CppType<StructureType, StructureType::eQueueFamilyCheckpointPropertiesNV>
73669   {
73670     using Type = QueueFamilyCheckpointPropertiesNV;
73671   };
73672 
73673   struct QueueFamilyGlobalPriorityPropertiesEXT
73674   {
73675     using NativeType = VkQueueFamilyGlobalPriorityPropertiesEXT;
73676 
73677     static const bool                                  allowDuplicate = false;
73678     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
73679       StructureType::eQueueFamilyGlobalPriorityPropertiesEXT;
73680 
73681 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
QueueFamilyGlobalPriorityPropertiesEXTVULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityPropertiesEXT73682     VULKAN_HPP_CONSTEXPR_14 QueueFamilyGlobalPriorityPropertiesEXT(
73683       uint32_t priorityCount_ = {},
73684       std::array<VULKAN_HPP_NAMESPACE::QueueGlobalPriorityEXT, VK_MAX_GLOBAL_PRIORITY_SIZE_EXT> const &
73685         priorities_ = { { VULKAN_HPP_NAMESPACE::QueueGlobalPriorityEXT::eLow,
73686                           VULKAN_HPP_NAMESPACE::QueueGlobalPriorityEXT::eLow,
73687                           VULKAN_HPP_NAMESPACE::QueueGlobalPriorityEXT::eLow,
73688                           VULKAN_HPP_NAMESPACE::QueueGlobalPriorityEXT::eLow,
73689                           VULKAN_HPP_NAMESPACE::QueueGlobalPriorityEXT::eLow,
73690                           VULKAN_HPP_NAMESPACE::QueueGlobalPriorityEXT::eLow,
73691                           VULKAN_HPP_NAMESPACE::QueueGlobalPriorityEXT::eLow,
73692                           VULKAN_HPP_NAMESPACE::QueueGlobalPriorityEXT::eLow,
73693                           VULKAN_HPP_NAMESPACE::QueueGlobalPriorityEXT::eLow,
73694                           VULKAN_HPP_NAMESPACE::QueueGlobalPriorityEXT::eLow,
73695                           VULKAN_HPP_NAMESPACE::QueueGlobalPriorityEXT::eLow,
73696                           VULKAN_HPP_NAMESPACE::QueueGlobalPriorityEXT::eLow,
73697                           VULKAN_HPP_NAMESPACE::QueueGlobalPriorityEXT::eLow,
73698                           VULKAN_HPP_NAMESPACE::QueueGlobalPriorityEXT::eLow,
73699                           VULKAN_HPP_NAMESPACE::QueueGlobalPriorityEXT::eLow,
73700                           VULKAN_HPP_NAMESPACE::QueueGlobalPriorityEXT::eLow } } ) VULKAN_HPP_NOEXCEPT
73701       : priorityCount( priorityCount_ )
73702       , priorities( priorities_ )
73703     {}
73704 
73705     VULKAN_HPP_CONSTEXPR_14 QueueFamilyGlobalPriorityPropertiesEXT( QueueFamilyGlobalPriorityPropertiesEXT const & rhs )
73706       VULKAN_HPP_NOEXCEPT = default;
73707 
QueueFamilyGlobalPriorityPropertiesEXTVULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityPropertiesEXT73708     QueueFamilyGlobalPriorityPropertiesEXT( VkQueueFamilyGlobalPriorityPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
73709       : QueueFamilyGlobalPriorityPropertiesEXT(
73710           *reinterpret_cast<QueueFamilyGlobalPriorityPropertiesEXT const *>( &rhs ) )
73711     {}
73712 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
73713 
73714     QueueFamilyGlobalPriorityPropertiesEXT &
73715       operator=( QueueFamilyGlobalPriorityPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73716 
73717     QueueFamilyGlobalPriorityPropertiesEXT &
operator =VULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityPropertiesEXT73718       operator=( VkQueueFamilyGlobalPriorityPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
73719     {
73720       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityPropertiesEXT const *>( &rhs );
73721       return *this;
73722     }
73723 
73724 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityPropertiesEXT73725     VULKAN_HPP_CONSTEXPR_14 QueueFamilyGlobalPriorityPropertiesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
73726     {
73727       pNext = pNext_;
73728       return *this;
73729     }
73730 
73731     VULKAN_HPP_CONSTEXPR_14 QueueFamilyGlobalPriorityPropertiesEXT &
setPriorityCountVULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityPropertiesEXT73732                             setPriorityCount( uint32_t priorityCount_ ) VULKAN_HPP_NOEXCEPT
73733     {
73734       priorityCount = priorityCount_;
73735       return *this;
73736     }
73737 
setPrioritiesVULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityPropertiesEXT73738     VULKAN_HPP_CONSTEXPR_14 QueueFamilyGlobalPriorityPropertiesEXT & setPriorities(
73739       std::array<VULKAN_HPP_NAMESPACE::QueueGlobalPriorityEXT, VK_MAX_GLOBAL_PRIORITY_SIZE_EXT> priorities_ )
73740       VULKAN_HPP_NOEXCEPT
73741     {
73742       priorities = priorities_;
73743       return *this;
73744     }
73745 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
73746 
operator VkQueueFamilyGlobalPriorityPropertiesEXT const&VULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityPropertiesEXT73747     explicit operator VkQueueFamilyGlobalPriorityPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
73748     {
73749       return *reinterpret_cast<const VkQueueFamilyGlobalPriorityPropertiesEXT *>( this );
73750     }
73751 
operator VkQueueFamilyGlobalPriorityPropertiesEXT&VULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityPropertiesEXT73752     explicit operator VkQueueFamilyGlobalPriorityPropertiesEXT &() VULKAN_HPP_NOEXCEPT
73753     {
73754       return *reinterpret_cast<VkQueueFamilyGlobalPriorityPropertiesEXT *>( this );
73755     }
73756 
73757 #if 14 <= VULKAN_HPP_CPP_VERSION
73758     auto
73759 #else
73760     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
73761                void * const &,
73762                uint32_t const &,
73763                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::QueueGlobalPriorityEXT,
73764                                                     VK_MAX_GLOBAL_PRIORITY_SIZE_EXT> const &>
73765 #endif
reflectVULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityPropertiesEXT73766       reflect() const VULKAN_HPP_NOEXCEPT
73767     {
73768       return std::tie( sType, pNext, priorityCount, priorities );
73769     }
73770 
73771 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
73772     auto operator<=>( QueueFamilyGlobalPriorityPropertiesEXT const & ) const = default;
73773 #else
operator ==VULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityPropertiesEXT73774     bool operator==( QueueFamilyGlobalPriorityPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
73775     {
73776       return this->reflect() == rhs.reflect();
73777     }
73778 
operator !=VULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityPropertiesEXT73779     bool operator!=( QueueFamilyGlobalPriorityPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
73780     {
73781       return this->reflect() != rhs.reflect();
73782     }
73783 #endif
73784 
73785   public:
73786     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::eQueueFamilyGlobalPriorityPropertiesEXT;
73787     void *                              pNext         = {};
73788     uint32_t                            priorityCount = {};
73789     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::QueueGlobalPriorityEXT, VK_MAX_GLOBAL_PRIORITY_SIZE_EXT>
73790       priorities = {};
73791   };
73792   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityPropertiesEXT ) ==
73793                               sizeof( VkQueueFamilyGlobalPriorityPropertiesEXT ),
73794                             "struct and wrapper have different size!" );
73795   VULKAN_HPP_STATIC_ASSERT(
73796     std::is_standard_layout<VULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityPropertiesEXT>::value,
73797     "struct wrapper is not a standard layout!" );
73798   VULKAN_HPP_STATIC_ASSERT(
73799     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityPropertiesEXT>::value,
73800     "QueueFamilyGlobalPriorityPropertiesEXT is not nothrow_move_constructible!" );
73801 
73802   template <>
73803   struct CppType<StructureType, StructureType::eQueueFamilyGlobalPriorityPropertiesEXT>
73804   {
73805     using Type = QueueFamilyGlobalPriorityPropertiesEXT;
73806   };
73807 
73808   struct QueueFamilyProperties
73809   {
73810     using NativeType = VkQueueFamilyProperties;
73811 
73812 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
73813     VULKAN_HPP_CONSTEXPR
QueueFamilyPropertiesVULKAN_HPP_NAMESPACE::QueueFamilyProperties73814       QueueFamilyProperties( VULKAN_HPP_NAMESPACE::QueueFlags queueFlags_                  = {},
73815                              uint32_t                         queueCount_                  = {},
73816                              uint32_t                         timestampValidBits_          = {},
73817                              VULKAN_HPP_NAMESPACE::Extent3D   minImageTransferGranularity_ = {} ) VULKAN_HPP_NOEXCEPT
73818       : queueFlags( queueFlags_ )
73819       , queueCount( queueCount_ )
73820       , timestampValidBits( timestampValidBits_ )
73821       , minImageTransferGranularity( minImageTransferGranularity_ )
73822     {}
73823 
73824     VULKAN_HPP_CONSTEXPR QueueFamilyProperties( QueueFamilyProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73825 
QueueFamilyPropertiesVULKAN_HPP_NAMESPACE::QueueFamilyProperties73826     QueueFamilyProperties( VkQueueFamilyProperties const & rhs ) VULKAN_HPP_NOEXCEPT
73827       : QueueFamilyProperties( *reinterpret_cast<QueueFamilyProperties const *>( &rhs ) )
73828     {}
73829 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
73830 
73831     QueueFamilyProperties & operator=( QueueFamilyProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73832 
operator =VULKAN_HPP_NAMESPACE::QueueFamilyProperties73833     QueueFamilyProperties & operator=( VkQueueFamilyProperties const & rhs ) VULKAN_HPP_NOEXCEPT
73834     {
73835       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueueFamilyProperties const *>( &rhs );
73836       return *this;
73837     }
73838 
operator VkQueueFamilyProperties const&VULKAN_HPP_NAMESPACE::QueueFamilyProperties73839     explicit operator VkQueueFamilyProperties const &() const VULKAN_HPP_NOEXCEPT
73840     {
73841       return *reinterpret_cast<const VkQueueFamilyProperties *>( this );
73842     }
73843 
operator VkQueueFamilyProperties&VULKAN_HPP_NAMESPACE::QueueFamilyProperties73844     explicit operator VkQueueFamilyProperties &() VULKAN_HPP_NOEXCEPT
73845     {
73846       return *reinterpret_cast<VkQueueFamilyProperties *>( this );
73847     }
73848 
73849 #if 14 <= VULKAN_HPP_CPP_VERSION
73850     auto
73851 #else
73852     std::tuple<VULKAN_HPP_NAMESPACE::QueueFlags const &,
73853                uint32_t const &,
73854                uint32_t const &,
73855                VULKAN_HPP_NAMESPACE::Extent3D const &>
73856 #endif
reflectVULKAN_HPP_NAMESPACE::QueueFamilyProperties73857       reflect() const VULKAN_HPP_NOEXCEPT
73858     {
73859       return std::tie( queueFlags, queueCount, timestampValidBits, minImageTransferGranularity );
73860     }
73861 
73862 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
73863     auto operator<=>( QueueFamilyProperties const & ) const = default;
73864 #else
operator ==VULKAN_HPP_NAMESPACE::QueueFamilyProperties73865     bool operator==( QueueFamilyProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
73866     {
73867       return this->reflect() == rhs.reflect();
73868     }
73869 
operator !=VULKAN_HPP_NAMESPACE::QueueFamilyProperties73870     bool operator!=( QueueFamilyProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
73871     {
73872       return this->reflect() != rhs.reflect();
73873     }
73874 #endif
73875 
73876   public:
73877     VULKAN_HPP_NAMESPACE::QueueFlags queueFlags                  = {};
73878     uint32_t                         queueCount                  = {};
73879     uint32_t                         timestampValidBits          = {};
73880     VULKAN_HPP_NAMESPACE::Extent3D   minImageTransferGranularity = {};
73881   };
73882   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::QueueFamilyProperties ) == sizeof( VkQueueFamilyProperties ),
73883                             "struct and wrapper have different size!" );
73884   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::QueueFamilyProperties>::value,
73885                             "struct wrapper is not a standard layout!" );
73886   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::QueueFamilyProperties>::value,
73887                             "QueueFamilyProperties is not nothrow_move_constructible!" );
73888 
73889   struct QueueFamilyProperties2
73890   {
73891     using NativeType = VkQueueFamilyProperties2;
73892 
73893     static const bool                                  allowDuplicate = false;
73894     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eQueueFamilyProperties2;
73895 
73896 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
QueueFamilyProperties2VULKAN_HPP_NAMESPACE::QueueFamilyProperties273897     VULKAN_HPP_CONSTEXPR QueueFamilyProperties2(
73898       VULKAN_HPP_NAMESPACE::QueueFamilyProperties queueFamilyProperties_ = {} ) VULKAN_HPP_NOEXCEPT
73899       : queueFamilyProperties( queueFamilyProperties_ )
73900     {}
73901 
73902     VULKAN_HPP_CONSTEXPR QueueFamilyProperties2( QueueFamilyProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73903 
QueueFamilyProperties2VULKAN_HPP_NAMESPACE::QueueFamilyProperties273904     QueueFamilyProperties2( VkQueueFamilyProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
73905       : QueueFamilyProperties2( *reinterpret_cast<QueueFamilyProperties2 const *>( &rhs ) )
73906     {}
73907 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
73908 
73909     QueueFamilyProperties2 & operator=( QueueFamilyProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73910 
operator =VULKAN_HPP_NAMESPACE::QueueFamilyProperties273911     QueueFamilyProperties2 & operator=( VkQueueFamilyProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
73912     {
73913       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2 const *>( &rhs );
73914       return *this;
73915     }
73916 
operator VkQueueFamilyProperties2 const&VULKAN_HPP_NAMESPACE::QueueFamilyProperties273917     explicit operator VkQueueFamilyProperties2 const &() const VULKAN_HPP_NOEXCEPT
73918     {
73919       return *reinterpret_cast<const VkQueueFamilyProperties2 *>( this );
73920     }
73921 
operator VkQueueFamilyProperties2&VULKAN_HPP_NAMESPACE::QueueFamilyProperties273922     explicit operator VkQueueFamilyProperties2 &() VULKAN_HPP_NOEXCEPT
73923     {
73924       return *reinterpret_cast<VkQueueFamilyProperties2 *>( this );
73925     }
73926 
73927 #if 14 <= VULKAN_HPP_CPP_VERSION
73928     auto
73929 #else
73930     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
73931                void * const &,
73932                VULKAN_HPP_NAMESPACE::QueueFamilyProperties const &>
73933 #endif
reflectVULKAN_HPP_NAMESPACE::QueueFamilyProperties273934       reflect() const VULKAN_HPP_NOEXCEPT
73935     {
73936       return std::tie( sType, pNext, queueFamilyProperties );
73937     }
73938 
73939 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
73940     auto operator<=>( QueueFamilyProperties2 const & ) const = default;
73941 #else
operator ==VULKAN_HPP_NAMESPACE::QueueFamilyProperties273942     bool operator==( QueueFamilyProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
73943     {
73944       return this->reflect() == rhs.reflect();
73945     }
73946 
operator !=VULKAN_HPP_NAMESPACE::QueueFamilyProperties273947     bool operator!=( QueueFamilyProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
73948     {
73949       return this->reflect() != rhs.reflect();
73950     }
73951 #endif
73952 
73953   public:
73954     VULKAN_HPP_NAMESPACE::StructureType         sType                 = StructureType::eQueueFamilyProperties2;
73955     void *                                      pNext                 = {};
73956     VULKAN_HPP_NAMESPACE::QueueFamilyProperties queueFamilyProperties = {};
73957   };
73958   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::QueueFamilyProperties2 ) ==
73959                               sizeof( VkQueueFamilyProperties2 ),
73960                             "struct and wrapper have different size!" );
73961   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2>::value,
73962                             "struct wrapper is not a standard layout!" );
73963   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2>::value,
73964                             "QueueFamilyProperties2 is not nothrow_move_constructible!" );
73965 
73966   template <>
73967   struct CppType<StructureType, StructureType::eQueueFamilyProperties2>
73968   {
73969     using Type = QueueFamilyProperties2;
73970   };
73971   using QueueFamilyProperties2KHR = QueueFamilyProperties2;
73972 
73973 #if defined( VK_ENABLE_BETA_EXTENSIONS )
73974   struct QueueFamilyQueryResultStatusProperties2KHR
73975   {
73976     using NativeType = VkQueueFamilyQueryResultStatusProperties2KHR;
73977 
73978     static const bool                                  allowDuplicate = false;
73979     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
73980       StructureType::eQueueFamilyQueryResultStatusProperties2KHR;
73981 
73982 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
73983     VULKAN_HPP_CONSTEXPR
QueueFamilyQueryResultStatusProperties2KHRVULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusProperties2KHR73984       QueueFamilyQueryResultStatusProperties2KHR( VULKAN_HPP_NAMESPACE::Bool32 supported_ = {} ) VULKAN_HPP_NOEXCEPT
73985       : supported( supported_ )
73986     {}
73987 
73988     VULKAN_HPP_CONSTEXPR QueueFamilyQueryResultStatusProperties2KHR(
73989       QueueFamilyQueryResultStatusProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73990 
QueueFamilyQueryResultStatusProperties2KHRVULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusProperties2KHR73991     QueueFamilyQueryResultStatusProperties2KHR( VkQueueFamilyQueryResultStatusProperties2KHR const & rhs )
73992       VULKAN_HPP_NOEXCEPT
73993       : QueueFamilyQueryResultStatusProperties2KHR(
73994           *reinterpret_cast<QueueFamilyQueryResultStatusProperties2KHR const *>( &rhs ) )
73995     {}
73996 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
73997 
73998     QueueFamilyQueryResultStatusProperties2KHR &
73999       operator=( QueueFamilyQueryResultStatusProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74000 
74001     QueueFamilyQueryResultStatusProperties2KHR &
operator =VULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusProperties2KHR74002       operator=( VkQueueFamilyQueryResultStatusProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
74003     {
74004       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusProperties2KHR const *>( &rhs );
74005       return *this;
74006     }
74007 
74008 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusProperties2KHR74009     VULKAN_HPP_CONSTEXPR_14 QueueFamilyQueryResultStatusProperties2KHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
74010     {
74011       pNext = pNext_;
74012       return *this;
74013     }
74014 
74015     VULKAN_HPP_CONSTEXPR_14 QueueFamilyQueryResultStatusProperties2KHR &
setSupportedVULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusProperties2KHR74016                             setSupported( VULKAN_HPP_NAMESPACE::Bool32 supported_ ) VULKAN_HPP_NOEXCEPT
74017     {
74018       supported = supported_;
74019       return *this;
74020     }
74021 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
74022 
operator VkQueueFamilyQueryResultStatusProperties2KHR const&VULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusProperties2KHR74023     explicit operator VkQueueFamilyQueryResultStatusProperties2KHR const &() const VULKAN_HPP_NOEXCEPT
74024     {
74025       return *reinterpret_cast<const VkQueueFamilyQueryResultStatusProperties2KHR *>( this );
74026     }
74027 
operator VkQueueFamilyQueryResultStatusProperties2KHR&VULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusProperties2KHR74028     explicit operator VkQueueFamilyQueryResultStatusProperties2KHR &() VULKAN_HPP_NOEXCEPT
74029     {
74030       return *reinterpret_cast<VkQueueFamilyQueryResultStatusProperties2KHR *>( this );
74031     }
74032 
74033 #  if 14 <= VULKAN_HPP_CPP_VERSION
74034     auto
74035 #  else
74036     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
74037 #  endif
reflectVULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusProperties2KHR74038       reflect() const VULKAN_HPP_NOEXCEPT
74039     {
74040       return std::tie( sType, pNext, supported );
74041     }
74042 
74043 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
74044     auto operator<=>( QueueFamilyQueryResultStatusProperties2KHR const & ) const = default;
74045 #  else
operator ==VULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusProperties2KHR74046     bool operator==( QueueFamilyQueryResultStatusProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
74047     {
74048       return this->reflect() == rhs.reflect();
74049     }
74050 
operator !=VULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusProperties2KHR74051     bool operator!=( QueueFamilyQueryResultStatusProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
74052     {
74053       return this->reflect() != rhs.reflect();
74054     }
74055 #  endif
74056 
74057   public:
74058     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::eQueueFamilyQueryResultStatusProperties2KHR;
74059     void *                              pNext     = {};
74060     VULKAN_HPP_NAMESPACE::Bool32        supported = {};
74061   };
74062   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusProperties2KHR ) ==
74063                               sizeof( VkQueueFamilyQueryResultStatusProperties2KHR ),
74064                             "struct and wrapper have different size!" );
74065   VULKAN_HPP_STATIC_ASSERT(
74066     std::is_standard_layout<VULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusProperties2KHR>::value,
74067     "struct wrapper is not a standard layout!" );
74068   VULKAN_HPP_STATIC_ASSERT(
74069     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusProperties2KHR>::value,
74070     "QueueFamilyQueryResultStatusProperties2KHR is not nothrow_move_constructible!" );
74071 
74072   template <>
74073   struct CppType<StructureType, StructureType::eQueueFamilyQueryResultStatusProperties2KHR>
74074   {
74075     using Type = QueueFamilyQueryResultStatusProperties2KHR;
74076   };
74077 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
74078 
74079   struct RayTracingShaderGroupCreateInfoKHR
74080   {
74081     using NativeType = VkRayTracingShaderGroupCreateInfoKHR;
74082 
74083     static const bool                                  allowDuplicate = false;
74084     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
74085       StructureType::eRayTracingShaderGroupCreateInfoKHR;
74086 
74087 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
74088     VULKAN_HPP_CONSTEXPR
RayTracingShaderGroupCreateInfoKHRVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR74089       RayTracingShaderGroupCreateInfoKHR( VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR type_ =
74090                                             VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR::eGeneral,
74091                                           uint32_t     generalShader_                   = {},
74092                                           uint32_t     closestHitShader_                = {},
74093                                           uint32_t     anyHitShader_                    = {},
74094                                           uint32_t     intersectionShader_              = {},
74095                                           const void * pShaderGroupCaptureReplayHandle_ = {} ) VULKAN_HPP_NOEXCEPT
74096       : type( type_ )
74097       , generalShader( generalShader_ )
74098       , closestHitShader( closestHitShader_ )
74099       , anyHitShader( anyHitShader_ )
74100       , intersectionShader( intersectionShader_ )
74101       , pShaderGroupCaptureReplayHandle( pShaderGroupCaptureReplayHandle_ )
74102     {}
74103 
74104     VULKAN_HPP_CONSTEXPR RayTracingShaderGroupCreateInfoKHR( RayTracingShaderGroupCreateInfoKHR const & rhs )
74105       VULKAN_HPP_NOEXCEPT = default;
74106 
RayTracingShaderGroupCreateInfoKHRVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR74107     RayTracingShaderGroupCreateInfoKHR( VkRayTracingShaderGroupCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
74108       : RayTracingShaderGroupCreateInfoKHR( *reinterpret_cast<RayTracingShaderGroupCreateInfoKHR const *>( &rhs ) )
74109     {}
74110 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
74111 
74112     RayTracingShaderGroupCreateInfoKHR &
74113       operator=( RayTracingShaderGroupCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74114 
74115     RayTracingShaderGroupCreateInfoKHR &
operator =VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR74116       operator=( VkRayTracingShaderGroupCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
74117     {
74118       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR const *>( &rhs );
74119       return *this;
74120     }
74121 
74122 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR74123     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
74124     {
74125       pNext = pNext_;
74126       return *this;
74127     }
74128 
74129     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR &
setTypeVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR74130                             setType( VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR type_ ) VULKAN_HPP_NOEXCEPT
74131     {
74132       type = type_;
74133       return *this;
74134     }
74135 
74136     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR &
setGeneralShaderVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR74137                             setGeneralShader( uint32_t generalShader_ ) VULKAN_HPP_NOEXCEPT
74138     {
74139       generalShader = generalShader_;
74140       return *this;
74141     }
74142 
74143     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR &
setClosestHitShaderVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR74144                             setClosestHitShader( uint32_t closestHitShader_ ) VULKAN_HPP_NOEXCEPT
74145     {
74146       closestHitShader = closestHitShader_;
74147       return *this;
74148     }
74149 
74150     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR &
setAnyHitShaderVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR74151                             setAnyHitShader( uint32_t anyHitShader_ ) VULKAN_HPP_NOEXCEPT
74152     {
74153       anyHitShader = anyHitShader_;
74154       return *this;
74155     }
74156 
74157     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR &
setIntersectionShaderVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR74158                             setIntersectionShader( uint32_t intersectionShader_ ) VULKAN_HPP_NOEXCEPT
74159     {
74160       intersectionShader = intersectionShader_;
74161       return *this;
74162     }
74163 
74164     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR &
setPShaderGroupCaptureReplayHandleVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR74165       setPShaderGroupCaptureReplayHandle( const void * pShaderGroupCaptureReplayHandle_ ) VULKAN_HPP_NOEXCEPT
74166     {
74167       pShaderGroupCaptureReplayHandle = pShaderGroupCaptureReplayHandle_;
74168       return *this;
74169     }
74170 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
74171 
operator VkRayTracingShaderGroupCreateInfoKHR const&VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR74172     explicit operator VkRayTracingShaderGroupCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
74173     {
74174       return *reinterpret_cast<const VkRayTracingShaderGroupCreateInfoKHR *>( this );
74175     }
74176 
operator VkRayTracingShaderGroupCreateInfoKHR&VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR74177     explicit operator VkRayTracingShaderGroupCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
74178     {
74179       return *reinterpret_cast<VkRayTracingShaderGroupCreateInfoKHR *>( this );
74180     }
74181 
74182 #if 14 <= VULKAN_HPP_CPP_VERSION
74183     auto
74184 #else
74185     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
74186                const void * const &,
74187                VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR const &,
74188                uint32_t const &,
74189                uint32_t const &,
74190                uint32_t const &,
74191                uint32_t const &,
74192                const void * const &>
74193 #endif
reflectVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR74194       reflect() const VULKAN_HPP_NOEXCEPT
74195     {
74196       return std::tie( sType,
74197                        pNext,
74198                        type,
74199                        generalShader,
74200                        closestHitShader,
74201                        anyHitShader,
74202                        intersectionShader,
74203                        pShaderGroupCaptureReplayHandle );
74204     }
74205 
74206 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
74207     auto operator<=>( RayTracingShaderGroupCreateInfoKHR const & ) const = default;
74208 #else
operator ==VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR74209     bool operator==( RayTracingShaderGroupCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
74210     {
74211       return this->reflect() == rhs.reflect();
74212     }
74213 
operator !=VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR74214     bool operator!=( RayTracingShaderGroupCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
74215     {
74216       return this->reflect() != rhs.reflect();
74217     }
74218 #endif
74219 
74220   public:
74221     VULKAN_HPP_NAMESPACE::StructureType                sType = StructureType::eRayTracingShaderGroupCreateInfoKHR;
74222     const void *                                       pNext = {};
74223     VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR type =
74224       VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR::eGeneral;
74225     uint32_t     generalShader                   = {};
74226     uint32_t     closestHitShader                = {};
74227     uint32_t     anyHitShader                    = {};
74228     uint32_t     intersectionShader              = {};
74229     const void * pShaderGroupCaptureReplayHandle = {};
74230   };
74231   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR ) ==
74232                               sizeof( VkRayTracingShaderGroupCreateInfoKHR ),
74233                             "struct and wrapper have different size!" );
74234   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR>::value,
74235                             "struct wrapper is not a standard layout!" );
74236   VULKAN_HPP_STATIC_ASSERT(
74237     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR>::value,
74238     "RayTracingShaderGroupCreateInfoKHR is not nothrow_move_constructible!" );
74239 
74240   template <>
74241   struct CppType<StructureType, StructureType::eRayTracingShaderGroupCreateInfoKHR>
74242   {
74243     using Type = RayTracingShaderGroupCreateInfoKHR;
74244   };
74245 
74246   struct RayTracingPipelineInterfaceCreateInfoKHR
74247   {
74248     using NativeType = VkRayTracingPipelineInterfaceCreateInfoKHR;
74249 
74250     static const bool                                  allowDuplicate = false;
74251     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
74252       StructureType::eRayTracingPipelineInterfaceCreateInfoKHR;
74253 
74254 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
74255     VULKAN_HPP_CONSTEXPR
RayTracingPipelineInterfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR74256       RayTracingPipelineInterfaceCreateInfoKHR( uint32_t maxPipelineRayPayloadSize_      = {},
74257                                                 uint32_t maxPipelineRayHitAttributeSize_ = {} ) VULKAN_HPP_NOEXCEPT
74258       : maxPipelineRayPayloadSize( maxPipelineRayPayloadSize_ )
74259       , maxPipelineRayHitAttributeSize( maxPipelineRayHitAttributeSize_ )
74260     {}
74261 
74262     VULKAN_HPP_CONSTEXPR RayTracingPipelineInterfaceCreateInfoKHR(
74263       RayTracingPipelineInterfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74264 
RayTracingPipelineInterfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR74265     RayTracingPipelineInterfaceCreateInfoKHR( VkRayTracingPipelineInterfaceCreateInfoKHR const & rhs )
74266       VULKAN_HPP_NOEXCEPT
74267       : RayTracingPipelineInterfaceCreateInfoKHR(
74268           *reinterpret_cast<RayTracingPipelineInterfaceCreateInfoKHR const *>( &rhs ) )
74269     {}
74270 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
74271 
74272     RayTracingPipelineInterfaceCreateInfoKHR &
74273       operator=( RayTracingPipelineInterfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74274 
74275     RayTracingPipelineInterfaceCreateInfoKHR &
operator =VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR74276       operator=( VkRayTracingPipelineInterfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
74277     {
74278       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR const *>( &rhs );
74279       return *this;
74280     }
74281 
74282 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
74283     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineInterfaceCreateInfoKHR &
setPNextVULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR74284                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
74285     {
74286       pNext = pNext_;
74287       return *this;
74288     }
74289 
74290     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineInterfaceCreateInfoKHR &
setMaxPipelineRayPayloadSizeVULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR74291                             setMaxPipelineRayPayloadSize( uint32_t maxPipelineRayPayloadSize_ ) VULKAN_HPP_NOEXCEPT
74292     {
74293       maxPipelineRayPayloadSize = maxPipelineRayPayloadSize_;
74294       return *this;
74295     }
74296 
74297     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineInterfaceCreateInfoKHR &
setMaxPipelineRayHitAttributeSizeVULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR74298       setMaxPipelineRayHitAttributeSize( uint32_t maxPipelineRayHitAttributeSize_ ) VULKAN_HPP_NOEXCEPT
74299     {
74300       maxPipelineRayHitAttributeSize = maxPipelineRayHitAttributeSize_;
74301       return *this;
74302     }
74303 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
74304 
operator VkRayTracingPipelineInterfaceCreateInfoKHR const&VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR74305     explicit operator VkRayTracingPipelineInterfaceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
74306     {
74307       return *reinterpret_cast<const VkRayTracingPipelineInterfaceCreateInfoKHR *>( this );
74308     }
74309 
operator VkRayTracingPipelineInterfaceCreateInfoKHR&VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR74310     explicit operator VkRayTracingPipelineInterfaceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
74311     {
74312       return *reinterpret_cast<VkRayTracingPipelineInterfaceCreateInfoKHR *>( this );
74313     }
74314 
74315 #if 14 <= VULKAN_HPP_CPP_VERSION
74316     auto
74317 #else
74318     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, uint32_t const &>
74319 #endif
reflectVULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR74320       reflect() const VULKAN_HPP_NOEXCEPT
74321     {
74322       return std::tie( sType, pNext, maxPipelineRayPayloadSize, maxPipelineRayHitAttributeSize );
74323     }
74324 
74325 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
74326     auto operator<=>( RayTracingPipelineInterfaceCreateInfoKHR const & ) const = default;
74327 #else
operator ==VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR74328     bool operator==( RayTracingPipelineInterfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
74329     {
74330       return this->reflect() == rhs.reflect();
74331     }
74332 
operator !=VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR74333     bool operator!=( RayTracingPipelineInterfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
74334     {
74335       return this->reflect() != rhs.reflect();
74336     }
74337 #endif
74338 
74339   public:
74340     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRayTracingPipelineInterfaceCreateInfoKHR;
74341     const void *                        pNext = {};
74342     uint32_t                            maxPipelineRayPayloadSize      = {};
74343     uint32_t                            maxPipelineRayHitAttributeSize = {};
74344   };
74345   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR ) ==
74346                               sizeof( VkRayTracingPipelineInterfaceCreateInfoKHR ),
74347                             "struct and wrapper have different size!" );
74348   VULKAN_HPP_STATIC_ASSERT(
74349     std::is_standard_layout<VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR>::value,
74350     "struct wrapper is not a standard layout!" );
74351   VULKAN_HPP_STATIC_ASSERT(
74352     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR>::value,
74353     "RayTracingPipelineInterfaceCreateInfoKHR is not nothrow_move_constructible!" );
74354 
74355   template <>
74356   struct CppType<StructureType, StructureType::eRayTracingPipelineInterfaceCreateInfoKHR>
74357   {
74358     using Type = RayTracingPipelineInterfaceCreateInfoKHR;
74359   };
74360 
74361   struct RayTracingPipelineCreateInfoKHR
74362   {
74363     using NativeType = VkRayTracingPipelineCreateInfoKHR;
74364 
74365     static const bool                                  allowDuplicate = false;
74366     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRayTracingPipelineCreateInfoKHR;
74367 
74368 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RayTracingPipelineCreateInfoKHRVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR74369     VULKAN_HPP_CONSTEXPR RayTracingPipelineCreateInfoKHR(
74370       VULKAN_HPP_NAMESPACE::PipelineCreateFlags                              flags_                        = {},
74371       uint32_t                                                               stageCount_                   = {},
74372       const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo *            pStages_                      = {},
74373       uint32_t                                                               groupCount_                   = {},
74374       const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR *       pGroups_                      = {},
74375       uint32_t                                                               maxPipelineRayRecursionDepth_ = {},
74376       const VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR *             pLibraryInfo_                 = {},
74377       const VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR * pLibraryInterface_            = {},
74378       const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo *           pDynamicState_                = {},
74379       VULKAN_HPP_NAMESPACE::PipelineLayout                                   layout_                       = {},
74380       VULKAN_HPP_NAMESPACE::Pipeline                                         basePipelineHandle_           = {},
74381       int32_t basePipelineIndex_ = {} ) VULKAN_HPP_NOEXCEPT
74382       : flags( flags_ )
74383       , stageCount( stageCount_ )
74384       , pStages( pStages_ )
74385       , groupCount( groupCount_ )
74386       , pGroups( pGroups_ )
74387       , maxPipelineRayRecursionDepth( maxPipelineRayRecursionDepth_ )
74388       , pLibraryInfo( pLibraryInfo_ )
74389       , pLibraryInterface( pLibraryInterface_ )
74390       , pDynamicState( pDynamicState_ )
74391       , layout( layout_ )
74392       , basePipelineHandle( basePipelineHandle_ )
74393       , basePipelineIndex( basePipelineIndex_ )
74394     {}
74395 
74396     VULKAN_HPP_CONSTEXPR
74397       RayTracingPipelineCreateInfoKHR( RayTracingPipelineCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74398 
RayTracingPipelineCreateInfoKHRVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR74399     RayTracingPipelineCreateInfoKHR( VkRayTracingPipelineCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
74400       : RayTracingPipelineCreateInfoKHR( *reinterpret_cast<RayTracingPipelineCreateInfoKHR const *>( &rhs ) )
74401     {}
74402 
74403 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RayTracingPipelineCreateInfoKHRVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR74404     RayTracingPipelineCreateInfoKHR(
74405       VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_,
74406       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo> const &
74407         stages_,
74408       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<
74409         const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR> const & groups_                       = {},
74410       uint32_t                                                                  maxPipelineRayRecursionDepth_ = {},
74411       const VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR *                pLibraryInfo_                 = {},
74412       const VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR *    pLibraryInterface_            = {},
74413       const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo *              pDynamicState_                = {},
74414       VULKAN_HPP_NAMESPACE::PipelineLayout                                      layout_                       = {},
74415       VULKAN_HPP_NAMESPACE::Pipeline                                            basePipelineHandle_           = {},
74416       int32_t                                                                   basePipelineIndex_            = {} )
74417       : flags( flags_ )
74418       , stageCount( static_cast<uint32_t>( stages_.size() ) )
74419       , pStages( stages_.data() )
74420       , groupCount( static_cast<uint32_t>( groups_.size() ) )
74421       , pGroups( groups_.data() )
74422       , maxPipelineRayRecursionDepth( maxPipelineRayRecursionDepth_ )
74423       , pLibraryInfo( pLibraryInfo_ )
74424       , pLibraryInterface( pLibraryInterface_ )
74425       , pDynamicState( pDynamicState_ )
74426       , layout( layout_ )
74427       , basePipelineHandle( basePipelineHandle_ )
74428       , basePipelineIndex( basePipelineIndex_ )
74429     {}
74430 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
74431 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
74432 
74433     RayTracingPipelineCreateInfoKHR &
74434       operator=( RayTracingPipelineCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74435 
operator =VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR74436     RayTracingPipelineCreateInfoKHR & operator=( VkRayTracingPipelineCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
74437     {
74438       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR const *>( &rhs );
74439       return *this;
74440     }
74441 
74442 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR74443     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
74444     {
74445       pNext = pNext_;
74446       return *this;
74447     }
74448 
74449     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR &
setFlagsVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR74450                             setFlags( VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
74451     {
74452       flags = flags_;
74453       return *this;
74454     }
74455 
setStageCountVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR74456     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setStageCount( uint32_t stageCount_ ) VULKAN_HPP_NOEXCEPT
74457     {
74458       stageCount = stageCount_;
74459       return *this;
74460     }
74461 
74462     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR &
setPStagesVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR74463       setPStages( const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * pStages_ ) VULKAN_HPP_NOEXCEPT
74464     {
74465       pStages = pStages_;
74466       return *this;
74467     }
74468 
74469 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setStagesVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR74470     RayTracingPipelineCreateInfoKHR & setStages(
74471       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo> const &
74472         stages_ ) VULKAN_HPP_NOEXCEPT
74473     {
74474       stageCount = static_cast<uint32_t>( stages_.size() );
74475       pStages    = stages_.data();
74476       return *this;
74477     }
74478 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
74479 
setGroupCountVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR74480     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setGroupCount( uint32_t groupCount_ ) VULKAN_HPP_NOEXCEPT
74481     {
74482       groupCount = groupCount_;
74483       return *this;
74484     }
74485 
74486     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR &
setPGroupsVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR74487       setPGroups( const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR * pGroups_ ) VULKAN_HPP_NOEXCEPT
74488     {
74489       pGroups = pGroups_;
74490       return *this;
74491     }
74492 
74493 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
74494     RayTracingPipelineCreateInfoKHR &
setGroupsVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR74495       setGroups( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<
74496                  const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR> const & groups_ ) VULKAN_HPP_NOEXCEPT
74497     {
74498       groupCount = static_cast<uint32_t>( groups_.size() );
74499       pGroups    = groups_.data();
74500       return *this;
74501     }
74502 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
74503 
74504     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR &
setMaxPipelineRayRecursionDepthVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR74505       setMaxPipelineRayRecursionDepth( uint32_t maxPipelineRayRecursionDepth_ ) VULKAN_HPP_NOEXCEPT
74506     {
74507       maxPipelineRayRecursionDepth = maxPipelineRayRecursionDepth_;
74508       return *this;
74509     }
74510 
74511     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR &
setPLibraryInfoVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR74512       setPLibraryInfo( const VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR * pLibraryInfo_ ) VULKAN_HPP_NOEXCEPT
74513     {
74514       pLibraryInfo = pLibraryInfo_;
74515       return *this;
74516     }
74517 
setPLibraryInterfaceVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR74518     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setPLibraryInterface(
74519       const VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR * pLibraryInterface_ ) VULKAN_HPP_NOEXCEPT
74520     {
74521       pLibraryInterface = pLibraryInterface_;
74522       return *this;
74523     }
74524 
setPDynamicStateVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR74525     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setPDynamicState(
74526       const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo * pDynamicState_ ) VULKAN_HPP_NOEXCEPT
74527     {
74528       pDynamicState = pDynamicState_;
74529       return *this;
74530     }
74531 
74532     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR &
setLayoutVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR74533                             setLayout( VULKAN_HPP_NAMESPACE::PipelineLayout layout_ ) VULKAN_HPP_NOEXCEPT
74534     {
74535       layout = layout_;
74536       return *this;
74537     }
74538 
74539     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR &
setBasePipelineHandleVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR74540       setBasePipelineHandle( VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ ) VULKAN_HPP_NOEXCEPT
74541     {
74542       basePipelineHandle = basePipelineHandle_;
74543       return *this;
74544     }
74545 
74546     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR &
setBasePipelineIndexVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR74547                             setBasePipelineIndex( int32_t basePipelineIndex_ ) VULKAN_HPP_NOEXCEPT
74548     {
74549       basePipelineIndex = basePipelineIndex_;
74550       return *this;
74551     }
74552 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
74553 
operator VkRayTracingPipelineCreateInfoKHR const&VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR74554     explicit operator VkRayTracingPipelineCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
74555     {
74556       return *reinterpret_cast<const VkRayTracingPipelineCreateInfoKHR *>( this );
74557     }
74558 
operator VkRayTracingPipelineCreateInfoKHR&VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR74559     explicit operator VkRayTracingPipelineCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
74560     {
74561       return *reinterpret_cast<VkRayTracingPipelineCreateInfoKHR *>( this );
74562     }
74563 
74564 #if 14 <= VULKAN_HPP_CPP_VERSION
74565     auto
74566 #else
74567     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
74568                const void * const &,
74569                VULKAN_HPP_NAMESPACE::PipelineCreateFlags const &,
74570                uint32_t const &,
74571                const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * const &,
74572                uint32_t const &,
74573                const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR * const &,
74574                uint32_t const &,
74575                const VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR * const &,
74576                const VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR * const &,
74577                const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo * const &,
74578                VULKAN_HPP_NAMESPACE::PipelineLayout const &,
74579                VULKAN_HPP_NAMESPACE::Pipeline const &,
74580                int32_t const &>
74581 #endif
reflectVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR74582       reflect() const VULKAN_HPP_NOEXCEPT
74583     {
74584       return std::tie( sType,
74585                        pNext,
74586                        flags,
74587                        stageCount,
74588                        pStages,
74589                        groupCount,
74590                        pGroups,
74591                        maxPipelineRayRecursionDepth,
74592                        pLibraryInfo,
74593                        pLibraryInterface,
74594                        pDynamicState,
74595                        layout,
74596                        basePipelineHandle,
74597                        basePipelineIndex );
74598     }
74599 
74600 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
74601     auto operator<=>( RayTracingPipelineCreateInfoKHR const & ) const = default;
74602 #else
operator ==VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR74603     bool operator==( RayTracingPipelineCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
74604     {
74605       return this->reflect() == rhs.reflect();
74606     }
74607 
operator !=VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR74608     bool operator!=( RayTracingPipelineCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
74609     {
74610       return this->reflect() != rhs.reflect();
74611     }
74612 #endif
74613 
74614   public:
74615     VULKAN_HPP_NAMESPACE::StructureType                         sType = StructureType::eRayTracingPipelineCreateInfoKHR;
74616     const void *                                                pNext = {};
74617     VULKAN_HPP_NAMESPACE::PipelineCreateFlags                   flags = {};
74618     uint32_t                                                    stageCount                              = {};
74619     const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * pStages                                 = {};
74620     uint32_t                                                    groupCount                              = {};
74621     const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR *       pGroups                      = {};
74622     uint32_t                                                               maxPipelineRayRecursionDepth = {};
74623     const VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR *             pLibraryInfo                 = {};
74624     const VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR * pLibraryInterface            = {};
74625     const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo *           pDynamicState                = {};
74626     VULKAN_HPP_NAMESPACE::PipelineLayout                                   layout                       = {};
74627     VULKAN_HPP_NAMESPACE::Pipeline                                         basePipelineHandle           = {};
74628     int32_t                                                                basePipelineIndex            = {};
74629   };
74630   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR ) ==
74631                               sizeof( VkRayTracingPipelineCreateInfoKHR ),
74632                             "struct and wrapper have different size!" );
74633   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR>::value,
74634                             "struct wrapper is not a standard layout!" );
74635   VULKAN_HPP_STATIC_ASSERT(
74636     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR>::value,
74637     "RayTracingPipelineCreateInfoKHR is not nothrow_move_constructible!" );
74638 
74639   template <>
74640   struct CppType<StructureType, StructureType::eRayTracingPipelineCreateInfoKHR>
74641   {
74642     using Type = RayTracingPipelineCreateInfoKHR;
74643   };
74644 
74645   struct RayTracingShaderGroupCreateInfoNV
74646   {
74647     using NativeType = VkRayTracingShaderGroupCreateInfoNV;
74648 
74649     static const bool                                  allowDuplicate = false;
74650     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
74651       StructureType::eRayTracingShaderGroupCreateInfoNV;
74652 
74653 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
74654     VULKAN_HPP_CONSTEXPR
RayTracingShaderGroupCreateInfoNVVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV74655       RayTracingShaderGroupCreateInfoNV( VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR type_ =
74656                                            VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR::eGeneral,
74657                                          uint32_t generalShader_      = {},
74658                                          uint32_t closestHitShader_   = {},
74659                                          uint32_t anyHitShader_       = {},
74660                                          uint32_t intersectionShader_ = {} ) VULKAN_HPP_NOEXCEPT
74661       : type( type_ )
74662       , generalShader( generalShader_ )
74663       , closestHitShader( closestHitShader_ )
74664       , anyHitShader( anyHitShader_ )
74665       , intersectionShader( intersectionShader_ )
74666     {}
74667 
74668     VULKAN_HPP_CONSTEXPR
74669       RayTracingShaderGroupCreateInfoNV( RayTracingShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74670 
RayTracingShaderGroupCreateInfoNVVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV74671     RayTracingShaderGroupCreateInfoNV( VkRayTracingShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
74672       : RayTracingShaderGroupCreateInfoNV( *reinterpret_cast<RayTracingShaderGroupCreateInfoNV const *>( &rhs ) )
74673     {}
74674 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
74675 
74676     RayTracingShaderGroupCreateInfoNV &
74677       operator=( RayTracingShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74678 
operator =VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV74679     RayTracingShaderGroupCreateInfoNV & operator=( VkRayTracingShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
74680     {
74681       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV const *>( &rhs );
74682       return *this;
74683     }
74684 
74685 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV74686     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
74687     {
74688       pNext = pNext_;
74689       return *this;
74690     }
74691 
74692     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV &
setTypeVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV74693                             setType( VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR type_ ) VULKAN_HPP_NOEXCEPT
74694     {
74695       type = type_;
74696       return *this;
74697     }
74698 
74699     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV &
setGeneralShaderVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV74700                             setGeneralShader( uint32_t generalShader_ ) VULKAN_HPP_NOEXCEPT
74701     {
74702       generalShader = generalShader_;
74703       return *this;
74704     }
74705 
74706     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV &
setClosestHitShaderVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV74707                             setClosestHitShader( uint32_t closestHitShader_ ) VULKAN_HPP_NOEXCEPT
74708     {
74709       closestHitShader = closestHitShader_;
74710       return *this;
74711     }
74712 
74713     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV &
setAnyHitShaderVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV74714                             setAnyHitShader( uint32_t anyHitShader_ ) VULKAN_HPP_NOEXCEPT
74715     {
74716       anyHitShader = anyHitShader_;
74717       return *this;
74718     }
74719 
74720     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV &
setIntersectionShaderVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV74721                             setIntersectionShader( uint32_t intersectionShader_ ) VULKAN_HPP_NOEXCEPT
74722     {
74723       intersectionShader = intersectionShader_;
74724       return *this;
74725     }
74726 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
74727 
operator VkRayTracingShaderGroupCreateInfoNV const&VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV74728     explicit operator VkRayTracingShaderGroupCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
74729     {
74730       return *reinterpret_cast<const VkRayTracingShaderGroupCreateInfoNV *>( this );
74731     }
74732 
operator VkRayTracingShaderGroupCreateInfoNV&VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV74733     explicit operator VkRayTracingShaderGroupCreateInfoNV &() VULKAN_HPP_NOEXCEPT
74734     {
74735       return *reinterpret_cast<VkRayTracingShaderGroupCreateInfoNV *>( this );
74736     }
74737 
74738 #if 14 <= VULKAN_HPP_CPP_VERSION
74739     auto
74740 #else
74741     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
74742                const void * const &,
74743                VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR const &,
74744                uint32_t const &,
74745                uint32_t const &,
74746                uint32_t const &,
74747                uint32_t const &>
74748 #endif
reflectVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV74749       reflect() const VULKAN_HPP_NOEXCEPT
74750     {
74751       return std::tie( sType, pNext, type, generalShader, closestHitShader, anyHitShader, intersectionShader );
74752     }
74753 
74754 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
74755     auto operator<=>( RayTracingShaderGroupCreateInfoNV const & ) const = default;
74756 #else
operator ==VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV74757     bool operator==( RayTracingShaderGroupCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
74758     {
74759       return this->reflect() == rhs.reflect();
74760     }
74761 
operator !=VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV74762     bool operator!=( RayTracingShaderGroupCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
74763     {
74764       return this->reflect() != rhs.reflect();
74765     }
74766 #endif
74767 
74768   public:
74769     VULKAN_HPP_NAMESPACE::StructureType                sType = StructureType::eRayTracingShaderGroupCreateInfoNV;
74770     const void *                                       pNext = {};
74771     VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR type =
74772       VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR::eGeneral;
74773     uint32_t generalShader      = {};
74774     uint32_t closestHitShader   = {};
74775     uint32_t anyHitShader       = {};
74776     uint32_t intersectionShader = {};
74777   };
74778   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV ) ==
74779                               sizeof( VkRayTracingShaderGroupCreateInfoNV ),
74780                             "struct and wrapper have different size!" );
74781   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV>::value,
74782                             "struct wrapper is not a standard layout!" );
74783   VULKAN_HPP_STATIC_ASSERT(
74784     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV>::value,
74785     "RayTracingShaderGroupCreateInfoNV is not nothrow_move_constructible!" );
74786 
74787   template <>
74788   struct CppType<StructureType, StructureType::eRayTracingShaderGroupCreateInfoNV>
74789   {
74790     using Type = RayTracingShaderGroupCreateInfoNV;
74791   };
74792 
74793   struct RayTracingPipelineCreateInfoNV
74794   {
74795     using NativeType = VkRayTracingPipelineCreateInfoNV;
74796 
74797     static const bool                                  allowDuplicate = false;
74798     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRayTracingPipelineCreateInfoNV;
74799 
74800 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
74801     VULKAN_HPP_CONSTEXPR
RayTracingPipelineCreateInfoNVVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV74802       RayTracingPipelineCreateInfoNV( VULKAN_HPP_NAMESPACE::PipelineCreateFlags                       flags_      = {},
74803                                       uint32_t                                                        stageCount_ = {},
74804                                       const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo *     pStages_    = {},
74805                                       uint32_t                                                        groupCount_ = {},
74806                                       const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV * pGroups_    = {},
74807                                       uint32_t                             maxRecursionDepth_                     = {},
74808                                       VULKAN_HPP_NAMESPACE::PipelineLayout layout_                                = {},
74809                                       VULKAN_HPP_NAMESPACE::Pipeline       basePipelineHandle_                    = {},
74810                                       int32_t                              basePipelineIndex_ = {} ) VULKAN_HPP_NOEXCEPT
74811       : flags( flags_ )
74812       , stageCount( stageCount_ )
74813       , pStages( pStages_ )
74814       , groupCount( groupCount_ )
74815       , pGroups( pGroups_ )
74816       , maxRecursionDepth( maxRecursionDepth_ )
74817       , layout( layout_ )
74818       , basePipelineHandle( basePipelineHandle_ )
74819       , basePipelineIndex( basePipelineIndex_ )
74820     {}
74821 
74822     VULKAN_HPP_CONSTEXPR
74823       RayTracingPipelineCreateInfoNV( RayTracingPipelineCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74824 
RayTracingPipelineCreateInfoNVVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV74825     RayTracingPipelineCreateInfoNV( VkRayTracingPipelineCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
74826       : RayTracingPipelineCreateInfoNV( *reinterpret_cast<RayTracingPipelineCreateInfoNV const *>( &rhs ) )
74827     {}
74828 
74829 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RayTracingPipelineCreateInfoNVVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV74830     RayTracingPipelineCreateInfoNV(
74831       VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_,
74832       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo> const &
74833         stages_,
74834       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<
74835         const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV> const & groups_             = {},
74836       uint32_t                                                                 maxRecursionDepth_  = {},
74837       VULKAN_HPP_NAMESPACE::PipelineLayout                                     layout_             = {},
74838       VULKAN_HPP_NAMESPACE::Pipeline                                           basePipelineHandle_ = {},
74839       int32_t                                                                  basePipelineIndex_  = {} )
74840       : flags( flags_ )
74841       , stageCount( static_cast<uint32_t>( stages_.size() ) )
74842       , pStages( stages_.data() )
74843       , groupCount( static_cast<uint32_t>( groups_.size() ) )
74844       , pGroups( groups_.data() )
74845       , maxRecursionDepth( maxRecursionDepth_ )
74846       , layout( layout_ )
74847       , basePipelineHandle( basePipelineHandle_ )
74848       , basePipelineIndex( basePipelineIndex_ )
74849     {}
74850 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
74851 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
74852 
74853     RayTracingPipelineCreateInfoNV &
74854       operator=( RayTracingPipelineCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74855 
operator =VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV74856     RayTracingPipelineCreateInfoNV & operator=( VkRayTracingPipelineCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
74857     {
74858       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV const *>( &rhs );
74859       return *this;
74860     }
74861 
74862 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV74863     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
74864     {
74865       pNext = pNext_;
74866       return *this;
74867     }
74868 
74869     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV &
setFlagsVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV74870                             setFlags( VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
74871     {
74872       flags = flags_;
74873       return *this;
74874     }
74875 
setStageCountVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV74876     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & setStageCount( uint32_t stageCount_ ) VULKAN_HPP_NOEXCEPT
74877     {
74878       stageCount = stageCount_;
74879       return *this;
74880     }
74881 
74882     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV &
setPStagesVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV74883       setPStages( const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * pStages_ ) VULKAN_HPP_NOEXCEPT
74884     {
74885       pStages = pStages_;
74886       return *this;
74887     }
74888 
74889 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setStagesVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV74890     RayTracingPipelineCreateInfoNV & setStages(
74891       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo> const &
74892         stages_ ) VULKAN_HPP_NOEXCEPT
74893     {
74894       stageCount = static_cast<uint32_t>( stages_.size() );
74895       pStages    = stages_.data();
74896       return *this;
74897     }
74898 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
74899 
setGroupCountVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV74900     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & setGroupCount( uint32_t groupCount_ ) VULKAN_HPP_NOEXCEPT
74901     {
74902       groupCount = groupCount_;
74903       return *this;
74904     }
74905 
74906     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV &
setPGroupsVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV74907       setPGroups( const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV * pGroups_ ) VULKAN_HPP_NOEXCEPT
74908     {
74909       pGroups = pGroups_;
74910       return *this;
74911     }
74912 
74913 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
74914     RayTracingPipelineCreateInfoNV &
setGroupsVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV74915       setGroups( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<
74916                  const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV> const & groups_ ) VULKAN_HPP_NOEXCEPT
74917     {
74918       groupCount = static_cast<uint32_t>( groups_.size() );
74919       pGroups    = groups_.data();
74920       return *this;
74921     }
74922 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
74923 
74924     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV &
setMaxRecursionDepthVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV74925                             setMaxRecursionDepth( uint32_t maxRecursionDepth_ ) VULKAN_HPP_NOEXCEPT
74926     {
74927       maxRecursionDepth = maxRecursionDepth_;
74928       return *this;
74929     }
74930 
74931     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV &
setLayoutVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV74932                             setLayout( VULKAN_HPP_NAMESPACE::PipelineLayout layout_ ) VULKAN_HPP_NOEXCEPT
74933     {
74934       layout = layout_;
74935       return *this;
74936     }
74937 
74938     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV &
setBasePipelineHandleVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV74939       setBasePipelineHandle( VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ ) VULKAN_HPP_NOEXCEPT
74940     {
74941       basePipelineHandle = basePipelineHandle_;
74942       return *this;
74943     }
74944 
74945     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV &
setBasePipelineIndexVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV74946                             setBasePipelineIndex( int32_t basePipelineIndex_ ) VULKAN_HPP_NOEXCEPT
74947     {
74948       basePipelineIndex = basePipelineIndex_;
74949       return *this;
74950     }
74951 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
74952 
operator VkRayTracingPipelineCreateInfoNV const&VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV74953     explicit operator VkRayTracingPipelineCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
74954     {
74955       return *reinterpret_cast<const VkRayTracingPipelineCreateInfoNV *>( this );
74956     }
74957 
operator VkRayTracingPipelineCreateInfoNV&VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV74958     explicit operator VkRayTracingPipelineCreateInfoNV &() VULKAN_HPP_NOEXCEPT
74959     {
74960       return *reinterpret_cast<VkRayTracingPipelineCreateInfoNV *>( this );
74961     }
74962 
74963 #if 14 <= VULKAN_HPP_CPP_VERSION
74964     auto
74965 #else
74966     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
74967                const void * const &,
74968                VULKAN_HPP_NAMESPACE::PipelineCreateFlags const &,
74969                uint32_t const &,
74970                const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * const &,
74971                uint32_t const &,
74972                const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV * const &,
74973                uint32_t const &,
74974                VULKAN_HPP_NAMESPACE::PipelineLayout const &,
74975                VULKAN_HPP_NAMESPACE::Pipeline const &,
74976                int32_t const &>
74977 #endif
reflectVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV74978       reflect() const VULKAN_HPP_NOEXCEPT
74979     {
74980       return std::tie( sType,
74981                        pNext,
74982                        flags,
74983                        stageCount,
74984                        pStages,
74985                        groupCount,
74986                        pGroups,
74987                        maxRecursionDepth,
74988                        layout,
74989                        basePipelineHandle,
74990                        basePipelineIndex );
74991     }
74992 
74993 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
74994     auto operator<=>( RayTracingPipelineCreateInfoNV const & ) const = default;
74995 #else
operator ==VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV74996     bool operator==( RayTracingPipelineCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
74997     {
74998       return this->reflect() == rhs.reflect();
74999     }
75000 
operator !=VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV75001     bool operator!=( RayTracingPipelineCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
75002     {
75003       return this->reflect() != rhs.reflect();
75004     }
75005 #endif
75006 
75007   public:
75008     VULKAN_HPP_NAMESPACE::StructureType                         sType = StructureType::eRayTracingPipelineCreateInfoNV;
75009     const void *                                                pNext = {};
75010     VULKAN_HPP_NAMESPACE::PipelineCreateFlags                   flags = {};
75011     uint32_t                                                    stageCount             = {};
75012     const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * pStages                = {};
75013     uint32_t                                                    groupCount             = {};
75014     const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV * pGroups            = {};
75015     uint32_t                                                        maxRecursionDepth  = {};
75016     VULKAN_HPP_NAMESPACE::PipelineLayout                            layout             = {};
75017     VULKAN_HPP_NAMESPACE::Pipeline                                  basePipelineHandle = {};
75018     int32_t                                                         basePipelineIndex  = {};
75019   };
75020   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV ) ==
75021                               sizeof( VkRayTracingPipelineCreateInfoNV ),
75022                             "struct and wrapper have different size!" );
75023   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV>::value,
75024                             "struct wrapper is not a standard layout!" );
75025   VULKAN_HPP_STATIC_ASSERT(
75026     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV>::value,
75027     "RayTracingPipelineCreateInfoNV is not nothrow_move_constructible!" );
75028 
75029   template <>
75030   struct CppType<StructureType, StructureType::eRayTracingPipelineCreateInfoNV>
75031   {
75032     using Type = RayTracingPipelineCreateInfoNV;
75033   };
75034 
75035   struct RefreshCycleDurationGOOGLE
75036   {
75037     using NativeType = VkRefreshCycleDurationGOOGLE;
75038 
75039 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RefreshCycleDurationGOOGLEVULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE75040     VULKAN_HPP_CONSTEXPR RefreshCycleDurationGOOGLE( uint64_t refreshDuration_ = {} ) VULKAN_HPP_NOEXCEPT
75041       : refreshDuration( refreshDuration_ )
75042     {}
75043 
75044     VULKAN_HPP_CONSTEXPR
75045       RefreshCycleDurationGOOGLE( RefreshCycleDurationGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75046 
RefreshCycleDurationGOOGLEVULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE75047     RefreshCycleDurationGOOGLE( VkRefreshCycleDurationGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT
75048       : RefreshCycleDurationGOOGLE( *reinterpret_cast<RefreshCycleDurationGOOGLE const *>( &rhs ) )
75049     {}
75050 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
75051 
75052     RefreshCycleDurationGOOGLE & operator=( RefreshCycleDurationGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75053 
operator =VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE75054     RefreshCycleDurationGOOGLE & operator=( VkRefreshCycleDurationGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT
75055     {
75056       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE const *>( &rhs );
75057       return *this;
75058     }
75059 
operator VkRefreshCycleDurationGOOGLE const&VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE75060     explicit operator VkRefreshCycleDurationGOOGLE const &() const VULKAN_HPP_NOEXCEPT
75061     {
75062       return *reinterpret_cast<const VkRefreshCycleDurationGOOGLE *>( this );
75063     }
75064 
operator VkRefreshCycleDurationGOOGLE&VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE75065     explicit operator VkRefreshCycleDurationGOOGLE &() VULKAN_HPP_NOEXCEPT
75066     {
75067       return *reinterpret_cast<VkRefreshCycleDurationGOOGLE *>( this );
75068     }
75069 
75070 #if 14 <= VULKAN_HPP_CPP_VERSION
75071     auto
75072 #else
75073     std::tuple<uint64_t const &>
75074 #endif
reflectVULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE75075       reflect() const VULKAN_HPP_NOEXCEPT
75076     {
75077       return std::tie( refreshDuration );
75078     }
75079 
75080 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
75081     auto operator<=>( RefreshCycleDurationGOOGLE const & ) const = default;
75082 #else
operator ==VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE75083     bool operator==( RefreshCycleDurationGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT
75084     {
75085       return this->reflect() == rhs.reflect();
75086     }
75087 
operator !=VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE75088     bool operator!=( RefreshCycleDurationGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT
75089     {
75090       return this->reflect() != rhs.reflect();
75091     }
75092 #endif
75093 
75094   public:
75095     uint64_t refreshDuration = {};
75096   };
75097   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE ) ==
75098                               sizeof( VkRefreshCycleDurationGOOGLE ),
75099                             "struct and wrapper have different size!" );
75100   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE>::value,
75101                             "struct wrapper is not a standard layout!" );
75102   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE>::value,
75103                             "RefreshCycleDurationGOOGLE is not nothrow_move_constructible!" );
75104 
75105   struct RenderPassAttachmentBeginInfo
75106   {
75107     using NativeType = VkRenderPassAttachmentBeginInfo;
75108 
75109     static const bool                                  allowDuplicate = false;
75110     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderPassAttachmentBeginInfo;
75111 
75112 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
75113     VULKAN_HPP_CONSTEXPR
RenderPassAttachmentBeginInfoVULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo75114       RenderPassAttachmentBeginInfo( uint32_t                                attachmentCount_ = {},
75115                                      const VULKAN_HPP_NAMESPACE::ImageView * pAttachments_    = {} ) VULKAN_HPP_NOEXCEPT
75116       : attachmentCount( attachmentCount_ )
75117       , pAttachments( pAttachments_ )
75118     {}
75119 
75120     VULKAN_HPP_CONSTEXPR
75121       RenderPassAttachmentBeginInfo( RenderPassAttachmentBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75122 
RenderPassAttachmentBeginInfoVULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo75123     RenderPassAttachmentBeginInfo( VkRenderPassAttachmentBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
75124       : RenderPassAttachmentBeginInfo( *reinterpret_cast<RenderPassAttachmentBeginInfo const *>( &rhs ) )
75125     {}
75126 
75127 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderPassAttachmentBeginInfoVULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo75128     RenderPassAttachmentBeginInfo(
75129       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageView> const & attachments_ )
75130       : attachmentCount( static_cast<uint32_t>( attachments_.size() ) ), pAttachments( attachments_.data() )
75131     {}
75132 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
75133 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
75134 
75135     RenderPassAttachmentBeginInfo &
75136       operator=( RenderPassAttachmentBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75137 
operator =VULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo75138     RenderPassAttachmentBeginInfo & operator=( VkRenderPassAttachmentBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
75139     {
75140       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo const *>( &rhs );
75141       return *this;
75142     }
75143 
75144 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo75145     VULKAN_HPP_CONSTEXPR_14 RenderPassAttachmentBeginInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
75146     {
75147       pNext = pNext_;
75148       return *this;
75149     }
75150 
75151     VULKAN_HPP_CONSTEXPR_14 RenderPassAttachmentBeginInfo &
setAttachmentCountVULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo75152                             setAttachmentCount( uint32_t attachmentCount_ ) VULKAN_HPP_NOEXCEPT
75153     {
75154       attachmentCount = attachmentCount_;
75155       return *this;
75156     }
75157 
75158     VULKAN_HPP_CONSTEXPR_14 RenderPassAttachmentBeginInfo &
setPAttachmentsVULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo75159                             setPAttachments( const VULKAN_HPP_NAMESPACE::ImageView * pAttachments_ ) VULKAN_HPP_NOEXCEPT
75160     {
75161       pAttachments = pAttachments_;
75162       return *this;
75163     }
75164 
75165 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAttachmentsVULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo75166     RenderPassAttachmentBeginInfo & setAttachments(
75167       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageView> const & attachments_ )
75168       VULKAN_HPP_NOEXCEPT
75169     {
75170       attachmentCount = static_cast<uint32_t>( attachments_.size() );
75171       pAttachments    = attachments_.data();
75172       return *this;
75173     }
75174 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
75175 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
75176 
operator VkRenderPassAttachmentBeginInfo const&VULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo75177     explicit operator VkRenderPassAttachmentBeginInfo const &() const VULKAN_HPP_NOEXCEPT
75178     {
75179       return *reinterpret_cast<const VkRenderPassAttachmentBeginInfo *>( this );
75180     }
75181 
operator VkRenderPassAttachmentBeginInfo&VULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo75182     explicit operator VkRenderPassAttachmentBeginInfo &() VULKAN_HPP_NOEXCEPT
75183     {
75184       return *reinterpret_cast<VkRenderPassAttachmentBeginInfo *>( this );
75185     }
75186 
75187 #if 14 <= VULKAN_HPP_CPP_VERSION
75188     auto
75189 #else
75190     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
75191                const void * const &,
75192                uint32_t const &,
75193                const VULKAN_HPP_NAMESPACE::ImageView * const &>
75194 #endif
reflectVULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo75195       reflect() const VULKAN_HPP_NOEXCEPT
75196     {
75197       return std::tie( sType, pNext, attachmentCount, pAttachments );
75198     }
75199 
75200 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
75201     auto operator<=>( RenderPassAttachmentBeginInfo const & ) const = default;
75202 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo75203     bool operator==( RenderPassAttachmentBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
75204     {
75205       return this->reflect() == rhs.reflect();
75206     }
75207 
operator !=VULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo75208     bool operator!=( RenderPassAttachmentBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
75209     {
75210       return this->reflect() != rhs.reflect();
75211     }
75212 #endif
75213 
75214   public:
75215     VULKAN_HPP_NAMESPACE::StructureType     sType           = StructureType::eRenderPassAttachmentBeginInfo;
75216     const void *                            pNext           = {};
75217     uint32_t                                attachmentCount = {};
75218     const VULKAN_HPP_NAMESPACE::ImageView * pAttachments    = {};
75219   };
75220   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo ) ==
75221                               sizeof( VkRenderPassAttachmentBeginInfo ),
75222                             "struct and wrapper have different size!" );
75223   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo>::value,
75224                             "struct wrapper is not a standard layout!" );
75225   VULKAN_HPP_STATIC_ASSERT(
75226     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo>::value,
75227     "RenderPassAttachmentBeginInfo is not nothrow_move_constructible!" );
75228 
75229   template <>
75230   struct CppType<StructureType, StructureType::eRenderPassAttachmentBeginInfo>
75231   {
75232     using Type = RenderPassAttachmentBeginInfo;
75233   };
75234   using RenderPassAttachmentBeginInfoKHR = RenderPassAttachmentBeginInfo;
75235 
75236   struct RenderPassBeginInfo
75237   {
75238     using NativeType = VkRenderPassBeginInfo;
75239 
75240     static const bool                                  allowDuplicate = false;
75241     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderPassBeginInfo;
75242 
75243 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
75244     VULKAN_HPP_CONSTEXPR_14
RenderPassBeginInfoVULKAN_HPP_NAMESPACE::RenderPassBeginInfo75245       RenderPassBeginInfo( VULKAN_HPP_NAMESPACE::RenderPass         renderPass_      = {},
75246                            VULKAN_HPP_NAMESPACE::Framebuffer        framebuffer_     = {},
75247                            VULKAN_HPP_NAMESPACE::Rect2D             renderArea_      = {},
75248                            uint32_t                                 clearValueCount_ = {},
75249                            const VULKAN_HPP_NAMESPACE::ClearValue * pClearValues_    = {} ) VULKAN_HPP_NOEXCEPT
75250       : renderPass( renderPass_ )
75251       , framebuffer( framebuffer_ )
75252       , renderArea( renderArea_ )
75253       , clearValueCount( clearValueCount_ )
75254       , pClearValues( pClearValues_ )
75255     {}
75256 
75257     VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo( RenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75258 
RenderPassBeginInfoVULKAN_HPP_NAMESPACE::RenderPassBeginInfo75259     RenderPassBeginInfo( VkRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
75260       : RenderPassBeginInfo( *reinterpret_cast<RenderPassBeginInfo const *>( &rhs ) )
75261     {}
75262 
75263 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderPassBeginInfoVULKAN_HPP_NAMESPACE::RenderPassBeginInfo75264     RenderPassBeginInfo(
75265       VULKAN_HPP_NAMESPACE::RenderPass                                                              renderPass_,
75266       VULKAN_HPP_NAMESPACE::Framebuffer                                                             framebuffer_,
75267       VULKAN_HPP_NAMESPACE::Rect2D                                                                  renderArea_,
75268       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ClearValue> const & clearValues_ )
75269       : renderPass( renderPass_ )
75270       , framebuffer( framebuffer_ )
75271       , renderArea( renderArea_ )
75272       , clearValueCount( static_cast<uint32_t>( clearValues_.size() ) )
75273       , pClearValues( clearValues_.data() )
75274     {}
75275 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
75276 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
75277 
75278     RenderPassBeginInfo & operator=( RenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75279 
operator =VULKAN_HPP_NAMESPACE::RenderPassBeginInfo75280     RenderPassBeginInfo & operator=( VkRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
75281     {
75282       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassBeginInfo const *>( &rhs );
75283       return *this;
75284     }
75285 
75286 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassBeginInfo75287     VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
75288     {
75289       pNext = pNext_;
75290       return *this;
75291     }
75292 
75293     VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo &
setRenderPassVULKAN_HPP_NAMESPACE::RenderPassBeginInfo75294                             setRenderPass( VULKAN_HPP_NAMESPACE::RenderPass renderPass_ ) VULKAN_HPP_NOEXCEPT
75295     {
75296       renderPass = renderPass_;
75297       return *this;
75298     }
75299 
75300     VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo &
setFramebufferVULKAN_HPP_NAMESPACE::RenderPassBeginInfo75301                             setFramebuffer( VULKAN_HPP_NAMESPACE::Framebuffer framebuffer_ ) VULKAN_HPP_NOEXCEPT
75302     {
75303       framebuffer = framebuffer_;
75304       return *this;
75305     }
75306 
75307     VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo &
setRenderAreaVULKAN_HPP_NAMESPACE::RenderPassBeginInfo75308                             setRenderArea( VULKAN_HPP_NAMESPACE::Rect2D const & renderArea_ ) VULKAN_HPP_NOEXCEPT
75309     {
75310       renderArea = renderArea_;
75311       return *this;
75312     }
75313 
setClearValueCountVULKAN_HPP_NAMESPACE::RenderPassBeginInfo75314     VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo & setClearValueCount( uint32_t clearValueCount_ ) VULKAN_HPP_NOEXCEPT
75315     {
75316       clearValueCount = clearValueCount_;
75317       return *this;
75318     }
75319 
75320     VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo &
setPClearValuesVULKAN_HPP_NAMESPACE::RenderPassBeginInfo75321       setPClearValues( const VULKAN_HPP_NAMESPACE::ClearValue * pClearValues_ ) VULKAN_HPP_NOEXCEPT
75322     {
75323       pClearValues = pClearValues_;
75324       return *this;
75325     }
75326 
75327 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setClearValuesVULKAN_HPP_NAMESPACE::RenderPassBeginInfo75328     RenderPassBeginInfo & setClearValues(
75329       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ClearValue> const & clearValues_ )
75330       VULKAN_HPP_NOEXCEPT
75331     {
75332       clearValueCount = static_cast<uint32_t>( clearValues_.size() );
75333       pClearValues    = clearValues_.data();
75334       return *this;
75335     }
75336 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
75337 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
75338 
operator VkRenderPassBeginInfo const&VULKAN_HPP_NAMESPACE::RenderPassBeginInfo75339     explicit operator VkRenderPassBeginInfo const &() const VULKAN_HPP_NOEXCEPT
75340     {
75341       return *reinterpret_cast<const VkRenderPassBeginInfo *>( this );
75342     }
75343 
operator VkRenderPassBeginInfo&VULKAN_HPP_NAMESPACE::RenderPassBeginInfo75344     explicit operator VkRenderPassBeginInfo &() VULKAN_HPP_NOEXCEPT
75345     {
75346       return *reinterpret_cast<VkRenderPassBeginInfo *>( this );
75347     }
75348 
75349 #if 14 <= VULKAN_HPP_CPP_VERSION
75350     auto
75351 #else
75352     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
75353                const void * const &,
75354                VULKAN_HPP_NAMESPACE::RenderPass const &,
75355                VULKAN_HPP_NAMESPACE::Framebuffer const &,
75356                VULKAN_HPP_NAMESPACE::Rect2D const &,
75357                uint32_t const &,
75358                const VULKAN_HPP_NAMESPACE::ClearValue * const &>
75359 #endif
reflectVULKAN_HPP_NAMESPACE::RenderPassBeginInfo75360       reflect() const VULKAN_HPP_NOEXCEPT
75361     {
75362       return std::tie( sType, pNext, renderPass, framebuffer, renderArea, clearValueCount, pClearValues );
75363     }
75364 
75365 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
75366     auto operator<=>( RenderPassBeginInfo const & ) const = default;
75367 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassBeginInfo75368     bool operator==( RenderPassBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
75369     {
75370       return this->reflect() == rhs.reflect();
75371     }
75372 
operator !=VULKAN_HPP_NAMESPACE::RenderPassBeginInfo75373     bool operator!=( RenderPassBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
75374     {
75375       return this->reflect() != rhs.reflect();
75376     }
75377 #endif
75378 
75379   public:
75380     VULKAN_HPP_NAMESPACE::StructureType      sType           = StructureType::eRenderPassBeginInfo;
75381     const void *                             pNext           = {};
75382     VULKAN_HPP_NAMESPACE::RenderPass         renderPass      = {};
75383     VULKAN_HPP_NAMESPACE::Framebuffer        framebuffer     = {};
75384     VULKAN_HPP_NAMESPACE::Rect2D             renderArea      = {};
75385     uint32_t                                 clearValueCount = {};
75386     const VULKAN_HPP_NAMESPACE::ClearValue * pClearValues    = {};
75387   };
75388   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassBeginInfo ) == sizeof( VkRenderPassBeginInfo ),
75389                             "struct and wrapper have different size!" );
75390   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::RenderPassBeginInfo>::value,
75391                             "struct wrapper is not a standard layout!" );
75392   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::RenderPassBeginInfo>::value,
75393                             "RenderPassBeginInfo is not nothrow_move_constructible!" );
75394 
75395   template <>
75396   struct CppType<StructureType, StructureType::eRenderPassBeginInfo>
75397   {
75398     using Type = RenderPassBeginInfo;
75399   };
75400 
75401   struct SubpassDescription
75402   {
75403     using NativeType = VkSubpassDescription;
75404 
75405 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubpassDescriptionVULKAN_HPP_NAMESPACE::SubpassDescription75406     VULKAN_HPP_CONSTEXPR SubpassDescription(
75407       VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags_       = {},
75408       VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics,
75409       uint32_t                                inputAttachmentCount_              = {},
75410       const VULKAN_HPP_NAMESPACE::AttachmentReference * pInputAttachments_       = {},
75411       uint32_t                                          colorAttachmentCount_    = {},
75412       const VULKAN_HPP_NAMESPACE::AttachmentReference * pColorAttachments_       = {},
75413       const VULKAN_HPP_NAMESPACE::AttachmentReference * pResolveAttachments_     = {},
75414       const VULKAN_HPP_NAMESPACE::AttachmentReference * pDepthStencilAttachment_ = {},
75415       uint32_t                                          preserveAttachmentCount_ = {},
75416       const uint32_t *                                  pPreserveAttachments_    = {} ) VULKAN_HPP_NOEXCEPT
75417       : flags( flags_ )
75418       , pipelineBindPoint( pipelineBindPoint_ )
75419       , inputAttachmentCount( inputAttachmentCount_ )
75420       , pInputAttachments( pInputAttachments_ )
75421       , colorAttachmentCount( colorAttachmentCount_ )
75422       , pColorAttachments( pColorAttachments_ )
75423       , pResolveAttachments( pResolveAttachments_ )
75424       , pDepthStencilAttachment( pDepthStencilAttachment_ )
75425       , preserveAttachmentCount( preserveAttachmentCount_ )
75426       , pPreserveAttachments( pPreserveAttachments_ )
75427     {}
75428 
75429     VULKAN_HPP_CONSTEXPR SubpassDescription( SubpassDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75430 
SubpassDescriptionVULKAN_HPP_NAMESPACE::SubpassDescription75431     SubpassDescription( VkSubpassDescription const & rhs ) VULKAN_HPP_NOEXCEPT
75432       : SubpassDescription( *reinterpret_cast<SubpassDescription const *>( &rhs ) )
75433     {}
75434 
75435 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SubpassDescriptionVULKAN_HPP_NAMESPACE::SubpassDescription75436     SubpassDescription(
75437       VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags_,
75438       VULKAN_HPP_NAMESPACE::PipelineBindPoint       pipelineBindPoint_,
75439       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference> const &
75440         inputAttachments_,
75441       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference> const &
75442         colorAttachments_ = {},
75443       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference> const &
75444                                                                             resolveAttachments_      = {},
75445       const VULKAN_HPP_NAMESPACE::AttachmentReference *                     pDepthStencilAttachment_ = {},
75446       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & preserveAttachments_     = {} )
75447       : flags( flags_ )
75448       , pipelineBindPoint( pipelineBindPoint_ )
75449       , inputAttachmentCount( static_cast<uint32_t>( inputAttachments_.size() ) )
75450       , pInputAttachments( inputAttachments_.data() )
75451       , colorAttachmentCount( static_cast<uint32_t>( colorAttachments_.size() ) )
75452       , pColorAttachments( colorAttachments_.data() )
75453       , pResolveAttachments( resolveAttachments_.data() )
75454       , pDepthStencilAttachment( pDepthStencilAttachment_ )
75455       , preserveAttachmentCount( static_cast<uint32_t>( preserveAttachments_.size() ) )
75456       , pPreserveAttachments( preserveAttachments_.data() )
75457     {
75458 #    ifdef VULKAN_HPP_NO_EXCEPTIONS
75459       VULKAN_HPP_ASSERT( resolveAttachments_.empty() || ( colorAttachments_.size() == resolveAttachments_.size() ) );
75460 #    else
75461       if ( !resolveAttachments_.empty() && ( colorAttachments_.size() != resolveAttachments_.size() ) )
75462       {
75463         throw LogicError(
75464           VULKAN_HPP_NAMESPACE_STRING
75465           "::SubpassDescription::SubpassDescription: !resolveAttachments_.empty() && ( colorAttachments_.size() != resolveAttachments_.size() )" );
75466       }
75467 #    endif /*VULKAN_HPP_NO_EXCEPTIONS*/
75468     }
75469 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
75470 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
75471 
75472     SubpassDescription & operator=( SubpassDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75473 
operator =VULKAN_HPP_NAMESPACE::SubpassDescription75474     SubpassDescription & operator=( VkSubpassDescription const & rhs ) VULKAN_HPP_NOEXCEPT
75475     {
75476       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassDescription const *>( &rhs );
75477       return *this;
75478     }
75479 
75480 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
75481     VULKAN_HPP_CONSTEXPR_14 SubpassDescription &
setFlagsVULKAN_HPP_NAMESPACE::SubpassDescription75482                             setFlags( VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags_ ) VULKAN_HPP_NOEXCEPT
75483     {
75484       flags = flags_;
75485       return *this;
75486     }
75487 
75488     VULKAN_HPP_CONSTEXPR_14 SubpassDescription &
setPipelineBindPointVULKAN_HPP_NAMESPACE::SubpassDescription75489       setPipelineBindPoint( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ ) VULKAN_HPP_NOEXCEPT
75490     {
75491       pipelineBindPoint = pipelineBindPoint_;
75492       return *this;
75493     }
75494 
75495     VULKAN_HPP_CONSTEXPR_14 SubpassDescription &
setInputAttachmentCountVULKAN_HPP_NAMESPACE::SubpassDescription75496                             setInputAttachmentCount( uint32_t inputAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
75497     {
75498       inputAttachmentCount = inputAttachmentCount_;
75499       return *this;
75500     }
75501 
75502     VULKAN_HPP_CONSTEXPR_14 SubpassDescription &
setPInputAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription75503       setPInputAttachments( const VULKAN_HPP_NAMESPACE::AttachmentReference * pInputAttachments_ ) VULKAN_HPP_NOEXCEPT
75504     {
75505       pInputAttachments = pInputAttachments_;
75506       return *this;
75507     }
75508 
75509 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setInputAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription75510     SubpassDescription & setInputAttachments(
75511       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference> const &
75512         inputAttachments_ ) VULKAN_HPP_NOEXCEPT
75513     {
75514       inputAttachmentCount = static_cast<uint32_t>( inputAttachments_.size() );
75515       pInputAttachments    = inputAttachments_.data();
75516       return *this;
75517     }
75518 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
75519 
75520     VULKAN_HPP_CONSTEXPR_14 SubpassDescription &
setColorAttachmentCountVULKAN_HPP_NAMESPACE::SubpassDescription75521                             setColorAttachmentCount( uint32_t colorAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
75522     {
75523       colorAttachmentCount = colorAttachmentCount_;
75524       return *this;
75525     }
75526 
75527     VULKAN_HPP_CONSTEXPR_14 SubpassDescription &
setPColorAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription75528       setPColorAttachments( const VULKAN_HPP_NAMESPACE::AttachmentReference * pColorAttachments_ ) VULKAN_HPP_NOEXCEPT
75529     {
75530       pColorAttachments = pColorAttachments_;
75531       return *this;
75532     }
75533 
75534 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setColorAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription75535     SubpassDescription & setColorAttachments(
75536       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference> const &
75537         colorAttachments_ ) VULKAN_HPP_NOEXCEPT
75538     {
75539       colorAttachmentCount = static_cast<uint32_t>( colorAttachments_.size() );
75540       pColorAttachments    = colorAttachments_.data();
75541       return *this;
75542     }
75543 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
75544 
setPResolveAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription75545     VULKAN_HPP_CONSTEXPR_14 SubpassDescription & setPResolveAttachments(
75546       const VULKAN_HPP_NAMESPACE::AttachmentReference * pResolveAttachments_ ) VULKAN_HPP_NOEXCEPT
75547     {
75548       pResolveAttachments = pResolveAttachments_;
75549       return *this;
75550     }
75551 
75552 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setResolveAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription75553     SubpassDescription & setResolveAttachments(
75554       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference> const &
75555         resolveAttachments_ ) VULKAN_HPP_NOEXCEPT
75556     {
75557       colorAttachmentCount = static_cast<uint32_t>( resolveAttachments_.size() );
75558       pResolveAttachments  = resolveAttachments_.data();
75559       return *this;
75560     }
75561 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
75562 
setPDepthStencilAttachmentVULKAN_HPP_NAMESPACE::SubpassDescription75563     VULKAN_HPP_CONSTEXPR_14 SubpassDescription & setPDepthStencilAttachment(
75564       const VULKAN_HPP_NAMESPACE::AttachmentReference * pDepthStencilAttachment_ ) VULKAN_HPP_NOEXCEPT
75565     {
75566       pDepthStencilAttachment = pDepthStencilAttachment_;
75567       return *this;
75568     }
75569 
75570     VULKAN_HPP_CONSTEXPR_14 SubpassDescription &
setPreserveAttachmentCountVULKAN_HPP_NAMESPACE::SubpassDescription75571                             setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
75572     {
75573       preserveAttachmentCount = preserveAttachmentCount_;
75574       return *this;
75575     }
75576 
75577     VULKAN_HPP_CONSTEXPR_14 SubpassDescription &
setPPreserveAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription75578                             setPPreserveAttachments( const uint32_t * pPreserveAttachments_ ) VULKAN_HPP_NOEXCEPT
75579     {
75580       pPreserveAttachments = pPreserveAttachments_;
75581       return *this;
75582     }
75583 
75584 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPreserveAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription75585     SubpassDescription & setPreserveAttachments(
75586       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & preserveAttachments_ ) VULKAN_HPP_NOEXCEPT
75587     {
75588       preserveAttachmentCount = static_cast<uint32_t>( preserveAttachments_.size() );
75589       pPreserveAttachments    = preserveAttachments_.data();
75590       return *this;
75591     }
75592 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
75593 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
75594 
operator VkSubpassDescription const&VULKAN_HPP_NAMESPACE::SubpassDescription75595     explicit operator VkSubpassDescription const &() const VULKAN_HPP_NOEXCEPT
75596     {
75597       return *reinterpret_cast<const VkSubpassDescription *>( this );
75598     }
75599 
operator VkSubpassDescription&VULKAN_HPP_NAMESPACE::SubpassDescription75600     explicit operator VkSubpassDescription &() VULKAN_HPP_NOEXCEPT
75601     {
75602       return *reinterpret_cast<VkSubpassDescription *>( this );
75603     }
75604 
75605 #if 14 <= VULKAN_HPP_CPP_VERSION
75606     auto
75607 #else
75608     std::tuple<VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags const &,
75609                VULKAN_HPP_NAMESPACE::PipelineBindPoint const &,
75610                uint32_t const &,
75611                const VULKAN_HPP_NAMESPACE::AttachmentReference * const &,
75612                uint32_t const &,
75613                const VULKAN_HPP_NAMESPACE::AttachmentReference * const &,
75614                const VULKAN_HPP_NAMESPACE::AttachmentReference * const &,
75615                const VULKAN_HPP_NAMESPACE::AttachmentReference * const &,
75616                uint32_t const &,
75617                const uint32_t * const &>
75618 #endif
reflectVULKAN_HPP_NAMESPACE::SubpassDescription75619       reflect() const VULKAN_HPP_NOEXCEPT
75620     {
75621       return std::tie( flags,
75622                        pipelineBindPoint,
75623                        inputAttachmentCount,
75624                        pInputAttachments,
75625                        colorAttachmentCount,
75626                        pColorAttachments,
75627                        pResolveAttachments,
75628                        pDepthStencilAttachment,
75629                        preserveAttachmentCount,
75630                        pPreserveAttachments );
75631     }
75632 
75633 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
75634     auto operator<=>( SubpassDescription const & ) const = default;
75635 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassDescription75636     bool operator==( SubpassDescription const & rhs ) const VULKAN_HPP_NOEXCEPT
75637     {
75638       return this->reflect() == rhs.reflect();
75639     }
75640 
operator !=VULKAN_HPP_NAMESPACE::SubpassDescription75641     bool operator!=( SubpassDescription const & rhs ) const VULKAN_HPP_NOEXCEPT
75642     {
75643       return this->reflect() != rhs.reflect();
75644     }
75645 #endif
75646 
75647   public:
75648     VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags          = {};
75649     VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint    = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics;
75650     uint32_t                                inputAttachmentCount = {};
75651     const VULKAN_HPP_NAMESPACE::AttachmentReference * pInputAttachments       = {};
75652     uint32_t                                          colorAttachmentCount    = {};
75653     const VULKAN_HPP_NAMESPACE::AttachmentReference * pColorAttachments       = {};
75654     const VULKAN_HPP_NAMESPACE::AttachmentReference * pResolveAttachments     = {};
75655     const VULKAN_HPP_NAMESPACE::AttachmentReference * pDepthStencilAttachment = {};
75656     uint32_t                                          preserveAttachmentCount = {};
75657     const uint32_t *                                  pPreserveAttachments    = {};
75658   };
75659   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubpassDescription ) == sizeof( VkSubpassDescription ),
75660                             "struct and wrapper have different size!" );
75661   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SubpassDescription>::value,
75662                             "struct wrapper is not a standard layout!" );
75663   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SubpassDescription>::value,
75664                             "SubpassDescription is not nothrow_move_constructible!" );
75665 
75666   struct SubpassDependency
75667   {
75668     using NativeType = VkSubpassDependency;
75669 
75670 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
75671     VULKAN_HPP_CONSTEXPR
SubpassDependencyVULKAN_HPP_NAMESPACE::SubpassDependency75672       SubpassDependency( uint32_t                                 srcSubpass_      = {},
75673                          uint32_t                                 dstSubpass_      = {},
75674                          VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask_    = {},
75675                          VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask_    = {},
75676                          VULKAN_HPP_NAMESPACE::AccessFlags        srcAccessMask_   = {},
75677                          VULKAN_HPP_NAMESPACE::AccessFlags        dstAccessMask_   = {},
75678                          VULKAN_HPP_NAMESPACE::DependencyFlags    dependencyFlags_ = {} ) VULKAN_HPP_NOEXCEPT
75679       : srcSubpass( srcSubpass_ )
75680       , dstSubpass( dstSubpass_ )
75681       , srcStageMask( srcStageMask_ )
75682       , dstStageMask( dstStageMask_ )
75683       , srcAccessMask( srcAccessMask_ )
75684       , dstAccessMask( dstAccessMask_ )
75685       , dependencyFlags( dependencyFlags_ )
75686     {}
75687 
75688     VULKAN_HPP_CONSTEXPR SubpassDependency( SubpassDependency const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75689 
SubpassDependencyVULKAN_HPP_NAMESPACE::SubpassDependency75690     SubpassDependency( VkSubpassDependency const & rhs ) VULKAN_HPP_NOEXCEPT
75691       : SubpassDependency( *reinterpret_cast<SubpassDependency const *>( &rhs ) )
75692     {}
75693 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
75694 
75695     SubpassDependency & operator=( SubpassDependency const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75696 
operator =VULKAN_HPP_NAMESPACE::SubpassDependency75697     SubpassDependency & operator=( VkSubpassDependency const & rhs ) VULKAN_HPP_NOEXCEPT
75698     {
75699       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassDependency const *>( &rhs );
75700       return *this;
75701     }
75702 
75703 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSrcSubpassVULKAN_HPP_NAMESPACE::SubpassDependency75704     VULKAN_HPP_CONSTEXPR_14 SubpassDependency & setSrcSubpass( uint32_t srcSubpass_ ) VULKAN_HPP_NOEXCEPT
75705     {
75706       srcSubpass = srcSubpass_;
75707       return *this;
75708     }
75709 
setDstSubpassVULKAN_HPP_NAMESPACE::SubpassDependency75710     VULKAN_HPP_CONSTEXPR_14 SubpassDependency & setDstSubpass( uint32_t dstSubpass_ ) VULKAN_HPP_NOEXCEPT
75711     {
75712       dstSubpass = dstSubpass_;
75713       return *this;
75714     }
75715 
75716     VULKAN_HPP_CONSTEXPR_14 SubpassDependency &
setSrcStageMaskVULKAN_HPP_NAMESPACE::SubpassDependency75717       setSrcStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask_ ) VULKAN_HPP_NOEXCEPT
75718     {
75719       srcStageMask = srcStageMask_;
75720       return *this;
75721     }
75722 
75723     VULKAN_HPP_CONSTEXPR_14 SubpassDependency &
setDstStageMaskVULKAN_HPP_NAMESPACE::SubpassDependency75724       setDstStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask_ ) VULKAN_HPP_NOEXCEPT
75725     {
75726       dstStageMask = dstStageMask_;
75727       return *this;
75728     }
75729 
75730     VULKAN_HPP_CONSTEXPR_14 SubpassDependency &
setSrcAccessMaskVULKAN_HPP_NAMESPACE::SubpassDependency75731                             setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ ) VULKAN_HPP_NOEXCEPT
75732     {
75733       srcAccessMask = srcAccessMask_;
75734       return *this;
75735     }
75736 
75737     VULKAN_HPP_CONSTEXPR_14 SubpassDependency &
setDstAccessMaskVULKAN_HPP_NAMESPACE::SubpassDependency75738                             setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ ) VULKAN_HPP_NOEXCEPT
75739     {
75740       dstAccessMask = dstAccessMask_;
75741       return *this;
75742     }
75743 
75744     VULKAN_HPP_CONSTEXPR_14 SubpassDependency &
setDependencyFlagsVULKAN_HPP_NAMESPACE::SubpassDependency75745       setDependencyFlags( VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags_ ) VULKAN_HPP_NOEXCEPT
75746     {
75747       dependencyFlags = dependencyFlags_;
75748       return *this;
75749     }
75750 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
75751 
operator VkSubpassDependency const&VULKAN_HPP_NAMESPACE::SubpassDependency75752     explicit operator VkSubpassDependency const &() const VULKAN_HPP_NOEXCEPT
75753     {
75754       return *reinterpret_cast<const VkSubpassDependency *>( this );
75755     }
75756 
operator VkSubpassDependency&VULKAN_HPP_NAMESPACE::SubpassDependency75757     explicit operator VkSubpassDependency &() VULKAN_HPP_NOEXCEPT
75758     {
75759       return *reinterpret_cast<VkSubpassDependency *>( this );
75760     }
75761 
75762 #if 14 <= VULKAN_HPP_CPP_VERSION
75763     auto
75764 #else
75765     std::tuple<uint32_t const &,
75766                uint32_t const &,
75767                VULKAN_HPP_NAMESPACE::PipelineStageFlags const &,
75768                VULKAN_HPP_NAMESPACE::PipelineStageFlags const &,
75769                VULKAN_HPP_NAMESPACE::AccessFlags const &,
75770                VULKAN_HPP_NAMESPACE::AccessFlags const &,
75771                VULKAN_HPP_NAMESPACE::DependencyFlags const &>
75772 #endif
reflectVULKAN_HPP_NAMESPACE::SubpassDependency75773       reflect() const VULKAN_HPP_NOEXCEPT
75774     {
75775       return std::tie(
75776         srcSubpass, dstSubpass, srcStageMask, dstStageMask, srcAccessMask, dstAccessMask, dependencyFlags );
75777     }
75778 
75779 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
75780     auto operator<=>( SubpassDependency const & ) const = default;
75781 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassDependency75782     bool operator==( SubpassDependency const & rhs ) const VULKAN_HPP_NOEXCEPT
75783     {
75784       return this->reflect() == rhs.reflect();
75785     }
75786 
operator !=VULKAN_HPP_NAMESPACE::SubpassDependency75787     bool operator!=( SubpassDependency const & rhs ) const VULKAN_HPP_NOEXCEPT
75788     {
75789       return this->reflect() != rhs.reflect();
75790     }
75791 #endif
75792 
75793   public:
75794     uint32_t                                 srcSubpass      = {};
75795     uint32_t                                 dstSubpass      = {};
75796     VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask    = {};
75797     VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask    = {};
75798     VULKAN_HPP_NAMESPACE::AccessFlags        srcAccessMask   = {};
75799     VULKAN_HPP_NAMESPACE::AccessFlags        dstAccessMask   = {};
75800     VULKAN_HPP_NAMESPACE::DependencyFlags    dependencyFlags = {};
75801   };
75802   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubpassDependency ) == sizeof( VkSubpassDependency ),
75803                             "struct and wrapper have different size!" );
75804   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SubpassDependency>::value,
75805                             "struct wrapper is not a standard layout!" );
75806   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SubpassDependency>::value,
75807                             "SubpassDependency is not nothrow_move_constructible!" );
75808 
75809   struct RenderPassCreateInfo
75810   {
75811     using NativeType = VkRenderPassCreateInfo;
75812 
75813     static const bool                                  allowDuplicate = false;
75814     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderPassCreateInfo;
75815 
75816 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
75817     VULKAN_HPP_CONSTEXPR
RenderPassCreateInfoVULKAN_HPP_NAMESPACE::RenderPassCreateInfo75818       RenderPassCreateInfo( VULKAN_HPP_NAMESPACE::RenderPassCreateFlags         flags_           = {},
75819                             uint32_t                                            attachmentCount_ = {},
75820                             const VULKAN_HPP_NAMESPACE::AttachmentDescription * pAttachments_    = {},
75821                             uint32_t                                            subpassCount_    = {},
75822                             const VULKAN_HPP_NAMESPACE::SubpassDescription *    pSubpasses_      = {},
75823                             uint32_t                                            dependencyCount_ = {},
75824                             const VULKAN_HPP_NAMESPACE::SubpassDependency * pDependencies_ = {} ) VULKAN_HPP_NOEXCEPT
75825       : flags( flags_ )
75826       , attachmentCount( attachmentCount_ )
75827       , pAttachments( pAttachments_ )
75828       , subpassCount( subpassCount_ )
75829       , pSubpasses( pSubpasses_ )
75830       , dependencyCount( dependencyCount_ )
75831       , pDependencies( pDependencies_ )
75832     {}
75833 
75834     VULKAN_HPP_CONSTEXPR RenderPassCreateInfo( RenderPassCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75835 
RenderPassCreateInfoVULKAN_HPP_NAMESPACE::RenderPassCreateInfo75836     RenderPassCreateInfo( VkRenderPassCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
75837       : RenderPassCreateInfo( *reinterpret_cast<RenderPassCreateInfo const *>( &rhs ) )
75838     {}
75839 
75840 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderPassCreateInfoVULKAN_HPP_NAMESPACE::RenderPassCreateInfo75841     RenderPassCreateInfo(
75842       VULKAN_HPP_NAMESPACE::RenderPassCreateFlags flags_,
75843       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentDescription> const &
75844         attachments_,
75845       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassDescription> const &
75846         subpasses_ = {},
75847       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassDependency> const &
75848         dependencies_ = {} )
75849       : flags( flags_ )
75850       , attachmentCount( static_cast<uint32_t>( attachments_.size() ) )
75851       , pAttachments( attachments_.data() )
75852       , subpassCount( static_cast<uint32_t>( subpasses_.size() ) )
75853       , pSubpasses( subpasses_.data() )
75854       , dependencyCount( static_cast<uint32_t>( dependencies_.size() ) )
75855       , pDependencies( dependencies_.data() )
75856     {}
75857 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
75858 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
75859 
75860     RenderPassCreateInfo & operator=( RenderPassCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75861 
operator =VULKAN_HPP_NAMESPACE::RenderPassCreateInfo75862     RenderPassCreateInfo & operator=( VkRenderPassCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
75863     {
75864       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassCreateInfo const *>( &rhs );
75865       return *this;
75866     }
75867 
75868 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassCreateInfo75869     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
75870     {
75871       pNext = pNext_;
75872       return *this;
75873     }
75874 
75875     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::RenderPassCreateInfo75876                             setFlags( VULKAN_HPP_NAMESPACE::RenderPassCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
75877     {
75878       flags = flags_;
75879       return *this;
75880     }
75881 
setAttachmentCountVULKAN_HPP_NAMESPACE::RenderPassCreateInfo75882     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setAttachmentCount( uint32_t attachmentCount_ ) VULKAN_HPP_NOEXCEPT
75883     {
75884       attachmentCount = attachmentCount_;
75885       return *this;
75886     }
75887 
75888     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo &
setPAttachmentsVULKAN_HPP_NAMESPACE::RenderPassCreateInfo75889       setPAttachments( const VULKAN_HPP_NAMESPACE::AttachmentDescription * pAttachments_ ) VULKAN_HPP_NOEXCEPT
75890     {
75891       pAttachments = pAttachments_;
75892       return *this;
75893     }
75894 
75895 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAttachmentsVULKAN_HPP_NAMESPACE::RenderPassCreateInfo75896     RenderPassCreateInfo & setAttachments(
75897       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentDescription> const &
75898         attachments_ ) VULKAN_HPP_NOEXCEPT
75899     {
75900       attachmentCount = static_cast<uint32_t>( attachments_.size() );
75901       pAttachments    = attachments_.data();
75902       return *this;
75903     }
75904 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
75905 
setSubpassCountVULKAN_HPP_NAMESPACE::RenderPassCreateInfo75906     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setSubpassCount( uint32_t subpassCount_ ) VULKAN_HPP_NOEXCEPT
75907     {
75908       subpassCount = subpassCount_;
75909       return *this;
75910     }
75911 
75912     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo &
setPSubpassesVULKAN_HPP_NAMESPACE::RenderPassCreateInfo75913       setPSubpasses( const VULKAN_HPP_NAMESPACE::SubpassDescription * pSubpasses_ ) VULKAN_HPP_NOEXCEPT
75914     {
75915       pSubpasses = pSubpasses_;
75916       return *this;
75917     }
75918 
75919 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSubpassesVULKAN_HPP_NAMESPACE::RenderPassCreateInfo75920     RenderPassCreateInfo & setSubpasses(
75921       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassDescription> const & subpasses_ )
75922       VULKAN_HPP_NOEXCEPT
75923     {
75924       subpassCount = static_cast<uint32_t>( subpasses_.size() );
75925       pSubpasses   = subpasses_.data();
75926       return *this;
75927     }
75928 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
75929 
setDependencyCountVULKAN_HPP_NAMESPACE::RenderPassCreateInfo75930     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setDependencyCount( uint32_t dependencyCount_ ) VULKAN_HPP_NOEXCEPT
75931     {
75932       dependencyCount = dependencyCount_;
75933       return *this;
75934     }
75935 
75936     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo &
setPDependenciesVULKAN_HPP_NAMESPACE::RenderPassCreateInfo75937       setPDependencies( const VULKAN_HPP_NAMESPACE::SubpassDependency * pDependencies_ ) VULKAN_HPP_NOEXCEPT
75938     {
75939       pDependencies = pDependencies_;
75940       return *this;
75941     }
75942 
75943 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDependenciesVULKAN_HPP_NAMESPACE::RenderPassCreateInfo75944     RenderPassCreateInfo & setDependencies(
75945       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassDependency> const &
75946         dependencies_ ) VULKAN_HPP_NOEXCEPT
75947     {
75948       dependencyCount = static_cast<uint32_t>( dependencies_.size() );
75949       pDependencies   = dependencies_.data();
75950       return *this;
75951     }
75952 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
75953 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
75954 
operator VkRenderPassCreateInfo const&VULKAN_HPP_NAMESPACE::RenderPassCreateInfo75955     explicit operator VkRenderPassCreateInfo const &() const VULKAN_HPP_NOEXCEPT
75956     {
75957       return *reinterpret_cast<const VkRenderPassCreateInfo *>( this );
75958     }
75959 
operator VkRenderPassCreateInfo&VULKAN_HPP_NAMESPACE::RenderPassCreateInfo75960     explicit operator VkRenderPassCreateInfo &() VULKAN_HPP_NOEXCEPT
75961     {
75962       return *reinterpret_cast<VkRenderPassCreateInfo *>( this );
75963     }
75964 
75965 #if 14 <= VULKAN_HPP_CPP_VERSION
75966     auto
75967 #else
75968     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
75969                const void * const &,
75970                VULKAN_HPP_NAMESPACE::RenderPassCreateFlags const &,
75971                uint32_t const &,
75972                const VULKAN_HPP_NAMESPACE::AttachmentDescription * const &,
75973                uint32_t const &,
75974                const VULKAN_HPP_NAMESPACE::SubpassDescription * const &,
75975                uint32_t const &,
75976                const VULKAN_HPP_NAMESPACE::SubpassDependency * const &>
75977 #endif
reflectVULKAN_HPP_NAMESPACE::RenderPassCreateInfo75978       reflect() const VULKAN_HPP_NOEXCEPT
75979     {
75980       return std::tie(
75981         sType, pNext, flags, attachmentCount, pAttachments, subpassCount, pSubpasses, dependencyCount, pDependencies );
75982     }
75983 
75984 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
75985     auto operator<=>( RenderPassCreateInfo const & ) const = default;
75986 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassCreateInfo75987     bool operator==( RenderPassCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
75988     {
75989       return this->reflect() == rhs.reflect();
75990     }
75991 
operator !=VULKAN_HPP_NAMESPACE::RenderPassCreateInfo75992     bool operator!=( RenderPassCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
75993     {
75994       return this->reflect() != rhs.reflect();
75995     }
75996 #endif
75997 
75998   public:
75999     VULKAN_HPP_NAMESPACE::StructureType                 sType           = StructureType::eRenderPassCreateInfo;
76000     const void *                                        pNext           = {};
76001     VULKAN_HPP_NAMESPACE::RenderPassCreateFlags         flags           = {};
76002     uint32_t                                            attachmentCount = {};
76003     const VULKAN_HPP_NAMESPACE::AttachmentDescription * pAttachments    = {};
76004     uint32_t                                            subpassCount    = {};
76005     const VULKAN_HPP_NAMESPACE::SubpassDescription *    pSubpasses      = {};
76006     uint32_t                                            dependencyCount = {};
76007     const VULKAN_HPP_NAMESPACE::SubpassDependency *     pDependencies   = {};
76008   };
76009   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassCreateInfo ) == sizeof( VkRenderPassCreateInfo ),
76010                             "struct and wrapper have different size!" );
76011   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::RenderPassCreateInfo>::value,
76012                             "struct wrapper is not a standard layout!" );
76013   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::RenderPassCreateInfo>::value,
76014                             "RenderPassCreateInfo is not nothrow_move_constructible!" );
76015 
76016   template <>
76017   struct CppType<StructureType, StructureType::eRenderPassCreateInfo>
76018   {
76019     using Type = RenderPassCreateInfo;
76020   };
76021 
76022   struct SubpassDescription2
76023   {
76024     using NativeType = VkSubpassDescription2;
76025 
76026     static const bool                                  allowDuplicate = false;
76027     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSubpassDescription2;
76028 
76029 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubpassDescription2VULKAN_HPP_NAMESPACE::SubpassDescription276030     VULKAN_HPP_CONSTEXPR SubpassDescription2(
76031       VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags_       = {},
76032       VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics,
76033       uint32_t                                viewMask_          = {},
76034       uint32_t                                inputAttachmentCount_               = {},
76035       const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pInputAttachments_       = {},
76036       uint32_t                                           colorAttachmentCount_    = {},
76037       const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pColorAttachments_       = {},
76038       const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pResolveAttachments_     = {},
76039       const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pDepthStencilAttachment_ = {},
76040       uint32_t                                           preserveAttachmentCount_ = {},
76041       const uint32_t *                                   pPreserveAttachments_    = {} ) VULKAN_HPP_NOEXCEPT
76042       : flags( flags_ )
76043       , pipelineBindPoint( pipelineBindPoint_ )
76044       , viewMask( viewMask_ )
76045       , inputAttachmentCount( inputAttachmentCount_ )
76046       , pInputAttachments( pInputAttachments_ )
76047       , colorAttachmentCount( colorAttachmentCount_ )
76048       , pColorAttachments( pColorAttachments_ )
76049       , pResolveAttachments( pResolveAttachments_ )
76050       , pDepthStencilAttachment( pDepthStencilAttachment_ )
76051       , preserveAttachmentCount( preserveAttachmentCount_ )
76052       , pPreserveAttachments( pPreserveAttachments_ )
76053     {}
76054 
76055     VULKAN_HPP_CONSTEXPR SubpassDescription2( SubpassDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76056 
SubpassDescription2VULKAN_HPP_NAMESPACE::SubpassDescription276057     SubpassDescription2( VkSubpassDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT
76058       : SubpassDescription2( *reinterpret_cast<SubpassDescription2 const *>( &rhs ) )
76059     {}
76060 
76061 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SubpassDescription2VULKAN_HPP_NAMESPACE::SubpassDescription276062     SubpassDescription2(
76063       VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags_,
76064       VULKAN_HPP_NAMESPACE::PipelineBindPoint       pipelineBindPoint_,
76065       uint32_t                                      viewMask_,
76066       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference2> const &
76067         inputAttachments_,
76068       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference2> const &
76069         colorAttachments_ = {},
76070       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference2> const &
76071                                                                             resolveAttachments_      = {},
76072       const VULKAN_HPP_NAMESPACE::AttachmentReference2 *                    pDepthStencilAttachment_ = {},
76073       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & preserveAttachments_     = {} )
76074       : flags( flags_ )
76075       , pipelineBindPoint( pipelineBindPoint_ )
76076       , viewMask( viewMask_ )
76077       , inputAttachmentCount( static_cast<uint32_t>( inputAttachments_.size() ) )
76078       , pInputAttachments( inputAttachments_.data() )
76079       , colorAttachmentCount( static_cast<uint32_t>( colorAttachments_.size() ) )
76080       , pColorAttachments( colorAttachments_.data() )
76081       , pResolveAttachments( resolveAttachments_.data() )
76082       , pDepthStencilAttachment( pDepthStencilAttachment_ )
76083       , preserveAttachmentCount( static_cast<uint32_t>( preserveAttachments_.size() ) )
76084       , pPreserveAttachments( preserveAttachments_.data() )
76085     {
76086 #    ifdef VULKAN_HPP_NO_EXCEPTIONS
76087       VULKAN_HPP_ASSERT( resolveAttachments_.empty() || ( colorAttachments_.size() == resolveAttachments_.size() ) );
76088 #    else
76089       if ( !resolveAttachments_.empty() && ( colorAttachments_.size() != resolveAttachments_.size() ) )
76090       {
76091         throw LogicError(
76092           VULKAN_HPP_NAMESPACE_STRING
76093           "::SubpassDescription2::SubpassDescription2: !resolveAttachments_.empty() && ( colorAttachments_.size() != resolveAttachments_.size() )" );
76094       }
76095 #    endif /*VULKAN_HPP_NO_EXCEPTIONS*/
76096     }
76097 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
76098 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
76099 
76100     SubpassDescription2 & operator=( SubpassDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76101 
operator =VULKAN_HPP_NAMESPACE::SubpassDescription276102     SubpassDescription2 & operator=( VkSubpassDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT
76103     {
76104       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassDescription2 const *>( &rhs );
76105       return *this;
76106     }
76107 
76108 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SubpassDescription276109     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
76110     {
76111       pNext = pNext_;
76112       return *this;
76113     }
76114 
76115     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 &
setFlagsVULKAN_HPP_NAMESPACE::SubpassDescription276116                             setFlags( VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags_ ) VULKAN_HPP_NOEXCEPT
76117     {
76118       flags = flags_;
76119       return *this;
76120     }
76121 
76122     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 &
setPipelineBindPointVULKAN_HPP_NAMESPACE::SubpassDescription276123       setPipelineBindPoint( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ ) VULKAN_HPP_NOEXCEPT
76124     {
76125       pipelineBindPoint = pipelineBindPoint_;
76126       return *this;
76127     }
76128 
setViewMaskVULKAN_HPP_NAMESPACE::SubpassDescription276129     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setViewMask( uint32_t viewMask_ ) VULKAN_HPP_NOEXCEPT
76130     {
76131       viewMask = viewMask_;
76132       return *this;
76133     }
76134 
76135     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 &
setInputAttachmentCountVULKAN_HPP_NAMESPACE::SubpassDescription276136                             setInputAttachmentCount( uint32_t inputAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
76137     {
76138       inputAttachmentCount = inputAttachmentCount_;
76139       return *this;
76140     }
76141 
76142     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 &
setPInputAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription276143       setPInputAttachments( const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pInputAttachments_ ) VULKAN_HPP_NOEXCEPT
76144     {
76145       pInputAttachments = pInputAttachments_;
76146       return *this;
76147     }
76148 
76149 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setInputAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription276150     SubpassDescription2 & setInputAttachments(
76151       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference2> const &
76152         inputAttachments_ ) VULKAN_HPP_NOEXCEPT
76153     {
76154       inputAttachmentCount = static_cast<uint32_t>( inputAttachments_.size() );
76155       pInputAttachments    = inputAttachments_.data();
76156       return *this;
76157     }
76158 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
76159 
76160     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 &
setColorAttachmentCountVULKAN_HPP_NAMESPACE::SubpassDescription276161                             setColorAttachmentCount( uint32_t colorAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
76162     {
76163       colorAttachmentCount = colorAttachmentCount_;
76164       return *this;
76165     }
76166 
76167     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 &
setPColorAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription276168       setPColorAttachments( const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pColorAttachments_ ) VULKAN_HPP_NOEXCEPT
76169     {
76170       pColorAttachments = pColorAttachments_;
76171       return *this;
76172     }
76173 
76174 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setColorAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription276175     SubpassDescription2 & setColorAttachments(
76176       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference2> const &
76177         colorAttachments_ ) VULKAN_HPP_NOEXCEPT
76178     {
76179       colorAttachmentCount = static_cast<uint32_t>( colorAttachments_.size() );
76180       pColorAttachments    = colorAttachments_.data();
76181       return *this;
76182     }
76183 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
76184 
setPResolveAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription276185     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setPResolveAttachments(
76186       const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pResolveAttachments_ ) VULKAN_HPP_NOEXCEPT
76187     {
76188       pResolveAttachments = pResolveAttachments_;
76189       return *this;
76190     }
76191 
76192 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setResolveAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription276193     SubpassDescription2 & setResolveAttachments(
76194       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference2> const &
76195         resolveAttachments_ ) VULKAN_HPP_NOEXCEPT
76196     {
76197       colorAttachmentCount = static_cast<uint32_t>( resolveAttachments_.size() );
76198       pResolveAttachments  = resolveAttachments_.data();
76199       return *this;
76200     }
76201 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
76202 
setPDepthStencilAttachmentVULKAN_HPP_NAMESPACE::SubpassDescription276203     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setPDepthStencilAttachment(
76204       const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pDepthStencilAttachment_ ) VULKAN_HPP_NOEXCEPT
76205     {
76206       pDepthStencilAttachment = pDepthStencilAttachment_;
76207       return *this;
76208     }
76209 
76210     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 &
setPreserveAttachmentCountVULKAN_HPP_NAMESPACE::SubpassDescription276211                             setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
76212     {
76213       preserveAttachmentCount = preserveAttachmentCount_;
76214       return *this;
76215     }
76216 
76217     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 &
setPPreserveAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription276218                             setPPreserveAttachments( const uint32_t * pPreserveAttachments_ ) VULKAN_HPP_NOEXCEPT
76219     {
76220       pPreserveAttachments = pPreserveAttachments_;
76221       return *this;
76222     }
76223 
76224 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPreserveAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription276225     SubpassDescription2 & setPreserveAttachments(
76226       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & preserveAttachments_ ) VULKAN_HPP_NOEXCEPT
76227     {
76228       preserveAttachmentCount = static_cast<uint32_t>( preserveAttachments_.size() );
76229       pPreserveAttachments    = preserveAttachments_.data();
76230       return *this;
76231     }
76232 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
76233 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
76234 
operator VkSubpassDescription2 const&VULKAN_HPP_NAMESPACE::SubpassDescription276235     explicit operator VkSubpassDescription2 const &() const VULKAN_HPP_NOEXCEPT
76236     {
76237       return *reinterpret_cast<const VkSubpassDescription2 *>( this );
76238     }
76239 
operator VkSubpassDescription2&VULKAN_HPP_NAMESPACE::SubpassDescription276240     explicit operator VkSubpassDescription2 &() VULKAN_HPP_NOEXCEPT
76241     {
76242       return *reinterpret_cast<VkSubpassDescription2 *>( this );
76243     }
76244 
76245 #if 14 <= VULKAN_HPP_CPP_VERSION
76246     auto
76247 #else
76248     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
76249                const void * const &,
76250                VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags const &,
76251                VULKAN_HPP_NAMESPACE::PipelineBindPoint const &,
76252                uint32_t const &,
76253                uint32_t const &,
76254                const VULKAN_HPP_NAMESPACE::AttachmentReference2 * const &,
76255                uint32_t const &,
76256                const VULKAN_HPP_NAMESPACE::AttachmentReference2 * const &,
76257                const VULKAN_HPP_NAMESPACE::AttachmentReference2 * const &,
76258                const VULKAN_HPP_NAMESPACE::AttachmentReference2 * const &,
76259                uint32_t const &,
76260                const uint32_t * const &>
76261 #endif
reflectVULKAN_HPP_NAMESPACE::SubpassDescription276262       reflect() const VULKAN_HPP_NOEXCEPT
76263     {
76264       return std::tie( sType,
76265                        pNext,
76266                        flags,
76267                        pipelineBindPoint,
76268                        viewMask,
76269                        inputAttachmentCount,
76270                        pInputAttachments,
76271                        colorAttachmentCount,
76272                        pColorAttachments,
76273                        pResolveAttachments,
76274                        pDepthStencilAttachment,
76275                        preserveAttachmentCount,
76276                        pPreserveAttachments );
76277     }
76278 
76279 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
76280     auto operator<=>( SubpassDescription2 const & ) const = default;
76281 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassDescription276282     bool operator==( SubpassDescription2 const & rhs ) const VULKAN_HPP_NOEXCEPT
76283     {
76284       return this->reflect() == rhs.reflect();
76285     }
76286 
operator !=VULKAN_HPP_NAMESPACE::SubpassDescription276287     bool operator!=( SubpassDescription2 const & rhs ) const VULKAN_HPP_NOEXCEPT
76288     {
76289       return this->reflect() != rhs.reflect();
76290     }
76291 #endif
76292 
76293   public:
76294     VULKAN_HPP_NAMESPACE::StructureType           sType          = StructureType::eSubpassDescription2;
76295     const void *                                  pNext          = {};
76296     VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags          = {};
76297     VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint    = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics;
76298     uint32_t                                viewMask             = {};
76299     uint32_t                                inputAttachmentCount = {};
76300     const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pInputAttachments       = {};
76301     uint32_t                                           colorAttachmentCount    = {};
76302     const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pColorAttachments       = {};
76303     const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pResolveAttachments     = {};
76304     const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pDepthStencilAttachment = {};
76305     uint32_t                                           preserveAttachmentCount = {};
76306     const uint32_t *                                   pPreserveAttachments    = {};
76307   };
76308   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubpassDescription2 ) == sizeof( VkSubpassDescription2 ),
76309                             "struct and wrapper have different size!" );
76310   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SubpassDescription2>::value,
76311                             "struct wrapper is not a standard layout!" );
76312   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SubpassDescription2>::value,
76313                             "SubpassDescription2 is not nothrow_move_constructible!" );
76314 
76315   template <>
76316   struct CppType<StructureType, StructureType::eSubpassDescription2>
76317   {
76318     using Type = SubpassDescription2;
76319   };
76320   using SubpassDescription2KHR = SubpassDescription2;
76321 
76322   struct SubpassDependency2
76323   {
76324     using NativeType = VkSubpassDependency2;
76325 
76326     static const bool                                  allowDuplicate = false;
76327     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSubpassDependency2;
76328 
76329 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubpassDependency2VULKAN_HPP_NAMESPACE::SubpassDependency276330     VULKAN_HPP_CONSTEXPR SubpassDependency2( uint32_t                                 srcSubpass_      = {},
76331                                              uint32_t                                 dstSubpass_      = {},
76332                                              VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask_    = {},
76333                                              VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask_    = {},
76334                                              VULKAN_HPP_NAMESPACE::AccessFlags        srcAccessMask_   = {},
76335                                              VULKAN_HPP_NAMESPACE::AccessFlags        dstAccessMask_   = {},
76336                                              VULKAN_HPP_NAMESPACE::DependencyFlags    dependencyFlags_ = {},
76337                                              int32_t viewOffset_ = {} ) VULKAN_HPP_NOEXCEPT
76338       : srcSubpass( srcSubpass_ )
76339       , dstSubpass( dstSubpass_ )
76340       , srcStageMask( srcStageMask_ )
76341       , dstStageMask( dstStageMask_ )
76342       , srcAccessMask( srcAccessMask_ )
76343       , dstAccessMask( dstAccessMask_ )
76344       , dependencyFlags( dependencyFlags_ )
76345       , viewOffset( viewOffset_ )
76346     {}
76347 
76348     VULKAN_HPP_CONSTEXPR SubpassDependency2( SubpassDependency2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76349 
SubpassDependency2VULKAN_HPP_NAMESPACE::SubpassDependency276350     SubpassDependency2( VkSubpassDependency2 const & rhs ) VULKAN_HPP_NOEXCEPT
76351       : SubpassDependency2( *reinterpret_cast<SubpassDependency2 const *>( &rhs ) )
76352     {}
76353 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
76354 
76355     SubpassDependency2 & operator=( SubpassDependency2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76356 
operator =VULKAN_HPP_NAMESPACE::SubpassDependency276357     SubpassDependency2 & operator=( VkSubpassDependency2 const & rhs ) VULKAN_HPP_NOEXCEPT
76358     {
76359       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassDependency2 const *>( &rhs );
76360       return *this;
76361     }
76362 
76363 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SubpassDependency276364     VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
76365     {
76366       pNext = pNext_;
76367       return *this;
76368     }
76369 
setSrcSubpassVULKAN_HPP_NAMESPACE::SubpassDependency276370     VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setSrcSubpass( uint32_t srcSubpass_ ) VULKAN_HPP_NOEXCEPT
76371     {
76372       srcSubpass = srcSubpass_;
76373       return *this;
76374     }
76375 
setDstSubpassVULKAN_HPP_NAMESPACE::SubpassDependency276376     VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setDstSubpass( uint32_t dstSubpass_ ) VULKAN_HPP_NOEXCEPT
76377     {
76378       dstSubpass = dstSubpass_;
76379       return *this;
76380     }
76381 
76382     VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 &
setSrcStageMaskVULKAN_HPP_NAMESPACE::SubpassDependency276383       setSrcStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask_ ) VULKAN_HPP_NOEXCEPT
76384     {
76385       srcStageMask = srcStageMask_;
76386       return *this;
76387     }
76388 
76389     VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 &
setDstStageMaskVULKAN_HPP_NAMESPACE::SubpassDependency276390       setDstStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask_ ) VULKAN_HPP_NOEXCEPT
76391     {
76392       dstStageMask = dstStageMask_;
76393       return *this;
76394     }
76395 
76396     VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 &
setSrcAccessMaskVULKAN_HPP_NAMESPACE::SubpassDependency276397                             setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ ) VULKAN_HPP_NOEXCEPT
76398     {
76399       srcAccessMask = srcAccessMask_;
76400       return *this;
76401     }
76402 
76403     VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 &
setDstAccessMaskVULKAN_HPP_NAMESPACE::SubpassDependency276404                             setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ ) VULKAN_HPP_NOEXCEPT
76405     {
76406       dstAccessMask = dstAccessMask_;
76407       return *this;
76408     }
76409 
76410     VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 &
setDependencyFlagsVULKAN_HPP_NAMESPACE::SubpassDependency276411       setDependencyFlags( VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags_ ) VULKAN_HPP_NOEXCEPT
76412     {
76413       dependencyFlags = dependencyFlags_;
76414       return *this;
76415     }
76416 
setViewOffsetVULKAN_HPP_NAMESPACE::SubpassDependency276417     VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setViewOffset( int32_t viewOffset_ ) VULKAN_HPP_NOEXCEPT
76418     {
76419       viewOffset = viewOffset_;
76420       return *this;
76421     }
76422 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
76423 
operator VkSubpassDependency2 const&VULKAN_HPP_NAMESPACE::SubpassDependency276424     explicit operator VkSubpassDependency2 const &() const VULKAN_HPP_NOEXCEPT
76425     {
76426       return *reinterpret_cast<const VkSubpassDependency2 *>( this );
76427     }
76428 
operator VkSubpassDependency2&VULKAN_HPP_NAMESPACE::SubpassDependency276429     explicit operator VkSubpassDependency2 &() VULKAN_HPP_NOEXCEPT
76430     {
76431       return *reinterpret_cast<VkSubpassDependency2 *>( this );
76432     }
76433 
76434 #if 14 <= VULKAN_HPP_CPP_VERSION
76435     auto
76436 #else
76437     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
76438                const void * const &,
76439                uint32_t const &,
76440                uint32_t const &,
76441                VULKAN_HPP_NAMESPACE::PipelineStageFlags const &,
76442                VULKAN_HPP_NAMESPACE::PipelineStageFlags const &,
76443                VULKAN_HPP_NAMESPACE::AccessFlags const &,
76444                VULKAN_HPP_NAMESPACE::AccessFlags const &,
76445                VULKAN_HPP_NAMESPACE::DependencyFlags const &,
76446                int32_t const &>
76447 #endif
reflectVULKAN_HPP_NAMESPACE::SubpassDependency276448       reflect() const VULKAN_HPP_NOEXCEPT
76449     {
76450       return std::tie( sType,
76451                        pNext,
76452                        srcSubpass,
76453                        dstSubpass,
76454                        srcStageMask,
76455                        dstStageMask,
76456                        srcAccessMask,
76457                        dstAccessMask,
76458                        dependencyFlags,
76459                        viewOffset );
76460     }
76461 
76462 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
76463     auto operator<=>( SubpassDependency2 const & ) const = default;
76464 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassDependency276465     bool operator==( SubpassDependency2 const & rhs ) const VULKAN_HPP_NOEXCEPT
76466     {
76467       return this->reflect() == rhs.reflect();
76468     }
76469 
operator !=VULKAN_HPP_NAMESPACE::SubpassDependency276470     bool operator!=( SubpassDependency2 const & rhs ) const VULKAN_HPP_NOEXCEPT
76471     {
76472       return this->reflect() != rhs.reflect();
76473     }
76474 #endif
76475 
76476   public:
76477     VULKAN_HPP_NAMESPACE::StructureType      sType           = StructureType::eSubpassDependency2;
76478     const void *                             pNext           = {};
76479     uint32_t                                 srcSubpass      = {};
76480     uint32_t                                 dstSubpass      = {};
76481     VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask    = {};
76482     VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask    = {};
76483     VULKAN_HPP_NAMESPACE::AccessFlags        srcAccessMask   = {};
76484     VULKAN_HPP_NAMESPACE::AccessFlags        dstAccessMask   = {};
76485     VULKAN_HPP_NAMESPACE::DependencyFlags    dependencyFlags = {};
76486     int32_t                                  viewOffset      = {};
76487   };
76488   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubpassDependency2 ) == sizeof( VkSubpassDependency2 ),
76489                             "struct and wrapper have different size!" );
76490   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SubpassDependency2>::value,
76491                             "struct wrapper is not a standard layout!" );
76492   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SubpassDependency2>::value,
76493                             "SubpassDependency2 is not nothrow_move_constructible!" );
76494 
76495   template <>
76496   struct CppType<StructureType, StructureType::eSubpassDependency2>
76497   {
76498     using Type = SubpassDependency2;
76499   };
76500   using SubpassDependency2KHR = SubpassDependency2;
76501 
76502   struct RenderPassCreateInfo2
76503   {
76504     using NativeType = VkRenderPassCreateInfo2;
76505 
76506     static const bool                                  allowDuplicate = false;
76507     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderPassCreateInfo2;
76508 
76509 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassCreateInfo2VULKAN_HPP_NAMESPACE::RenderPassCreateInfo276510     VULKAN_HPP_CONSTEXPR RenderPassCreateInfo2( VULKAN_HPP_NAMESPACE::RenderPassCreateFlags flags_                 = {},
76511                                                 uint32_t                                    attachmentCount_       = {},
76512                                                 const VULKAN_HPP_NAMESPACE::AttachmentDescription2 * pAttachments_ = {},
76513                                                 uint32_t                                             subpassCount_ = {},
76514                                                 const VULKAN_HPP_NAMESPACE::SubpassDescription2 *    pSubpasses_   = {},
76515                                                 uint32_t                                         dependencyCount_  = {},
76516                                                 const VULKAN_HPP_NAMESPACE::SubpassDependency2 * pDependencies_    = {},
76517                                                 uint32_t         correlatedViewMaskCount_                          = {},
76518                                                 const uint32_t * pCorrelatedViewMasks_ = {} ) VULKAN_HPP_NOEXCEPT
76519       : flags( flags_ )
76520       , attachmentCount( attachmentCount_ )
76521       , pAttachments( pAttachments_ )
76522       , subpassCount( subpassCount_ )
76523       , pSubpasses( pSubpasses_ )
76524       , dependencyCount( dependencyCount_ )
76525       , pDependencies( pDependencies_ )
76526       , correlatedViewMaskCount( correlatedViewMaskCount_ )
76527       , pCorrelatedViewMasks( pCorrelatedViewMasks_ )
76528     {}
76529 
76530     VULKAN_HPP_CONSTEXPR RenderPassCreateInfo2( RenderPassCreateInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76531 
RenderPassCreateInfo2VULKAN_HPP_NAMESPACE::RenderPassCreateInfo276532     RenderPassCreateInfo2( VkRenderPassCreateInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
76533       : RenderPassCreateInfo2( *reinterpret_cast<RenderPassCreateInfo2 const *>( &rhs ) )
76534     {}
76535 
76536 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderPassCreateInfo2VULKAN_HPP_NAMESPACE::RenderPassCreateInfo276537     RenderPassCreateInfo2(
76538       VULKAN_HPP_NAMESPACE::RenderPassCreateFlags flags_,
76539       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentDescription2> const &
76540         attachments_,
76541       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassDescription2> const &
76542         subpasses_ = {},
76543       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassDependency2> const &
76544                                                                             dependencies_        = {},
76545       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & correlatedViewMasks_ = {} )
76546       : flags( flags_ )
76547       , attachmentCount( static_cast<uint32_t>( attachments_.size() ) )
76548       , pAttachments( attachments_.data() )
76549       , subpassCount( static_cast<uint32_t>( subpasses_.size() ) )
76550       , pSubpasses( subpasses_.data() )
76551       , dependencyCount( static_cast<uint32_t>( dependencies_.size() ) )
76552       , pDependencies( dependencies_.data() )
76553       , correlatedViewMaskCount( static_cast<uint32_t>( correlatedViewMasks_.size() ) )
76554       , pCorrelatedViewMasks( correlatedViewMasks_.data() )
76555     {}
76556 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
76557 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
76558 
76559     RenderPassCreateInfo2 & operator=( RenderPassCreateInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76560 
operator =VULKAN_HPP_NAMESPACE::RenderPassCreateInfo276561     RenderPassCreateInfo2 & operator=( VkRenderPassCreateInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
76562     {
76563       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 const *>( &rhs );
76564       return *this;
76565     }
76566 
76567 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassCreateInfo276568     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
76569     {
76570       pNext = pNext_;
76571       return *this;
76572     }
76573 
76574     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 &
setFlagsVULKAN_HPP_NAMESPACE::RenderPassCreateInfo276575                             setFlags( VULKAN_HPP_NAMESPACE::RenderPassCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
76576     {
76577       flags = flags_;
76578       return *this;
76579     }
76580 
setAttachmentCountVULKAN_HPP_NAMESPACE::RenderPassCreateInfo276581     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setAttachmentCount( uint32_t attachmentCount_ ) VULKAN_HPP_NOEXCEPT
76582     {
76583       attachmentCount = attachmentCount_;
76584       return *this;
76585     }
76586 
76587     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 &
setPAttachmentsVULKAN_HPP_NAMESPACE::RenderPassCreateInfo276588       setPAttachments( const VULKAN_HPP_NAMESPACE::AttachmentDescription2 * pAttachments_ ) VULKAN_HPP_NOEXCEPT
76589     {
76590       pAttachments = pAttachments_;
76591       return *this;
76592     }
76593 
76594 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAttachmentsVULKAN_HPP_NAMESPACE::RenderPassCreateInfo276595     RenderPassCreateInfo2 & setAttachments(
76596       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentDescription2> const &
76597         attachments_ ) VULKAN_HPP_NOEXCEPT
76598     {
76599       attachmentCount = static_cast<uint32_t>( attachments_.size() );
76600       pAttachments    = attachments_.data();
76601       return *this;
76602     }
76603 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
76604 
setSubpassCountVULKAN_HPP_NAMESPACE::RenderPassCreateInfo276605     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setSubpassCount( uint32_t subpassCount_ ) VULKAN_HPP_NOEXCEPT
76606     {
76607       subpassCount = subpassCount_;
76608       return *this;
76609     }
76610 
76611     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 &
setPSubpassesVULKAN_HPP_NAMESPACE::RenderPassCreateInfo276612       setPSubpasses( const VULKAN_HPP_NAMESPACE::SubpassDescription2 * pSubpasses_ ) VULKAN_HPP_NOEXCEPT
76613     {
76614       pSubpasses = pSubpasses_;
76615       return *this;
76616     }
76617 
76618 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSubpassesVULKAN_HPP_NAMESPACE::RenderPassCreateInfo276619     RenderPassCreateInfo2 & setSubpasses(
76620       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassDescription2> const &
76621         subpasses_ ) VULKAN_HPP_NOEXCEPT
76622     {
76623       subpassCount = static_cast<uint32_t>( subpasses_.size() );
76624       pSubpasses   = subpasses_.data();
76625       return *this;
76626     }
76627 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
76628 
setDependencyCountVULKAN_HPP_NAMESPACE::RenderPassCreateInfo276629     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setDependencyCount( uint32_t dependencyCount_ ) VULKAN_HPP_NOEXCEPT
76630     {
76631       dependencyCount = dependencyCount_;
76632       return *this;
76633     }
76634 
76635     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 &
setPDependenciesVULKAN_HPP_NAMESPACE::RenderPassCreateInfo276636       setPDependencies( const VULKAN_HPP_NAMESPACE::SubpassDependency2 * pDependencies_ ) VULKAN_HPP_NOEXCEPT
76637     {
76638       pDependencies = pDependencies_;
76639       return *this;
76640     }
76641 
76642 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDependenciesVULKAN_HPP_NAMESPACE::RenderPassCreateInfo276643     RenderPassCreateInfo2 & setDependencies(
76644       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassDependency2> const &
76645         dependencies_ ) VULKAN_HPP_NOEXCEPT
76646     {
76647       dependencyCount = static_cast<uint32_t>( dependencies_.size() );
76648       pDependencies   = dependencies_.data();
76649       return *this;
76650     }
76651 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
76652 
76653     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 &
setCorrelatedViewMaskCountVULKAN_HPP_NAMESPACE::RenderPassCreateInfo276654                             setCorrelatedViewMaskCount( uint32_t correlatedViewMaskCount_ ) VULKAN_HPP_NOEXCEPT
76655     {
76656       correlatedViewMaskCount = correlatedViewMaskCount_;
76657       return *this;
76658     }
76659 
76660     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 &
setPCorrelatedViewMasksVULKAN_HPP_NAMESPACE::RenderPassCreateInfo276661                             setPCorrelatedViewMasks( const uint32_t * pCorrelatedViewMasks_ ) VULKAN_HPP_NOEXCEPT
76662     {
76663       pCorrelatedViewMasks = pCorrelatedViewMasks_;
76664       return *this;
76665     }
76666 
76667 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setCorrelatedViewMasksVULKAN_HPP_NAMESPACE::RenderPassCreateInfo276668     RenderPassCreateInfo2 & setCorrelatedViewMasks(
76669       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & correlatedViewMasks_ ) VULKAN_HPP_NOEXCEPT
76670     {
76671       correlatedViewMaskCount = static_cast<uint32_t>( correlatedViewMasks_.size() );
76672       pCorrelatedViewMasks    = correlatedViewMasks_.data();
76673       return *this;
76674     }
76675 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
76676 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
76677 
operator VkRenderPassCreateInfo2 const&VULKAN_HPP_NAMESPACE::RenderPassCreateInfo276678     explicit operator VkRenderPassCreateInfo2 const &() const VULKAN_HPP_NOEXCEPT
76679     {
76680       return *reinterpret_cast<const VkRenderPassCreateInfo2 *>( this );
76681     }
76682 
operator VkRenderPassCreateInfo2&VULKAN_HPP_NAMESPACE::RenderPassCreateInfo276683     explicit operator VkRenderPassCreateInfo2 &() VULKAN_HPP_NOEXCEPT
76684     {
76685       return *reinterpret_cast<VkRenderPassCreateInfo2 *>( this );
76686     }
76687 
76688 #if 14 <= VULKAN_HPP_CPP_VERSION
76689     auto
76690 #else
76691     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
76692                const void * const &,
76693                VULKAN_HPP_NAMESPACE::RenderPassCreateFlags const &,
76694                uint32_t const &,
76695                const VULKAN_HPP_NAMESPACE::AttachmentDescription2 * const &,
76696                uint32_t const &,
76697                const VULKAN_HPP_NAMESPACE::SubpassDescription2 * const &,
76698                uint32_t const &,
76699                const VULKAN_HPP_NAMESPACE::SubpassDependency2 * const &,
76700                uint32_t const &,
76701                const uint32_t * const &>
76702 #endif
reflectVULKAN_HPP_NAMESPACE::RenderPassCreateInfo276703       reflect() const VULKAN_HPP_NOEXCEPT
76704     {
76705       return std::tie( sType,
76706                        pNext,
76707                        flags,
76708                        attachmentCount,
76709                        pAttachments,
76710                        subpassCount,
76711                        pSubpasses,
76712                        dependencyCount,
76713                        pDependencies,
76714                        correlatedViewMaskCount,
76715                        pCorrelatedViewMasks );
76716     }
76717 
76718 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
76719     auto operator<=>( RenderPassCreateInfo2 const & ) const = default;
76720 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassCreateInfo276721     bool operator==( RenderPassCreateInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
76722     {
76723       return this->reflect() == rhs.reflect();
76724     }
76725 
operator !=VULKAN_HPP_NAMESPACE::RenderPassCreateInfo276726     bool operator!=( RenderPassCreateInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
76727     {
76728       return this->reflect() != rhs.reflect();
76729     }
76730 #endif
76731 
76732   public:
76733     VULKAN_HPP_NAMESPACE::StructureType                  sType           = StructureType::eRenderPassCreateInfo2;
76734     const void *                                         pNext           = {};
76735     VULKAN_HPP_NAMESPACE::RenderPassCreateFlags          flags           = {};
76736     uint32_t                                             attachmentCount = {};
76737     const VULKAN_HPP_NAMESPACE::AttachmentDescription2 * pAttachments    = {};
76738     uint32_t                                             subpassCount    = {};
76739     const VULKAN_HPP_NAMESPACE::SubpassDescription2 *    pSubpasses      = {};
76740     uint32_t                                             dependencyCount = {};
76741     const VULKAN_HPP_NAMESPACE::SubpassDependency2 *     pDependencies   = {};
76742     uint32_t                                             correlatedViewMaskCount = {};
76743     const uint32_t *                                     pCorrelatedViewMasks    = {};
76744   };
76745   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 ) == sizeof( VkRenderPassCreateInfo2 ),
76746                             "struct and wrapper have different size!" );
76747   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2>::value,
76748                             "struct wrapper is not a standard layout!" );
76749   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2>::value,
76750                             "RenderPassCreateInfo2 is not nothrow_move_constructible!" );
76751 
76752   template <>
76753   struct CppType<StructureType, StructureType::eRenderPassCreateInfo2>
76754   {
76755     using Type = RenderPassCreateInfo2;
76756   };
76757   using RenderPassCreateInfo2KHR = RenderPassCreateInfo2;
76758 
76759   struct RenderPassFragmentDensityMapCreateInfoEXT
76760   {
76761     using NativeType = VkRenderPassFragmentDensityMapCreateInfoEXT;
76762 
76763     static const bool                                  allowDuplicate = false;
76764     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
76765       StructureType::eRenderPassFragmentDensityMapCreateInfoEXT;
76766 
76767 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassFragmentDensityMapCreateInfoEXTVULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT76768     VULKAN_HPP_CONSTEXPR RenderPassFragmentDensityMapCreateInfoEXT(
76769       VULKAN_HPP_NAMESPACE::AttachmentReference fragmentDensityMapAttachment_ = {} ) VULKAN_HPP_NOEXCEPT
76770       : fragmentDensityMapAttachment( fragmentDensityMapAttachment_ )
76771     {}
76772 
76773     VULKAN_HPP_CONSTEXPR RenderPassFragmentDensityMapCreateInfoEXT(
76774       RenderPassFragmentDensityMapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76775 
RenderPassFragmentDensityMapCreateInfoEXTVULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT76776     RenderPassFragmentDensityMapCreateInfoEXT( VkRenderPassFragmentDensityMapCreateInfoEXT const & rhs )
76777       VULKAN_HPP_NOEXCEPT
76778       : RenderPassFragmentDensityMapCreateInfoEXT(
76779           *reinterpret_cast<RenderPassFragmentDensityMapCreateInfoEXT const *>( &rhs ) )
76780     {}
76781 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
76782 
76783     RenderPassFragmentDensityMapCreateInfoEXT &
76784       operator=( RenderPassFragmentDensityMapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76785 
76786     RenderPassFragmentDensityMapCreateInfoEXT &
operator =VULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT76787       operator=( VkRenderPassFragmentDensityMapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
76788     {
76789       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT const *>( &rhs );
76790       return *this;
76791     }
76792 
76793 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
76794     VULKAN_HPP_CONSTEXPR_14 RenderPassFragmentDensityMapCreateInfoEXT &
setPNextVULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT76795                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
76796     {
76797       pNext = pNext_;
76798       return *this;
76799     }
76800 
setFragmentDensityMapAttachmentVULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT76801     VULKAN_HPP_CONSTEXPR_14 RenderPassFragmentDensityMapCreateInfoEXT & setFragmentDensityMapAttachment(
76802       VULKAN_HPP_NAMESPACE::AttachmentReference const & fragmentDensityMapAttachment_ ) VULKAN_HPP_NOEXCEPT
76803     {
76804       fragmentDensityMapAttachment = fragmentDensityMapAttachment_;
76805       return *this;
76806     }
76807 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
76808 
operator VkRenderPassFragmentDensityMapCreateInfoEXT const&VULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT76809     explicit operator VkRenderPassFragmentDensityMapCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
76810     {
76811       return *reinterpret_cast<const VkRenderPassFragmentDensityMapCreateInfoEXT *>( this );
76812     }
76813 
operator VkRenderPassFragmentDensityMapCreateInfoEXT&VULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT76814     explicit operator VkRenderPassFragmentDensityMapCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
76815     {
76816       return *reinterpret_cast<VkRenderPassFragmentDensityMapCreateInfoEXT *>( this );
76817     }
76818 
76819 #if 14 <= VULKAN_HPP_CPP_VERSION
76820     auto
76821 #else
76822     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
76823                const void * const &,
76824                VULKAN_HPP_NAMESPACE::AttachmentReference const &>
76825 #endif
reflectVULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT76826       reflect() const VULKAN_HPP_NOEXCEPT
76827     {
76828       return std::tie( sType, pNext, fragmentDensityMapAttachment );
76829     }
76830 
76831 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
76832     auto operator<=>( RenderPassFragmentDensityMapCreateInfoEXT const & ) const = default;
76833 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT76834     bool operator==( RenderPassFragmentDensityMapCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
76835     {
76836       return this->reflect() == rhs.reflect();
76837     }
76838 
operator !=VULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT76839     bool operator!=( RenderPassFragmentDensityMapCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
76840     {
76841       return this->reflect() != rhs.reflect();
76842     }
76843 #endif
76844 
76845   public:
76846     VULKAN_HPP_NAMESPACE::StructureType       sType = StructureType::eRenderPassFragmentDensityMapCreateInfoEXT;
76847     const void *                              pNext = {};
76848     VULKAN_HPP_NAMESPACE::AttachmentReference fragmentDensityMapAttachment = {};
76849   };
76850   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT ) ==
76851                               sizeof( VkRenderPassFragmentDensityMapCreateInfoEXT ),
76852                             "struct and wrapper have different size!" );
76853   VULKAN_HPP_STATIC_ASSERT(
76854     std::is_standard_layout<VULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT>::value,
76855     "struct wrapper is not a standard layout!" );
76856   VULKAN_HPP_STATIC_ASSERT(
76857     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT>::value,
76858     "RenderPassFragmentDensityMapCreateInfoEXT is not nothrow_move_constructible!" );
76859 
76860   template <>
76861   struct CppType<StructureType, StructureType::eRenderPassFragmentDensityMapCreateInfoEXT>
76862   {
76863     using Type = RenderPassFragmentDensityMapCreateInfoEXT;
76864   };
76865 
76866   struct RenderPassInputAttachmentAspectCreateInfo
76867   {
76868     using NativeType = VkRenderPassInputAttachmentAspectCreateInfo;
76869 
76870     static const bool                                  allowDuplicate = false;
76871     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
76872       StructureType::eRenderPassInputAttachmentAspectCreateInfo;
76873 
76874 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassInputAttachmentAspectCreateInfoVULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo76875     VULKAN_HPP_CONSTEXPR RenderPassInputAttachmentAspectCreateInfo(
76876       uint32_t                                                     aspectReferenceCount_ = {},
76877       const VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference * pAspectReferences_    = {} ) VULKAN_HPP_NOEXCEPT
76878       : aspectReferenceCount( aspectReferenceCount_ )
76879       , pAspectReferences( pAspectReferences_ )
76880     {}
76881 
76882     VULKAN_HPP_CONSTEXPR RenderPassInputAttachmentAspectCreateInfo(
76883       RenderPassInputAttachmentAspectCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76884 
RenderPassInputAttachmentAspectCreateInfoVULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo76885     RenderPassInputAttachmentAspectCreateInfo( VkRenderPassInputAttachmentAspectCreateInfo const & rhs )
76886       VULKAN_HPP_NOEXCEPT
76887       : RenderPassInputAttachmentAspectCreateInfo(
76888           *reinterpret_cast<RenderPassInputAttachmentAspectCreateInfo const *>( &rhs ) )
76889     {}
76890 
76891 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderPassInputAttachmentAspectCreateInfoVULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo76892     RenderPassInputAttachmentAspectCreateInfo(
76893       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference> const &
76894         aspectReferences_ )
76895       : aspectReferenceCount( static_cast<uint32_t>( aspectReferences_.size() ) )
76896       , pAspectReferences( aspectReferences_.data() )
76897     {}
76898 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
76899 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
76900 
76901     RenderPassInputAttachmentAspectCreateInfo &
76902       operator=( RenderPassInputAttachmentAspectCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76903 
76904     RenderPassInputAttachmentAspectCreateInfo &
operator =VULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo76905       operator=( VkRenderPassInputAttachmentAspectCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
76906     {
76907       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo const *>( &rhs );
76908       return *this;
76909     }
76910 
76911 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
76912     VULKAN_HPP_CONSTEXPR_14 RenderPassInputAttachmentAspectCreateInfo &
setPNextVULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo76913                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
76914     {
76915       pNext = pNext_;
76916       return *this;
76917     }
76918 
76919     VULKAN_HPP_CONSTEXPR_14 RenderPassInputAttachmentAspectCreateInfo &
setAspectReferenceCountVULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo76920                             setAspectReferenceCount( uint32_t aspectReferenceCount_ ) VULKAN_HPP_NOEXCEPT
76921     {
76922       aspectReferenceCount = aspectReferenceCount_;
76923       return *this;
76924     }
76925 
setPAspectReferencesVULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo76926     VULKAN_HPP_CONSTEXPR_14 RenderPassInputAttachmentAspectCreateInfo & setPAspectReferences(
76927       const VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference * pAspectReferences_ ) VULKAN_HPP_NOEXCEPT
76928     {
76929       pAspectReferences = pAspectReferences_;
76930       return *this;
76931     }
76932 
76933 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAspectReferencesVULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo76934     RenderPassInputAttachmentAspectCreateInfo & setAspectReferences(
76935       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference> const &
76936         aspectReferences_ ) VULKAN_HPP_NOEXCEPT
76937     {
76938       aspectReferenceCount = static_cast<uint32_t>( aspectReferences_.size() );
76939       pAspectReferences    = aspectReferences_.data();
76940       return *this;
76941     }
76942 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
76943 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
76944 
operator VkRenderPassInputAttachmentAspectCreateInfo const&VULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo76945     explicit operator VkRenderPassInputAttachmentAspectCreateInfo const &() const VULKAN_HPP_NOEXCEPT
76946     {
76947       return *reinterpret_cast<const VkRenderPassInputAttachmentAspectCreateInfo *>( this );
76948     }
76949 
operator VkRenderPassInputAttachmentAspectCreateInfo&VULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo76950     explicit operator VkRenderPassInputAttachmentAspectCreateInfo &() VULKAN_HPP_NOEXCEPT
76951     {
76952       return *reinterpret_cast<VkRenderPassInputAttachmentAspectCreateInfo *>( this );
76953     }
76954 
76955 #if 14 <= VULKAN_HPP_CPP_VERSION
76956     auto
76957 #else
76958     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
76959                const void * const &,
76960                uint32_t const &,
76961                const VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference * const &>
76962 #endif
reflectVULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo76963       reflect() const VULKAN_HPP_NOEXCEPT
76964     {
76965       return std::tie( sType, pNext, aspectReferenceCount, pAspectReferences );
76966     }
76967 
76968 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
76969     auto operator<=>( RenderPassInputAttachmentAspectCreateInfo const & ) const = default;
76970 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo76971     bool operator==( RenderPassInputAttachmentAspectCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
76972     {
76973       return this->reflect() == rhs.reflect();
76974     }
76975 
operator !=VULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo76976     bool operator!=( RenderPassInputAttachmentAspectCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
76977     {
76978       return this->reflect() != rhs.reflect();
76979     }
76980 #endif
76981 
76982   public:
76983     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassInputAttachmentAspectCreateInfo;
76984     const void *                        pNext = {};
76985     uint32_t                            aspectReferenceCount                       = {};
76986     const VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference * pAspectReferences = {};
76987   };
76988   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo ) ==
76989                               sizeof( VkRenderPassInputAttachmentAspectCreateInfo ),
76990                             "struct and wrapper have different size!" );
76991   VULKAN_HPP_STATIC_ASSERT(
76992     std::is_standard_layout<VULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo>::value,
76993     "struct wrapper is not a standard layout!" );
76994   VULKAN_HPP_STATIC_ASSERT(
76995     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo>::value,
76996     "RenderPassInputAttachmentAspectCreateInfo is not nothrow_move_constructible!" );
76997 
76998   template <>
76999   struct CppType<StructureType, StructureType::eRenderPassInputAttachmentAspectCreateInfo>
77000   {
77001     using Type = RenderPassInputAttachmentAspectCreateInfo;
77002   };
77003   using RenderPassInputAttachmentAspectCreateInfoKHR = RenderPassInputAttachmentAspectCreateInfo;
77004 
77005   struct RenderPassMultiviewCreateInfo
77006   {
77007     using NativeType = VkRenderPassMultiviewCreateInfo;
77008 
77009     static const bool                                  allowDuplicate = false;
77010     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderPassMultiviewCreateInfo;
77011 
77012 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassMultiviewCreateInfoVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo77013     VULKAN_HPP_CONSTEXPR RenderPassMultiviewCreateInfo( uint32_t         subpassCount_         = {},
77014                                                         const uint32_t * pViewMasks_           = {},
77015                                                         uint32_t         dependencyCount_      = {},
77016                                                         const int32_t *  pViewOffsets_         = {},
77017                                                         uint32_t         correlationMaskCount_ = {},
77018                                                         const uint32_t * pCorrelationMasks_ = {} ) VULKAN_HPP_NOEXCEPT
77019       : subpassCount( subpassCount_ )
77020       , pViewMasks( pViewMasks_ )
77021       , dependencyCount( dependencyCount_ )
77022       , pViewOffsets( pViewOffsets_ )
77023       , correlationMaskCount( correlationMaskCount_ )
77024       , pCorrelationMasks( pCorrelationMasks_ )
77025     {}
77026 
77027     VULKAN_HPP_CONSTEXPR
77028       RenderPassMultiviewCreateInfo( RenderPassMultiviewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77029 
RenderPassMultiviewCreateInfoVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo77030     RenderPassMultiviewCreateInfo( VkRenderPassMultiviewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
77031       : RenderPassMultiviewCreateInfo( *reinterpret_cast<RenderPassMultiviewCreateInfo const *>( &rhs ) )
77032     {}
77033 
77034 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderPassMultiviewCreateInfoVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo77035     RenderPassMultiviewCreateInfo(
77036       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & viewMasks_,
77037       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const int32_t> const &  viewOffsets_      = {},
77038       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & correlationMasks_ = {} )
77039       : subpassCount( static_cast<uint32_t>( viewMasks_.size() ) )
77040       , pViewMasks( viewMasks_.data() )
77041       , dependencyCount( static_cast<uint32_t>( viewOffsets_.size() ) )
77042       , pViewOffsets( viewOffsets_.data() )
77043       , correlationMaskCount( static_cast<uint32_t>( correlationMasks_.size() ) )
77044       , pCorrelationMasks( correlationMasks_.data() )
77045     {}
77046 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
77047 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
77048 
77049     RenderPassMultiviewCreateInfo &
77050       operator=( RenderPassMultiviewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77051 
operator =VULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo77052     RenderPassMultiviewCreateInfo & operator=( VkRenderPassMultiviewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
77053     {
77054       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo const *>( &rhs );
77055       return *this;
77056     }
77057 
77058 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo77059     VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
77060     {
77061       pNext = pNext_;
77062       return *this;
77063     }
77064 
77065     VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo &
setSubpassCountVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo77066                             setSubpassCount( uint32_t subpassCount_ ) VULKAN_HPP_NOEXCEPT
77067     {
77068       subpassCount = subpassCount_;
77069       return *this;
77070     }
77071 
77072     VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo &
setPViewMasksVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo77073                             setPViewMasks( const uint32_t * pViewMasks_ ) VULKAN_HPP_NOEXCEPT
77074     {
77075       pViewMasks = pViewMasks_;
77076       return *this;
77077     }
77078 
77079 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setViewMasksVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo77080     RenderPassMultiviewCreateInfo & setViewMasks(
77081       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & viewMasks_ ) VULKAN_HPP_NOEXCEPT
77082     {
77083       subpassCount = static_cast<uint32_t>( viewMasks_.size() );
77084       pViewMasks   = viewMasks_.data();
77085       return *this;
77086     }
77087 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
77088 
77089     VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo &
setDependencyCountVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo77090                             setDependencyCount( uint32_t dependencyCount_ ) VULKAN_HPP_NOEXCEPT
77091     {
77092       dependencyCount = dependencyCount_;
77093       return *this;
77094     }
77095 
77096     VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo &
setPViewOffsetsVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo77097                             setPViewOffsets( const int32_t * pViewOffsets_ ) VULKAN_HPP_NOEXCEPT
77098     {
77099       pViewOffsets = pViewOffsets_;
77100       return *this;
77101     }
77102 
77103 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setViewOffsetsVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo77104     RenderPassMultiviewCreateInfo & setViewOffsets(
77105       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const int32_t> const & viewOffsets_ ) VULKAN_HPP_NOEXCEPT
77106     {
77107       dependencyCount = static_cast<uint32_t>( viewOffsets_.size() );
77108       pViewOffsets    = viewOffsets_.data();
77109       return *this;
77110     }
77111 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
77112 
77113     VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo &
setCorrelationMaskCountVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo77114                             setCorrelationMaskCount( uint32_t correlationMaskCount_ ) VULKAN_HPP_NOEXCEPT
77115     {
77116       correlationMaskCount = correlationMaskCount_;
77117       return *this;
77118     }
77119 
77120     VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo &
setPCorrelationMasksVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo77121                             setPCorrelationMasks( const uint32_t * pCorrelationMasks_ ) VULKAN_HPP_NOEXCEPT
77122     {
77123       pCorrelationMasks = pCorrelationMasks_;
77124       return *this;
77125     }
77126 
77127 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setCorrelationMasksVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo77128     RenderPassMultiviewCreateInfo & setCorrelationMasks(
77129       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & correlationMasks_ ) VULKAN_HPP_NOEXCEPT
77130     {
77131       correlationMaskCount = static_cast<uint32_t>( correlationMasks_.size() );
77132       pCorrelationMasks    = correlationMasks_.data();
77133       return *this;
77134     }
77135 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
77136 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
77137 
operator VkRenderPassMultiviewCreateInfo const&VULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo77138     explicit operator VkRenderPassMultiviewCreateInfo const &() const VULKAN_HPP_NOEXCEPT
77139     {
77140       return *reinterpret_cast<const VkRenderPassMultiviewCreateInfo *>( this );
77141     }
77142 
operator VkRenderPassMultiviewCreateInfo&VULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo77143     explicit operator VkRenderPassMultiviewCreateInfo &() VULKAN_HPP_NOEXCEPT
77144     {
77145       return *reinterpret_cast<VkRenderPassMultiviewCreateInfo *>( this );
77146     }
77147 
77148 #if 14 <= VULKAN_HPP_CPP_VERSION
77149     auto
77150 #else
77151     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
77152                const void * const &,
77153                uint32_t const &,
77154                const uint32_t * const &,
77155                uint32_t const &,
77156                const int32_t * const &,
77157                uint32_t const &,
77158                const uint32_t * const &>
77159 #endif
reflectVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo77160       reflect() const VULKAN_HPP_NOEXCEPT
77161     {
77162       return std::tie( sType,
77163                        pNext,
77164                        subpassCount,
77165                        pViewMasks,
77166                        dependencyCount,
77167                        pViewOffsets,
77168                        correlationMaskCount,
77169                        pCorrelationMasks );
77170     }
77171 
77172 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
77173     auto operator<=>( RenderPassMultiviewCreateInfo const & ) const = default;
77174 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo77175     bool operator==( RenderPassMultiviewCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
77176     {
77177       return this->reflect() == rhs.reflect();
77178     }
77179 
operator !=VULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo77180     bool operator!=( RenderPassMultiviewCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
77181     {
77182       return this->reflect() != rhs.reflect();
77183     }
77184 #endif
77185 
77186   public:
77187     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::eRenderPassMultiviewCreateInfo;
77188     const void *                        pNext                = {};
77189     uint32_t                            subpassCount         = {};
77190     const uint32_t *                    pViewMasks           = {};
77191     uint32_t                            dependencyCount      = {};
77192     const int32_t *                     pViewOffsets         = {};
77193     uint32_t                            correlationMaskCount = {};
77194     const uint32_t *                    pCorrelationMasks    = {};
77195   };
77196   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo ) ==
77197                               sizeof( VkRenderPassMultiviewCreateInfo ),
77198                             "struct and wrapper have different size!" );
77199   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo>::value,
77200                             "struct wrapper is not a standard layout!" );
77201   VULKAN_HPP_STATIC_ASSERT(
77202     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo>::value,
77203     "RenderPassMultiviewCreateInfo is not nothrow_move_constructible!" );
77204 
77205   template <>
77206   struct CppType<StructureType, StructureType::eRenderPassMultiviewCreateInfo>
77207   {
77208     using Type = RenderPassMultiviewCreateInfo;
77209   };
77210   using RenderPassMultiviewCreateInfoKHR = RenderPassMultiviewCreateInfo;
77211 
77212   struct SubpassSampleLocationsEXT
77213   {
77214     using NativeType = VkSubpassSampleLocationsEXT;
77215 
77216 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubpassSampleLocationsEXTVULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT77217     VULKAN_HPP_CONSTEXPR SubpassSampleLocationsEXT(
77218       uint32_t                                     subpassIndex_        = {},
77219       VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT sampleLocationsInfo_ = {} ) VULKAN_HPP_NOEXCEPT
77220       : subpassIndex( subpassIndex_ )
77221       , sampleLocationsInfo( sampleLocationsInfo_ )
77222     {}
77223 
77224     VULKAN_HPP_CONSTEXPR
77225       SubpassSampleLocationsEXT( SubpassSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77226 
SubpassSampleLocationsEXTVULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT77227     SubpassSampleLocationsEXT( VkSubpassSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT
77228       : SubpassSampleLocationsEXT( *reinterpret_cast<SubpassSampleLocationsEXT const *>( &rhs ) )
77229     {}
77230 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
77231 
77232     SubpassSampleLocationsEXT & operator=( SubpassSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77233 
operator =VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT77234     SubpassSampleLocationsEXT & operator=( VkSubpassSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT
77235     {
77236       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT const *>( &rhs );
77237       return *this;
77238     }
77239 
77240 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSubpassIndexVULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT77241     VULKAN_HPP_CONSTEXPR_14 SubpassSampleLocationsEXT & setSubpassIndex( uint32_t subpassIndex_ ) VULKAN_HPP_NOEXCEPT
77242     {
77243       subpassIndex = subpassIndex_;
77244       return *this;
77245     }
77246 
setSampleLocationsInfoVULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT77247     VULKAN_HPP_CONSTEXPR_14 SubpassSampleLocationsEXT & setSampleLocationsInfo(
77248       VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const & sampleLocationsInfo_ ) VULKAN_HPP_NOEXCEPT
77249     {
77250       sampleLocationsInfo = sampleLocationsInfo_;
77251       return *this;
77252     }
77253 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
77254 
operator VkSubpassSampleLocationsEXT const&VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT77255     explicit operator VkSubpassSampleLocationsEXT const &() const VULKAN_HPP_NOEXCEPT
77256     {
77257       return *reinterpret_cast<const VkSubpassSampleLocationsEXT *>( this );
77258     }
77259 
operator VkSubpassSampleLocationsEXT&VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT77260     explicit operator VkSubpassSampleLocationsEXT &() VULKAN_HPP_NOEXCEPT
77261     {
77262       return *reinterpret_cast<VkSubpassSampleLocationsEXT *>( this );
77263     }
77264 
77265 #if 14 <= VULKAN_HPP_CPP_VERSION
77266     auto
77267 #else
77268     std::tuple<uint32_t const &, VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const &>
77269 #endif
reflectVULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT77270       reflect() const VULKAN_HPP_NOEXCEPT
77271     {
77272       return std::tie( subpassIndex, sampleLocationsInfo );
77273     }
77274 
77275 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
77276     auto operator<=>( SubpassSampleLocationsEXT const & ) const = default;
77277 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT77278     bool operator==( SubpassSampleLocationsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
77279     {
77280       return this->reflect() == rhs.reflect();
77281     }
77282 
operator !=VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT77283     bool operator!=( SubpassSampleLocationsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
77284     {
77285       return this->reflect() != rhs.reflect();
77286     }
77287 #endif
77288 
77289   public:
77290     uint32_t                                     subpassIndex        = {};
77291     VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT sampleLocationsInfo = {};
77292   };
77293   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT ) ==
77294                               sizeof( VkSubpassSampleLocationsEXT ),
77295                             "struct and wrapper have different size!" );
77296   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT>::value,
77297                             "struct wrapper is not a standard layout!" );
77298   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT>::value,
77299                             "SubpassSampleLocationsEXT is not nothrow_move_constructible!" );
77300 
77301   struct RenderPassSampleLocationsBeginInfoEXT
77302   {
77303     using NativeType = VkRenderPassSampleLocationsBeginInfoEXT;
77304 
77305     static const bool                                  allowDuplicate = false;
77306     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
77307       StructureType::eRenderPassSampleLocationsBeginInfoEXT;
77308 
77309 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassSampleLocationsBeginInfoEXTVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT77310     VULKAN_HPP_CONSTEXPR RenderPassSampleLocationsBeginInfoEXT(
77311       uint32_t                                                   attachmentInitialSampleLocationsCount_ = {},
77312       const VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT * pAttachmentInitialSampleLocations_     = {},
77313       uint32_t                                                   postSubpassSampleLocationsCount_       = {},
77314       const VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT *    pPostSubpassSampleLocations_ = {} ) VULKAN_HPP_NOEXCEPT
77315       : attachmentInitialSampleLocationsCount( attachmentInitialSampleLocationsCount_ )
77316       , pAttachmentInitialSampleLocations( pAttachmentInitialSampleLocations_ )
77317       , postSubpassSampleLocationsCount( postSubpassSampleLocationsCount_ )
77318       , pPostSubpassSampleLocations( pPostSubpassSampleLocations_ )
77319     {}
77320 
77321     VULKAN_HPP_CONSTEXPR RenderPassSampleLocationsBeginInfoEXT( RenderPassSampleLocationsBeginInfoEXT const & rhs )
77322       VULKAN_HPP_NOEXCEPT = default;
77323 
RenderPassSampleLocationsBeginInfoEXTVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT77324     RenderPassSampleLocationsBeginInfoEXT( VkRenderPassSampleLocationsBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
77325       : RenderPassSampleLocationsBeginInfoEXT(
77326           *reinterpret_cast<RenderPassSampleLocationsBeginInfoEXT const *>( &rhs ) )
77327     {}
77328 
77329 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderPassSampleLocationsBeginInfoEXTVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT77330     RenderPassSampleLocationsBeginInfoEXT(
77331       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT> const &
77332         attachmentInitialSampleLocations_,
77333       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT> const &
77334         postSubpassSampleLocations_ = {} )
77335       : attachmentInitialSampleLocationsCount( static_cast<uint32_t>( attachmentInitialSampleLocations_.size() ) )
77336       , pAttachmentInitialSampleLocations( attachmentInitialSampleLocations_.data() )
77337       , postSubpassSampleLocationsCount( static_cast<uint32_t>( postSubpassSampleLocations_.size() ) )
77338       , pPostSubpassSampleLocations( postSubpassSampleLocations_.data() )
77339     {}
77340 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
77341 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
77342 
77343     RenderPassSampleLocationsBeginInfoEXT &
77344       operator=( RenderPassSampleLocationsBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77345 
77346     RenderPassSampleLocationsBeginInfoEXT &
operator =VULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT77347       operator=( VkRenderPassSampleLocationsBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
77348     {
77349       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT const *>( &rhs );
77350       return *this;
77351     }
77352 
77353 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT77354     VULKAN_HPP_CONSTEXPR_14 RenderPassSampleLocationsBeginInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
77355     {
77356       pNext = pNext_;
77357       return *this;
77358     }
77359 
77360     VULKAN_HPP_CONSTEXPR_14 RenderPassSampleLocationsBeginInfoEXT &
setAttachmentInitialSampleLocationsCountVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT77361       setAttachmentInitialSampleLocationsCount( uint32_t attachmentInitialSampleLocationsCount_ ) VULKAN_HPP_NOEXCEPT
77362     {
77363       attachmentInitialSampleLocationsCount = attachmentInitialSampleLocationsCount_;
77364       return *this;
77365     }
77366 
setPAttachmentInitialSampleLocationsVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT77367     VULKAN_HPP_CONSTEXPR_14 RenderPassSampleLocationsBeginInfoEXT & setPAttachmentInitialSampleLocations(
77368       const VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT * pAttachmentInitialSampleLocations_ )
77369       VULKAN_HPP_NOEXCEPT
77370     {
77371       pAttachmentInitialSampleLocations = pAttachmentInitialSampleLocations_;
77372       return *this;
77373     }
77374 
77375 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAttachmentInitialSampleLocationsVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT77376     RenderPassSampleLocationsBeginInfoEXT & setAttachmentInitialSampleLocations(
77377       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT> const &
77378         attachmentInitialSampleLocations_ ) VULKAN_HPP_NOEXCEPT
77379     {
77380       attachmentInitialSampleLocationsCount = static_cast<uint32_t>( attachmentInitialSampleLocations_.size() );
77381       pAttachmentInitialSampleLocations     = attachmentInitialSampleLocations_.data();
77382       return *this;
77383     }
77384 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
77385 
77386     VULKAN_HPP_CONSTEXPR_14 RenderPassSampleLocationsBeginInfoEXT &
setPostSubpassSampleLocationsCountVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT77387       setPostSubpassSampleLocationsCount( uint32_t postSubpassSampleLocationsCount_ ) VULKAN_HPP_NOEXCEPT
77388     {
77389       postSubpassSampleLocationsCount = postSubpassSampleLocationsCount_;
77390       return *this;
77391     }
77392 
setPPostSubpassSampleLocationsVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT77393     VULKAN_HPP_CONSTEXPR_14 RenderPassSampleLocationsBeginInfoEXT & setPPostSubpassSampleLocations(
77394       const VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT * pPostSubpassSampleLocations_ ) VULKAN_HPP_NOEXCEPT
77395     {
77396       pPostSubpassSampleLocations = pPostSubpassSampleLocations_;
77397       return *this;
77398     }
77399 
77400 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPostSubpassSampleLocationsVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT77401     RenderPassSampleLocationsBeginInfoEXT & setPostSubpassSampleLocations(
77402       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT> const &
77403         postSubpassSampleLocations_ ) VULKAN_HPP_NOEXCEPT
77404     {
77405       postSubpassSampleLocationsCount = static_cast<uint32_t>( postSubpassSampleLocations_.size() );
77406       pPostSubpassSampleLocations     = postSubpassSampleLocations_.data();
77407       return *this;
77408     }
77409 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
77410 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
77411 
operator VkRenderPassSampleLocationsBeginInfoEXT const&VULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT77412     explicit operator VkRenderPassSampleLocationsBeginInfoEXT const &() const VULKAN_HPP_NOEXCEPT
77413     {
77414       return *reinterpret_cast<const VkRenderPassSampleLocationsBeginInfoEXT *>( this );
77415     }
77416 
operator VkRenderPassSampleLocationsBeginInfoEXT&VULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT77417     explicit operator VkRenderPassSampleLocationsBeginInfoEXT &() VULKAN_HPP_NOEXCEPT
77418     {
77419       return *reinterpret_cast<VkRenderPassSampleLocationsBeginInfoEXT *>( this );
77420     }
77421 
77422 #if 14 <= VULKAN_HPP_CPP_VERSION
77423     auto
77424 #else
77425     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
77426                const void * const &,
77427                uint32_t const &,
77428                const VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT * const &,
77429                uint32_t const &,
77430                const VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT * const &>
77431 #endif
reflectVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT77432       reflect() const VULKAN_HPP_NOEXCEPT
77433     {
77434       return std::tie( sType,
77435                        pNext,
77436                        attachmentInitialSampleLocationsCount,
77437                        pAttachmentInitialSampleLocations,
77438                        postSubpassSampleLocationsCount,
77439                        pPostSubpassSampleLocations );
77440     }
77441 
77442 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
77443     auto operator<=>( RenderPassSampleLocationsBeginInfoEXT const & ) const = default;
77444 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT77445     bool operator==( RenderPassSampleLocationsBeginInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
77446     {
77447       return this->reflect() == rhs.reflect();
77448     }
77449 
operator !=VULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT77450     bool operator!=( RenderPassSampleLocationsBeginInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
77451     {
77452       return this->reflect() != rhs.reflect();
77453     }
77454 #endif
77455 
77456   public:
77457     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassSampleLocationsBeginInfoEXT;
77458     const void *                        pNext = {};
77459     uint32_t                            attachmentInitialSampleLocationsCount                    = {};
77460     const VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT * pAttachmentInitialSampleLocations = {};
77461     uint32_t                                                   postSubpassSampleLocationsCount   = {};
77462     const VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT *    pPostSubpassSampleLocations       = {};
77463   };
77464   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT ) ==
77465                               sizeof( VkRenderPassSampleLocationsBeginInfoEXT ),
77466                             "struct and wrapper have different size!" );
77467   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT>::value,
77468                             "struct wrapper is not a standard layout!" );
77469   VULKAN_HPP_STATIC_ASSERT(
77470     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT>::value,
77471     "RenderPassSampleLocationsBeginInfoEXT is not nothrow_move_constructible!" );
77472 
77473   template <>
77474   struct CppType<StructureType, StructureType::eRenderPassSampleLocationsBeginInfoEXT>
77475   {
77476     using Type = RenderPassSampleLocationsBeginInfoEXT;
77477   };
77478 
77479   struct RenderPassTransformBeginInfoQCOM
77480   {
77481     using NativeType = VkRenderPassTransformBeginInfoQCOM;
77482 
77483     static const bool                                  allowDuplicate = false;
77484     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassTransformBeginInfoQCOM;
77485 
77486 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassTransformBeginInfoQCOMVULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM77487     VULKAN_HPP_CONSTEXPR RenderPassTransformBeginInfoQCOM(
77488       VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_ =
77489         VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity ) VULKAN_HPP_NOEXCEPT : transform( transform_ )
77490     {}
77491 
77492     VULKAN_HPP_CONSTEXPR
77493       RenderPassTransformBeginInfoQCOM( RenderPassTransformBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77494 
RenderPassTransformBeginInfoQCOMVULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM77495     RenderPassTransformBeginInfoQCOM( VkRenderPassTransformBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
77496       : RenderPassTransformBeginInfoQCOM( *reinterpret_cast<RenderPassTransformBeginInfoQCOM const *>( &rhs ) )
77497     {}
77498 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
77499 
77500     RenderPassTransformBeginInfoQCOM &
77501       operator=( RenderPassTransformBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77502 
operator =VULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM77503     RenderPassTransformBeginInfoQCOM & operator=( VkRenderPassTransformBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
77504     {
77505       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM const *>( &rhs );
77506       return *this;
77507     }
77508 
77509 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM77510     VULKAN_HPP_CONSTEXPR_14 RenderPassTransformBeginInfoQCOM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
77511     {
77512       pNext = pNext_;
77513       return *this;
77514     }
77515 
77516     VULKAN_HPP_CONSTEXPR_14 RenderPassTransformBeginInfoQCOM &
setTransformVULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM77517       setTransform( VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_ ) VULKAN_HPP_NOEXCEPT
77518     {
77519       transform = transform_;
77520       return *this;
77521     }
77522 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
77523 
operator VkRenderPassTransformBeginInfoQCOM const&VULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM77524     explicit operator VkRenderPassTransformBeginInfoQCOM const &() const VULKAN_HPP_NOEXCEPT
77525     {
77526       return *reinterpret_cast<const VkRenderPassTransformBeginInfoQCOM *>( this );
77527     }
77528 
operator VkRenderPassTransformBeginInfoQCOM&VULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM77529     explicit operator VkRenderPassTransformBeginInfoQCOM &() VULKAN_HPP_NOEXCEPT
77530     {
77531       return *reinterpret_cast<VkRenderPassTransformBeginInfoQCOM *>( this );
77532     }
77533 
77534 #if 14 <= VULKAN_HPP_CPP_VERSION
77535     auto
77536 #else
77537     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
77538                void * const &,
77539                VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR const &>
77540 #endif
reflectVULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM77541       reflect() const VULKAN_HPP_NOEXCEPT
77542     {
77543       return std::tie( sType, pNext, transform );
77544     }
77545 
77546 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
77547     auto operator<=>( RenderPassTransformBeginInfoQCOM const & ) const = default;
77548 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM77549     bool operator==( RenderPassTransformBeginInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
77550     {
77551       return this->reflect() == rhs.reflect();
77552     }
77553 
operator !=VULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM77554     bool operator!=( RenderPassTransformBeginInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
77555     {
77556       return this->reflect() != rhs.reflect();
77557     }
77558 #endif
77559 
77560   public:
77561     VULKAN_HPP_NAMESPACE::StructureType               sType = StructureType::eRenderPassTransformBeginInfoQCOM;
77562     void *                                            pNext = {};
77563     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform =
77564       VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity;
77565   };
77566   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM ) ==
77567                               sizeof( VkRenderPassTransformBeginInfoQCOM ),
77568                             "struct and wrapper have different size!" );
77569   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM>::value,
77570                             "struct wrapper is not a standard layout!" );
77571   VULKAN_HPP_STATIC_ASSERT(
77572     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM>::value,
77573     "RenderPassTransformBeginInfoQCOM is not nothrow_move_constructible!" );
77574 
77575   template <>
77576   struct CppType<StructureType, StructureType::eRenderPassTransformBeginInfoQCOM>
77577   {
77578     using Type = RenderPassTransformBeginInfoQCOM;
77579   };
77580 
77581   struct RenderingAttachmentInfoKHR
77582   {
77583     using NativeType = VkRenderingAttachmentInfoKHR;
77584 
77585     static const bool                                  allowDuplicate = false;
77586     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderingAttachmentInfoKHR;
77587 
77588 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderingAttachmentInfoKHRVULKAN_HPP_NAMESPACE::RenderingAttachmentInfoKHR77589     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfoKHR(
77590       VULKAN_HPP_NAMESPACE::ImageView           imageView_          = {},
77591       VULKAN_HPP_NAMESPACE::ImageLayout         imageLayout_        = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
77592       VULKAN_HPP_NAMESPACE::ResolveModeFlagBits resolveMode_        = VULKAN_HPP_NAMESPACE::ResolveModeFlagBits::eNone,
77593       VULKAN_HPP_NAMESPACE::ImageView           resolveImageView_   = {},
77594       VULKAN_HPP_NAMESPACE::ImageLayout         resolveImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
77595       VULKAN_HPP_NAMESPACE::AttachmentLoadOp    loadOp_             = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad,
77596       VULKAN_HPP_NAMESPACE::AttachmentStoreOp   storeOp_            = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore,
77597       VULKAN_HPP_NAMESPACE::ClearValue          clearValue_         = {} ) VULKAN_HPP_NOEXCEPT
77598       : imageView( imageView_ )
77599       , imageLayout( imageLayout_ )
77600       , resolveMode( resolveMode_ )
77601       , resolveImageView( resolveImageView_ )
77602       , resolveImageLayout( resolveImageLayout_ )
77603       , loadOp( loadOp_ )
77604       , storeOp( storeOp_ )
77605       , clearValue( clearValue_ )
77606     {}
77607 
77608     VULKAN_HPP_CONSTEXPR_14
77609       RenderingAttachmentInfoKHR( RenderingAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77610 
RenderingAttachmentInfoKHRVULKAN_HPP_NAMESPACE::RenderingAttachmentInfoKHR77611     RenderingAttachmentInfoKHR( VkRenderingAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
77612       : RenderingAttachmentInfoKHR( *reinterpret_cast<RenderingAttachmentInfoKHR const *>( &rhs ) )
77613     {}
77614 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
77615 
77616     RenderingAttachmentInfoKHR & operator=( RenderingAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77617 
operator =VULKAN_HPP_NAMESPACE::RenderingAttachmentInfoKHR77618     RenderingAttachmentInfoKHR & operator=( VkRenderingAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
77619     {
77620       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderingAttachmentInfoKHR const *>( &rhs );
77621       return *this;
77622     }
77623 
77624 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderingAttachmentInfoKHR77625     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
77626     {
77627       pNext = pNext_;
77628       return *this;
77629     }
77630 
77631     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfoKHR &
setImageViewVULKAN_HPP_NAMESPACE::RenderingAttachmentInfoKHR77632                             setImageView( VULKAN_HPP_NAMESPACE::ImageView imageView_ ) VULKAN_HPP_NOEXCEPT
77633     {
77634       imageView = imageView_;
77635       return *this;
77636     }
77637 
77638     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfoKHR &
setImageLayoutVULKAN_HPP_NAMESPACE::RenderingAttachmentInfoKHR77639                             setImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout imageLayout_ ) VULKAN_HPP_NOEXCEPT
77640     {
77641       imageLayout = imageLayout_;
77642       return *this;
77643     }
77644 
77645     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfoKHR &
setResolveModeVULKAN_HPP_NAMESPACE::RenderingAttachmentInfoKHR77646                             setResolveMode( VULKAN_HPP_NAMESPACE::ResolveModeFlagBits resolveMode_ ) VULKAN_HPP_NOEXCEPT
77647     {
77648       resolveMode = resolveMode_;
77649       return *this;
77650     }
77651 
77652     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfoKHR &
setResolveImageViewVULKAN_HPP_NAMESPACE::RenderingAttachmentInfoKHR77653                             setResolveImageView( VULKAN_HPP_NAMESPACE::ImageView resolveImageView_ ) VULKAN_HPP_NOEXCEPT
77654     {
77655       resolveImageView = resolveImageView_;
77656       return *this;
77657     }
77658 
77659     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfoKHR &
setResolveImageLayoutVULKAN_HPP_NAMESPACE::RenderingAttachmentInfoKHR77660       setResolveImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout resolveImageLayout_ ) VULKAN_HPP_NOEXCEPT
77661     {
77662       resolveImageLayout = resolveImageLayout_;
77663       return *this;
77664     }
77665 
77666     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfoKHR &
setLoadOpVULKAN_HPP_NAMESPACE::RenderingAttachmentInfoKHR77667                             setLoadOp( VULKAN_HPP_NAMESPACE::AttachmentLoadOp loadOp_ ) VULKAN_HPP_NOEXCEPT
77668     {
77669       loadOp = loadOp_;
77670       return *this;
77671     }
77672 
77673     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfoKHR &
setStoreOpVULKAN_HPP_NAMESPACE::RenderingAttachmentInfoKHR77674                             setStoreOp( VULKAN_HPP_NAMESPACE::AttachmentStoreOp storeOp_ ) VULKAN_HPP_NOEXCEPT
77675     {
77676       storeOp = storeOp_;
77677       return *this;
77678     }
77679 
77680     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfoKHR &
setClearValueVULKAN_HPP_NAMESPACE::RenderingAttachmentInfoKHR77681                             setClearValue( VULKAN_HPP_NAMESPACE::ClearValue const & clearValue_ ) VULKAN_HPP_NOEXCEPT
77682     {
77683       clearValue = clearValue_;
77684       return *this;
77685     }
77686 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
77687 
operator VkRenderingAttachmentInfoKHR const&VULKAN_HPP_NAMESPACE::RenderingAttachmentInfoKHR77688     explicit operator VkRenderingAttachmentInfoKHR const &() const VULKAN_HPP_NOEXCEPT
77689     {
77690       return *reinterpret_cast<const VkRenderingAttachmentInfoKHR *>( this );
77691     }
77692 
operator VkRenderingAttachmentInfoKHR&VULKAN_HPP_NAMESPACE::RenderingAttachmentInfoKHR77693     explicit operator VkRenderingAttachmentInfoKHR &() VULKAN_HPP_NOEXCEPT
77694     {
77695       return *reinterpret_cast<VkRenderingAttachmentInfoKHR *>( this );
77696     }
77697 
77698 #if 14 <= VULKAN_HPP_CPP_VERSION
77699     auto
77700 #else
77701     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
77702                const void * const &,
77703                VULKAN_HPP_NAMESPACE::ImageView const &,
77704                VULKAN_HPP_NAMESPACE::ImageLayout const &,
77705                VULKAN_HPP_NAMESPACE::ResolveModeFlagBits const &,
77706                VULKAN_HPP_NAMESPACE::ImageView const &,
77707                VULKAN_HPP_NAMESPACE::ImageLayout const &,
77708                VULKAN_HPP_NAMESPACE::AttachmentLoadOp const &,
77709                VULKAN_HPP_NAMESPACE::AttachmentStoreOp const &,
77710                VULKAN_HPP_NAMESPACE::ClearValue const &>
77711 #endif
reflectVULKAN_HPP_NAMESPACE::RenderingAttachmentInfoKHR77712       reflect() const VULKAN_HPP_NOEXCEPT
77713     {
77714       return std::tie( sType,
77715                        pNext,
77716                        imageView,
77717                        imageLayout,
77718                        resolveMode,
77719                        resolveImageView,
77720                        resolveImageLayout,
77721                        loadOp,
77722                        storeOp,
77723                        clearValue );
77724     }
77725 
77726   public:
77727     VULKAN_HPP_NAMESPACE::StructureType       sType              = StructureType::eRenderingAttachmentInfoKHR;
77728     const void *                              pNext              = {};
77729     VULKAN_HPP_NAMESPACE::ImageView           imageView          = {};
77730     VULKAN_HPP_NAMESPACE::ImageLayout         imageLayout        = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
77731     VULKAN_HPP_NAMESPACE::ResolveModeFlagBits resolveMode        = VULKAN_HPP_NAMESPACE::ResolveModeFlagBits::eNone;
77732     VULKAN_HPP_NAMESPACE::ImageView           resolveImageView   = {};
77733     VULKAN_HPP_NAMESPACE::ImageLayout         resolveImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
77734     VULKAN_HPP_NAMESPACE::AttachmentLoadOp    loadOp             = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad;
77735     VULKAN_HPP_NAMESPACE::AttachmentStoreOp   storeOp            = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore;
77736     VULKAN_HPP_NAMESPACE::ClearValue          clearValue         = {};
77737   };
77738   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderingAttachmentInfoKHR ) ==
77739                               sizeof( VkRenderingAttachmentInfoKHR ),
77740                             "struct and wrapper have different size!" );
77741   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::RenderingAttachmentInfoKHR>::value,
77742                             "struct wrapper is not a standard layout!" );
77743   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::RenderingAttachmentInfoKHR>::value,
77744                             "RenderingAttachmentInfoKHR is not nothrow_move_constructible!" );
77745 
77746   template <>
77747   struct CppType<StructureType, StructureType::eRenderingAttachmentInfoKHR>
77748   {
77749     using Type = RenderingAttachmentInfoKHR;
77750   };
77751 
77752   struct RenderingFragmentDensityMapAttachmentInfoEXT
77753   {
77754     using NativeType = VkRenderingFragmentDensityMapAttachmentInfoEXT;
77755 
77756     static const bool                                  allowDuplicate = false;
77757     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
77758       StructureType::eRenderingFragmentDensityMapAttachmentInfoEXT;
77759 
77760 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderingFragmentDensityMapAttachmentInfoEXTVULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT77761     VULKAN_HPP_CONSTEXPR RenderingFragmentDensityMapAttachmentInfoEXT(
77762       VULKAN_HPP_NAMESPACE::ImageView   imageView_   = {},
77763       VULKAN_HPP_NAMESPACE::ImageLayout imageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined )
77764       VULKAN_HPP_NOEXCEPT
77765       : imageView( imageView_ )
77766       , imageLayout( imageLayout_ )
77767     {}
77768 
77769     VULKAN_HPP_CONSTEXPR RenderingFragmentDensityMapAttachmentInfoEXT(
77770       RenderingFragmentDensityMapAttachmentInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77771 
RenderingFragmentDensityMapAttachmentInfoEXTVULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT77772     RenderingFragmentDensityMapAttachmentInfoEXT( VkRenderingFragmentDensityMapAttachmentInfoEXT const & rhs )
77773       VULKAN_HPP_NOEXCEPT
77774       : RenderingFragmentDensityMapAttachmentInfoEXT(
77775           *reinterpret_cast<RenderingFragmentDensityMapAttachmentInfoEXT const *>( &rhs ) )
77776     {}
77777 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
77778 
77779     RenderingFragmentDensityMapAttachmentInfoEXT &
77780       operator=( RenderingFragmentDensityMapAttachmentInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77781 
77782     RenderingFragmentDensityMapAttachmentInfoEXT &
operator =VULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT77783       operator=( VkRenderingFragmentDensityMapAttachmentInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
77784     {
77785       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT const *>( &rhs );
77786       return *this;
77787     }
77788 
77789 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
77790     VULKAN_HPP_CONSTEXPR_14 RenderingFragmentDensityMapAttachmentInfoEXT &
setPNextVULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT77791                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
77792     {
77793       pNext = pNext_;
77794       return *this;
77795     }
77796 
77797     VULKAN_HPP_CONSTEXPR_14 RenderingFragmentDensityMapAttachmentInfoEXT &
setImageViewVULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT77798                             setImageView( VULKAN_HPP_NAMESPACE::ImageView imageView_ ) VULKAN_HPP_NOEXCEPT
77799     {
77800       imageView = imageView_;
77801       return *this;
77802     }
77803 
77804     VULKAN_HPP_CONSTEXPR_14 RenderingFragmentDensityMapAttachmentInfoEXT &
setImageLayoutVULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT77805                             setImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout imageLayout_ ) VULKAN_HPP_NOEXCEPT
77806     {
77807       imageLayout = imageLayout_;
77808       return *this;
77809     }
77810 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
77811 
operator VkRenderingFragmentDensityMapAttachmentInfoEXT const&VULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT77812     explicit operator VkRenderingFragmentDensityMapAttachmentInfoEXT const &() const VULKAN_HPP_NOEXCEPT
77813     {
77814       return *reinterpret_cast<const VkRenderingFragmentDensityMapAttachmentInfoEXT *>( this );
77815     }
77816 
operator VkRenderingFragmentDensityMapAttachmentInfoEXT&VULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT77817     explicit operator VkRenderingFragmentDensityMapAttachmentInfoEXT &() VULKAN_HPP_NOEXCEPT
77818     {
77819       return *reinterpret_cast<VkRenderingFragmentDensityMapAttachmentInfoEXT *>( this );
77820     }
77821 
77822 #if 14 <= VULKAN_HPP_CPP_VERSION
77823     auto
77824 #else
77825     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
77826                const void * const &,
77827                VULKAN_HPP_NAMESPACE::ImageView const &,
77828                VULKAN_HPP_NAMESPACE::ImageLayout const &>
77829 #endif
reflectVULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT77830       reflect() const VULKAN_HPP_NOEXCEPT
77831     {
77832       return std::tie( sType, pNext, imageView, imageLayout );
77833     }
77834 
77835 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
77836     auto operator<=>( RenderingFragmentDensityMapAttachmentInfoEXT const & ) const = default;
77837 #else
operator ==VULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT77838     bool operator==( RenderingFragmentDensityMapAttachmentInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
77839     {
77840       return this->reflect() == rhs.reflect();
77841     }
77842 
operator !=VULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT77843     bool operator!=( RenderingFragmentDensityMapAttachmentInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
77844     {
77845       return this->reflect() != rhs.reflect();
77846     }
77847 #endif
77848 
77849   public:
77850     VULKAN_HPP_NAMESPACE::StructureType sType       = StructureType::eRenderingFragmentDensityMapAttachmentInfoEXT;
77851     const void *                        pNext       = {};
77852     VULKAN_HPP_NAMESPACE::ImageView     imageView   = {};
77853     VULKAN_HPP_NAMESPACE::ImageLayout   imageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
77854   };
77855   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT ) ==
77856                               sizeof( VkRenderingFragmentDensityMapAttachmentInfoEXT ),
77857                             "struct and wrapper have different size!" );
77858   VULKAN_HPP_STATIC_ASSERT(
77859     std::is_standard_layout<VULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT>::value,
77860     "struct wrapper is not a standard layout!" );
77861   VULKAN_HPP_STATIC_ASSERT(
77862     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT>::value,
77863     "RenderingFragmentDensityMapAttachmentInfoEXT is not nothrow_move_constructible!" );
77864 
77865   template <>
77866   struct CppType<StructureType, StructureType::eRenderingFragmentDensityMapAttachmentInfoEXT>
77867   {
77868     using Type = RenderingFragmentDensityMapAttachmentInfoEXT;
77869   };
77870 
77871   struct RenderingFragmentShadingRateAttachmentInfoKHR
77872   {
77873     using NativeType = VkRenderingFragmentShadingRateAttachmentInfoKHR;
77874 
77875     static const bool                                  allowDuplicate = false;
77876     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
77877       StructureType::eRenderingFragmentShadingRateAttachmentInfoKHR;
77878 
77879 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderingFragmentShadingRateAttachmentInfoKHRVULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR77880     VULKAN_HPP_CONSTEXPR RenderingFragmentShadingRateAttachmentInfoKHR(
77881       VULKAN_HPP_NAMESPACE::ImageView   imageView_                      = {},
77882       VULKAN_HPP_NAMESPACE::ImageLayout imageLayout_                    = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
77883       VULKAN_HPP_NAMESPACE::Extent2D    shadingRateAttachmentTexelSize_ = {} ) VULKAN_HPP_NOEXCEPT
77884       : imageView( imageView_ )
77885       , imageLayout( imageLayout_ )
77886       , shadingRateAttachmentTexelSize( shadingRateAttachmentTexelSize_ )
77887     {}
77888 
77889     VULKAN_HPP_CONSTEXPR RenderingFragmentShadingRateAttachmentInfoKHR(
77890       RenderingFragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77891 
RenderingFragmentShadingRateAttachmentInfoKHRVULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR77892     RenderingFragmentShadingRateAttachmentInfoKHR( VkRenderingFragmentShadingRateAttachmentInfoKHR const & rhs )
77893       VULKAN_HPP_NOEXCEPT
77894       : RenderingFragmentShadingRateAttachmentInfoKHR(
77895           *reinterpret_cast<RenderingFragmentShadingRateAttachmentInfoKHR const *>( &rhs ) )
77896     {}
77897 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
77898 
77899     RenderingFragmentShadingRateAttachmentInfoKHR &
77900       operator=( RenderingFragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77901 
77902     RenderingFragmentShadingRateAttachmentInfoKHR &
operator =VULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR77903       operator=( VkRenderingFragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
77904     {
77905       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR const *>( &rhs );
77906       return *this;
77907     }
77908 
77909 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
77910     VULKAN_HPP_CONSTEXPR_14 RenderingFragmentShadingRateAttachmentInfoKHR &
setPNextVULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR77911                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
77912     {
77913       pNext = pNext_;
77914       return *this;
77915     }
77916 
77917     VULKAN_HPP_CONSTEXPR_14 RenderingFragmentShadingRateAttachmentInfoKHR &
setImageViewVULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR77918                             setImageView( VULKAN_HPP_NAMESPACE::ImageView imageView_ ) VULKAN_HPP_NOEXCEPT
77919     {
77920       imageView = imageView_;
77921       return *this;
77922     }
77923 
77924     VULKAN_HPP_CONSTEXPR_14 RenderingFragmentShadingRateAttachmentInfoKHR &
setImageLayoutVULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR77925                             setImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout imageLayout_ ) VULKAN_HPP_NOEXCEPT
77926     {
77927       imageLayout = imageLayout_;
77928       return *this;
77929     }
77930 
setShadingRateAttachmentTexelSizeVULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR77931     VULKAN_HPP_CONSTEXPR_14 RenderingFragmentShadingRateAttachmentInfoKHR & setShadingRateAttachmentTexelSize(
77932       VULKAN_HPP_NAMESPACE::Extent2D const & shadingRateAttachmentTexelSize_ ) VULKAN_HPP_NOEXCEPT
77933     {
77934       shadingRateAttachmentTexelSize = shadingRateAttachmentTexelSize_;
77935       return *this;
77936     }
77937 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
77938 
operator VkRenderingFragmentShadingRateAttachmentInfoKHR const&VULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR77939     explicit operator VkRenderingFragmentShadingRateAttachmentInfoKHR const &() const VULKAN_HPP_NOEXCEPT
77940     {
77941       return *reinterpret_cast<const VkRenderingFragmentShadingRateAttachmentInfoKHR *>( this );
77942     }
77943 
operator VkRenderingFragmentShadingRateAttachmentInfoKHR&VULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR77944     explicit operator VkRenderingFragmentShadingRateAttachmentInfoKHR &() VULKAN_HPP_NOEXCEPT
77945     {
77946       return *reinterpret_cast<VkRenderingFragmentShadingRateAttachmentInfoKHR *>( this );
77947     }
77948 
77949 #if 14 <= VULKAN_HPP_CPP_VERSION
77950     auto
77951 #else
77952     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
77953                const void * const &,
77954                VULKAN_HPP_NAMESPACE::ImageView const &,
77955                VULKAN_HPP_NAMESPACE::ImageLayout const &,
77956                VULKAN_HPP_NAMESPACE::Extent2D const &>
77957 #endif
reflectVULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR77958       reflect() const VULKAN_HPP_NOEXCEPT
77959     {
77960       return std::tie( sType, pNext, imageView, imageLayout, shadingRateAttachmentTexelSize );
77961     }
77962 
77963 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
77964     auto operator<=>( RenderingFragmentShadingRateAttachmentInfoKHR const & ) const = default;
77965 #else
operator ==VULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR77966     bool operator==( RenderingFragmentShadingRateAttachmentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
77967     {
77968       return this->reflect() == rhs.reflect();
77969     }
77970 
operator !=VULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR77971     bool operator!=( RenderingFragmentShadingRateAttachmentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
77972     {
77973       return this->reflect() != rhs.reflect();
77974     }
77975 #endif
77976 
77977   public:
77978     VULKAN_HPP_NAMESPACE::StructureType sType       = StructureType::eRenderingFragmentShadingRateAttachmentInfoKHR;
77979     const void *                        pNext       = {};
77980     VULKAN_HPP_NAMESPACE::ImageView     imageView   = {};
77981     VULKAN_HPP_NAMESPACE::ImageLayout   imageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
77982     VULKAN_HPP_NAMESPACE::Extent2D      shadingRateAttachmentTexelSize = {};
77983   };
77984   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR ) ==
77985                               sizeof( VkRenderingFragmentShadingRateAttachmentInfoKHR ),
77986                             "struct and wrapper have different size!" );
77987   VULKAN_HPP_STATIC_ASSERT(
77988     std::is_standard_layout<VULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR>::value,
77989     "struct wrapper is not a standard layout!" );
77990   VULKAN_HPP_STATIC_ASSERT(
77991     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR>::value,
77992     "RenderingFragmentShadingRateAttachmentInfoKHR is not nothrow_move_constructible!" );
77993 
77994   template <>
77995   struct CppType<StructureType, StructureType::eRenderingFragmentShadingRateAttachmentInfoKHR>
77996   {
77997     using Type = RenderingFragmentShadingRateAttachmentInfoKHR;
77998   };
77999 
78000   struct RenderingInfoKHR
78001   {
78002     using NativeType = VkRenderingInfoKHR;
78003 
78004     static const bool                                  allowDuplicate = false;
78005     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderingInfoKHR;
78006 
78007 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderingInfoKHRVULKAN_HPP_NAMESPACE::RenderingInfoKHR78008     VULKAN_HPP_CONSTEXPR_14 RenderingInfoKHR(
78009       VULKAN_HPP_NAMESPACE::RenderingFlagsKHR                  flags_                = {},
78010       VULKAN_HPP_NAMESPACE::Rect2D                             renderArea_           = {},
78011       uint32_t                                                 layerCount_           = {},
78012       uint32_t                                                 viewMask_             = {},
78013       uint32_t                                                 colorAttachmentCount_ = {},
78014       const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfoKHR * pColorAttachments_    = {},
78015       const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfoKHR * pDepthAttachment_     = {},
78016       const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfoKHR * pStencilAttachment_   = {} ) VULKAN_HPP_NOEXCEPT
78017       : flags( flags_ )
78018       , renderArea( renderArea_ )
78019       , layerCount( layerCount_ )
78020       , viewMask( viewMask_ )
78021       , colorAttachmentCount( colorAttachmentCount_ )
78022       , pColorAttachments( pColorAttachments_ )
78023       , pDepthAttachment( pDepthAttachment_ )
78024       , pStencilAttachment( pStencilAttachment_ )
78025     {}
78026 
78027     VULKAN_HPP_CONSTEXPR_14 RenderingInfoKHR( RenderingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78028 
RenderingInfoKHRVULKAN_HPP_NAMESPACE::RenderingInfoKHR78029     RenderingInfoKHR( VkRenderingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
78030       : RenderingInfoKHR( *reinterpret_cast<RenderingInfoKHR const *>( &rhs ) )
78031     {}
78032 
78033 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderingInfoKHRVULKAN_HPP_NAMESPACE::RenderingInfoKHR78034     RenderingInfoKHR(
78035       VULKAN_HPP_NAMESPACE::RenderingFlagsKHR flags_,
78036       VULKAN_HPP_NAMESPACE::Rect2D            renderArea_,
78037       uint32_t                                layerCount_,
78038       uint32_t                                viewMask_,
78039       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfoKHR> const &
78040                                                                colorAttachments_,
78041       const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfoKHR * pDepthAttachment_   = {},
78042       const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfoKHR * pStencilAttachment_ = {} )
78043       : flags( flags_ )
78044       , renderArea( renderArea_ )
78045       , layerCount( layerCount_ )
78046       , viewMask( viewMask_ )
78047       , colorAttachmentCount( static_cast<uint32_t>( colorAttachments_.size() ) )
78048       , pColorAttachments( colorAttachments_.data() )
78049       , pDepthAttachment( pDepthAttachment_ )
78050       , pStencilAttachment( pStencilAttachment_ )
78051     {}
78052 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
78053 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
78054 
78055     RenderingInfoKHR & operator=( RenderingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78056 
operator =VULKAN_HPP_NAMESPACE::RenderingInfoKHR78057     RenderingInfoKHR & operator=( VkRenderingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
78058     {
78059       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderingInfoKHR const *>( &rhs );
78060       return *this;
78061     }
78062 
78063 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderingInfoKHR78064     VULKAN_HPP_CONSTEXPR_14 RenderingInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
78065     {
78066       pNext = pNext_;
78067       return *this;
78068     }
78069 
78070     VULKAN_HPP_CONSTEXPR_14 RenderingInfoKHR &
setFlagsVULKAN_HPP_NAMESPACE::RenderingInfoKHR78071                             setFlags( VULKAN_HPP_NAMESPACE::RenderingFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
78072     {
78073       flags = flags_;
78074       return *this;
78075     }
78076 
78077     VULKAN_HPP_CONSTEXPR_14 RenderingInfoKHR &
setRenderAreaVULKAN_HPP_NAMESPACE::RenderingInfoKHR78078                             setRenderArea( VULKAN_HPP_NAMESPACE::Rect2D const & renderArea_ ) VULKAN_HPP_NOEXCEPT
78079     {
78080       renderArea = renderArea_;
78081       return *this;
78082     }
78083 
setLayerCountVULKAN_HPP_NAMESPACE::RenderingInfoKHR78084     VULKAN_HPP_CONSTEXPR_14 RenderingInfoKHR & setLayerCount( uint32_t layerCount_ ) VULKAN_HPP_NOEXCEPT
78085     {
78086       layerCount = layerCount_;
78087       return *this;
78088     }
78089 
setViewMaskVULKAN_HPP_NAMESPACE::RenderingInfoKHR78090     VULKAN_HPP_CONSTEXPR_14 RenderingInfoKHR & setViewMask( uint32_t viewMask_ ) VULKAN_HPP_NOEXCEPT
78091     {
78092       viewMask = viewMask_;
78093       return *this;
78094     }
78095 
78096     VULKAN_HPP_CONSTEXPR_14 RenderingInfoKHR &
setColorAttachmentCountVULKAN_HPP_NAMESPACE::RenderingInfoKHR78097                             setColorAttachmentCount( uint32_t colorAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
78098     {
78099       colorAttachmentCount = colorAttachmentCount_;
78100       return *this;
78101     }
78102 
setPColorAttachmentsVULKAN_HPP_NAMESPACE::RenderingInfoKHR78103     VULKAN_HPP_CONSTEXPR_14 RenderingInfoKHR & setPColorAttachments(
78104       const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfoKHR * pColorAttachments_ ) VULKAN_HPP_NOEXCEPT
78105     {
78106       pColorAttachments = pColorAttachments_;
78107       return *this;
78108     }
78109 
78110 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setColorAttachmentsVULKAN_HPP_NAMESPACE::RenderingInfoKHR78111     RenderingInfoKHR & setColorAttachments(
78112       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfoKHR> const &
78113         colorAttachments_ ) VULKAN_HPP_NOEXCEPT
78114     {
78115       colorAttachmentCount = static_cast<uint32_t>( colorAttachments_.size() );
78116       pColorAttachments    = colorAttachments_.data();
78117       return *this;
78118     }
78119 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
78120 
setPDepthAttachmentVULKAN_HPP_NAMESPACE::RenderingInfoKHR78121     VULKAN_HPP_CONSTEXPR_14 RenderingInfoKHR & setPDepthAttachment(
78122       const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfoKHR * pDepthAttachment_ ) VULKAN_HPP_NOEXCEPT
78123     {
78124       pDepthAttachment = pDepthAttachment_;
78125       return *this;
78126     }
78127 
setPStencilAttachmentVULKAN_HPP_NAMESPACE::RenderingInfoKHR78128     VULKAN_HPP_CONSTEXPR_14 RenderingInfoKHR & setPStencilAttachment(
78129       const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfoKHR * pStencilAttachment_ ) VULKAN_HPP_NOEXCEPT
78130     {
78131       pStencilAttachment = pStencilAttachment_;
78132       return *this;
78133     }
78134 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
78135 
operator VkRenderingInfoKHR const&VULKAN_HPP_NAMESPACE::RenderingInfoKHR78136     explicit operator VkRenderingInfoKHR const &() const VULKAN_HPP_NOEXCEPT
78137     {
78138       return *reinterpret_cast<const VkRenderingInfoKHR *>( this );
78139     }
78140 
operator VkRenderingInfoKHR&VULKAN_HPP_NAMESPACE::RenderingInfoKHR78141     explicit operator VkRenderingInfoKHR &() VULKAN_HPP_NOEXCEPT
78142     {
78143       return *reinterpret_cast<VkRenderingInfoKHR *>( this );
78144     }
78145 
78146 #if 14 <= VULKAN_HPP_CPP_VERSION
78147     auto
78148 #else
78149     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
78150                const void * const &,
78151                VULKAN_HPP_NAMESPACE::RenderingFlagsKHR const &,
78152                VULKAN_HPP_NAMESPACE::Rect2D const &,
78153                uint32_t const &,
78154                uint32_t const &,
78155                uint32_t const &,
78156                const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfoKHR * const &,
78157                const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfoKHR * const &,
78158                const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfoKHR * const &>
78159 #endif
reflectVULKAN_HPP_NAMESPACE::RenderingInfoKHR78160       reflect() const VULKAN_HPP_NOEXCEPT
78161     {
78162       return std::tie( sType,
78163                        pNext,
78164                        flags,
78165                        renderArea,
78166                        layerCount,
78167                        viewMask,
78168                        colorAttachmentCount,
78169                        pColorAttachments,
78170                        pDepthAttachment,
78171                        pStencilAttachment );
78172     }
78173 
78174 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
78175     auto operator<=>( RenderingInfoKHR const & ) const = default;
78176 #else
operator ==VULKAN_HPP_NAMESPACE::RenderingInfoKHR78177     bool operator==( RenderingInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
78178     {
78179       return this->reflect() == rhs.reflect();
78180     }
78181 
operator !=VULKAN_HPP_NAMESPACE::RenderingInfoKHR78182     bool operator!=( RenderingInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
78183     {
78184       return this->reflect() != rhs.reflect();
78185     }
78186 #endif
78187 
78188   public:
78189     VULKAN_HPP_NAMESPACE::StructureType                      sType                = StructureType::eRenderingInfoKHR;
78190     const void *                                             pNext                = {};
78191     VULKAN_HPP_NAMESPACE::RenderingFlagsKHR                  flags                = {};
78192     VULKAN_HPP_NAMESPACE::Rect2D                             renderArea           = {};
78193     uint32_t                                                 layerCount           = {};
78194     uint32_t                                                 viewMask             = {};
78195     uint32_t                                                 colorAttachmentCount = {};
78196     const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfoKHR * pColorAttachments    = {};
78197     const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfoKHR * pDepthAttachment     = {};
78198     const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfoKHR * pStencilAttachment   = {};
78199   };
78200   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderingInfoKHR ) == sizeof( VkRenderingInfoKHR ),
78201                             "struct and wrapper have different size!" );
78202   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::RenderingInfoKHR>::value,
78203                             "struct wrapper is not a standard layout!" );
78204   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::RenderingInfoKHR>::value,
78205                             "RenderingInfoKHR is not nothrow_move_constructible!" );
78206 
78207   template <>
78208   struct CppType<StructureType, StructureType::eRenderingInfoKHR>
78209   {
78210     using Type = RenderingInfoKHR;
78211   };
78212 
78213   struct ResolveImageInfo2KHR
78214   {
78215     using NativeType = VkResolveImageInfo2KHR;
78216 
78217     static const bool                                  allowDuplicate = false;
78218     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eResolveImageInfo2KHR;
78219 
78220 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ResolveImageInfo2KHRVULKAN_HPP_NAMESPACE::ResolveImageInfo2KHR78221     VULKAN_HPP_CONSTEXPR ResolveImageInfo2KHR(
78222       VULKAN_HPP_NAMESPACE::Image                    srcImage_       = {},
78223       VULKAN_HPP_NAMESPACE::ImageLayout              srcImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
78224       VULKAN_HPP_NAMESPACE::Image                    dstImage_       = {},
78225       VULKAN_HPP_NAMESPACE::ImageLayout              dstImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
78226       uint32_t                                       regionCount_    = {},
78227       const VULKAN_HPP_NAMESPACE::ImageResolve2KHR * pRegions_       = {} ) VULKAN_HPP_NOEXCEPT
78228       : srcImage( srcImage_ )
78229       , srcImageLayout( srcImageLayout_ )
78230       , dstImage( dstImage_ )
78231       , dstImageLayout( dstImageLayout_ )
78232       , regionCount( regionCount_ )
78233       , pRegions( pRegions_ )
78234     {}
78235 
78236     VULKAN_HPP_CONSTEXPR ResolveImageInfo2KHR( ResolveImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78237 
ResolveImageInfo2KHRVULKAN_HPP_NAMESPACE::ResolveImageInfo2KHR78238     ResolveImageInfo2KHR( VkResolveImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
78239       : ResolveImageInfo2KHR( *reinterpret_cast<ResolveImageInfo2KHR const *>( &rhs ) )
78240     {}
78241 
78242 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ResolveImageInfo2KHRVULKAN_HPP_NAMESPACE::ResolveImageInfo2KHR78243     ResolveImageInfo2KHR(
78244       VULKAN_HPP_NAMESPACE::Image       srcImage_,
78245       VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_,
78246       VULKAN_HPP_NAMESPACE::Image       dstImage_,
78247       VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_,
78248       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageResolve2KHR> const & regions_ )
78249       : srcImage( srcImage_ )
78250       , srcImageLayout( srcImageLayout_ )
78251       , dstImage( dstImage_ )
78252       , dstImageLayout( dstImageLayout_ )
78253       , regionCount( static_cast<uint32_t>( regions_.size() ) )
78254       , pRegions( regions_.data() )
78255     {}
78256 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
78257 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
78258 
78259     ResolveImageInfo2KHR & operator=( ResolveImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78260 
operator =VULKAN_HPP_NAMESPACE::ResolveImageInfo2KHR78261     ResolveImageInfo2KHR & operator=( VkResolveImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
78262     {
78263       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ResolveImageInfo2KHR const *>( &rhs );
78264       return *this;
78265     }
78266 
78267 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ResolveImageInfo2KHR78268     VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2KHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
78269     {
78270       pNext = pNext_;
78271       return *this;
78272     }
78273 
78274     VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2KHR &
setSrcImageVULKAN_HPP_NAMESPACE::ResolveImageInfo2KHR78275                             setSrcImage( VULKAN_HPP_NAMESPACE::Image srcImage_ ) VULKAN_HPP_NOEXCEPT
78276     {
78277       srcImage = srcImage_;
78278       return *this;
78279     }
78280 
78281     VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2KHR &
setSrcImageLayoutVULKAN_HPP_NAMESPACE::ResolveImageInfo2KHR78282                             setSrcImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ ) VULKAN_HPP_NOEXCEPT
78283     {
78284       srcImageLayout = srcImageLayout_;
78285       return *this;
78286     }
78287 
78288     VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2KHR &
setDstImageVULKAN_HPP_NAMESPACE::ResolveImageInfo2KHR78289                             setDstImage( VULKAN_HPP_NAMESPACE::Image dstImage_ ) VULKAN_HPP_NOEXCEPT
78290     {
78291       dstImage = dstImage_;
78292       return *this;
78293     }
78294 
78295     VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2KHR &
setDstImageLayoutVULKAN_HPP_NAMESPACE::ResolveImageInfo2KHR78296                             setDstImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ ) VULKAN_HPP_NOEXCEPT
78297     {
78298       dstImageLayout = dstImageLayout_;
78299       return *this;
78300     }
78301 
setRegionCountVULKAN_HPP_NAMESPACE::ResolveImageInfo2KHR78302     VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2KHR & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT
78303     {
78304       regionCount = regionCount_;
78305       return *this;
78306     }
78307 
78308     VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2KHR &
setPRegionsVULKAN_HPP_NAMESPACE::ResolveImageInfo2KHR78309                             setPRegions( const VULKAN_HPP_NAMESPACE::ImageResolve2KHR * pRegions_ ) VULKAN_HPP_NOEXCEPT
78310     {
78311       pRegions = pRegions_;
78312       return *this;
78313     }
78314 
78315 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setRegionsVULKAN_HPP_NAMESPACE::ResolveImageInfo2KHR78316     ResolveImageInfo2KHR & setRegions(
78317       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageResolve2KHR> const & regions_ )
78318       VULKAN_HPP_NOEXCEPT
78319     {
78320       regionCount = static_cast<uint32_t>( regions_.size() );
78321       pRegions    = regions_.data();
78322       return *this;
78323     }
78324 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
78325 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
78326 
operator VkResolveImageInfo2KHR const&VULKAN_HPP_NAMESPACE::ResolveImageInfo2KHR78327     explicit operator VkResolveImageInfo2KHR const &() const VULKAN_HPP_NOEXCEPT
78328     {
78329       return *reinterpret_cast<const VkResolveImageInfo2KHR *>( this );
78330     }
78331 
operator VkResolveImageInfo2KHR&VULKAN_HPP_NAMESPACE::ResolveImageInfo2KHR78332     explicit operator VkResolveImageInfo2KHR &() VULKAN_HPP_NOEXCEPT
78333     {
78334       return *reinterpret_cast<VkResolveImageInfo2KHR *>( this );
78335     }
78336 
78337 #if 14 <= VULKAN_HPP_CPP_VERSION
78338     auto
78339 #else
78340     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
78341                const void * const &,
78342                VULKAN_HPP_NAMESPACE::Image const &,
78343                VULKAN_HPP_NAMESPACE::ImageLayout const &,
78344                VULKAN_HPP_NAMESPACE::Image const &,
78345                VULKAN_HPP_NAMESPACE::ImageLayout const &,
78346                uint32_t const &,
78347                const VULKAN_HPP_NAMESPACE::ImageResolve2KHR * const &>
78348 #endif
reflectVULKAN_HPP_NAMESPACE::ResolveImageInfo2KHR78349       reflect() const VULKAN_HPP_NOEXCEPT
78350     {
78351       return std::tie( sType, pNext, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions );
78352     }
78353 
78354 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
78355     auto operator<=>( ResolveImageInfo2KHR const & ) const = default;
78356 #else
operator ==VULKAN_HPP_NAMESPACE::ResolveImageInfo2KHR78357     bool operator==( ResolveImageInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
78358     {
78359       return this->reflect() == rhs.reflect();
78360     }
78361 
operator !=VULKAN_HPP_NAMESPACE::ResolveImageInfo2KHR78362     bool operator!=( ResolveImageInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
78363     {
78364       return this->reflect() != rhs.reflect();
78365     }
78366 #endif
78367 
78368   public:
78369     VULKAN_HPP_NAMESPACE::StructureType            sType          = StructureType::eResolveImageInfo2KHR;
78370     const void *                                   pNext          = {};
78371     VULKAN_HPP_NAMESPACE::Image                    srcImage       = {};
78372     VULKAN_HPP_NAMESPACE::ImageLayout              srcImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
78373     VULKAN_HPP_NAMESPACE::Image                    dstImage       = {};
78374     VULKAN_HPP_NAMESPACE::ImageLayout              dstImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
78375     uint32_t                                       regionCount    = {};
78376     const VULKAN_HPP_NAMESPACE::ImageResolve2KHR * pRegions       = {};
78377   };
78378   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ResolveImageInfo2KHR ) == sizeof( VkResolveImageInfo2KHR ),
78379                             "struct and wrapper have different size!" );
78380   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ResolveImageInfo2KHR>::value,
78381                             "struct wrapper is not a standard layout!" );
78382   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ResolveImageInfo2KHR>::value,
78383                             "ResolveImageInfo2KHR is not nothrow_move_constructible!" );
78384 
78385   template <>
78386   struct CppType<StructureType, StructureType::eResolveImageInfo2KHR>
78387   {
78388     using Type = ResolveImageInfo2KHR;
78389   };
78390 
78391   struct SamplerBorderColorComponentMappingCreateInfoEXT
78392   {
78393     using NativeType = VkSamplerBorderColorComponentMappingCreateInfoEXT;
78394 
78395     static const bool                                  allowDuplicate = false;
78396     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
78397       StructureType::eSamplerBorderColorComponentMappingCreateInfoEXT;
78398 
78399 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
78400     VULKAN_HPP_CONSTEXPR
SamplerBorderColorComponentMappingCreateInfoEXTVULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT78401       SamplerBorderColorComponentMappingCreateInfoEXT( VULKAN_HPP_NAMESPACE::ComponentMapping components_ = {},
78402                                                        VULKAN_HPP_NAMESPACE::Bool32 srgb_ = {} ) VULKAN_HPP_NOEXCEPT
78403       : components( components_ )
78404       , srgb( srgb_ )
78405     {}
78406 
78407     VULKAN_HPP_CONSTEXPR SamplerBorderColorComponentMappingCreateInfoEXT(
78408       SamplerBorderColorComponentMappingCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78409 
SamplerBorderColorComponentMappingCreateInfoEXTVULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT78410     SamplerBorderColorComponentMappingCreateInfoEXT( VkSamplerBorderColorComponentMappingCreateInfoEXT const & rhs )
78411       VULKAN_HPP_NOEXCEPT
78412       : SamplerBorderColorComponentMappingCreateInfoEXT(
78413           *reinterpret_cast<SamplerBorderColorComponentMappingCreateInfoEXT const *>( &rhs ) )
78414     {}
78415 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
78416 
78417     SamplerBorderColorComponentMappingCreateInfoEXT &
78418       operator=( SamplerBorderColorComponentMappingCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78419 
78420     SamplerBorderColorComponentMappingCreateInfoEXT &
operator =VULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT78421       operator=( VkSamplerBorderColorComponentMappingCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
78422     {
78423       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT const *>( &rhs );
78424       return *this;
78425     }
78426 
78427 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
78428     VULKAN_HPP_CONSTEXPR_14 SamplerBorderColorComponentMappingCreateInfoEXT &
setPNextVULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT78429                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
78430     {
78431       pNext = pNext_;
78432       return *this;
78433     }
78434 
78435     VULKAN_HPP_CONSTEXPR_14 SamplerBorderColorComponentMappingCreateInfoEXT &
setComponentsVULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT78436       setComponents( VULKAN_HPP_NAMESPACE::ComponentMapping const & components_ ) VULKAN_HPP_NOEXCEPT
78437     {
78438       components = components_;
78439       return *this;
78440     }
78441 
78442     VULKAN_HPP_CONSTEXPR_14 SamplerBorderColorComponentMappingCreateInfoEXT &
setSrgbVULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT78443                             setSrgb( VULKAN_HPP_NAMESPACE::Bool32 srgb_ ) VULKAN_HPP_NOEXCEPT
78444     {
78445       srgb = srgb_;
78446       return *this;
78447     }
78448 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
78449 
operator VkSamplerBorderColorComponentMappingCreateInfoEXT const&VULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT78450     explicit operator VkSamplerBorderColorComponentMappingCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
78451     {
78452       return *reinterpret_cast<const VkSamplerBorderColorComponentMappingCreateInfoEXT *>( this );
78453     }
78454 
operator VkSamplerBorderColorComponentMappingCreateInfoEXT&VULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT78455     explicit operator VkSamplerBorderColorComponentMappingCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
78456     {
78457       return *reinterpret_cast<VkSamplerBorderColorComponentMappingCreateInfoEXT *>( this );
78458     }
78459 
78460 #if 14 <= VULKAN_HPP_CPP_VERSION
78461     auto
78462 #else
78463     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
78464                const void * const &,
78465                VULKAN_HPP_NAMESPACE::ComponentMapping const &,
78466                VULKAN_HPP_NAMESPACE::Bool32 const &>
78467 #endif
reflectVULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT78468       reflect() const VULKAN_HPP_NOEXCEPT
78469     {
78470       return std::tie( sType, pNext, components, srgb );
78471     }
78472 
78473 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
78474     auto operator<=>( SamplerBorderColorComponentMappingCreateInfoEXT const & ) const = default;
78475 #else
operator ==VULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT78476     bool operator==( SamplerBorderColorComponentMappingCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
78477     {
78478       return this->reflect() == rhs.reflect();
78479     }
78480 
operator !=VULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT78481     bool operator!=( SamplerBorderColorComponentMappingCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
78482     {
78483       return this->reflect() != rhs.reflect();
78484     }
78485 #endif
78486 
78487   public:
78488     VULKAN_HPP_NAMESPACE::StructureType    sType      = StructureType::eSamplerBorderColorComponentMappingCreateInfoEXT;
78489     const void *                           pNext      = {};
78490     VULKAN_HPP_NAMESPACE::ComponentMapping components = {};
78491     VULKAN_HPP_NAMESPACE::Bool32           srgb       = {};
78492   };
78493   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT ) ==
78494                               sizeof( VkSamplerBorderColorComponentMappingCreateInfoEXT ),
78495                             "struct and wrapper have different size!" );
78496   VULKAN_HPP_STATIC_ASSERT(
78497     std::is_standard_layout<VULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT>::value,
78498     "struct wrapper is not a standard layout!" );
78499   VULKAN_HPP_STATIC_ASSERT(
78500     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT>::value,
78501     "SamplerBorderColorComponentMappingCreateInfoEXT is not nothrow_move_constructible!" );
78502 
78503   template <>
78504   struct CppType<StructureType, StructureType::eSamplerBorderColorComponentMappingCreateInfoEXT>
78505   {
78506     using Type = SamplerBorderColorComponentMappingCreateInfoEXT;
78507   };
78508 
78509   struct SamplerCreateInfo
78510   {
78511     using NativeType = VkSamplerCreateInfo;
78512 
78513     static const bool                                  allowDuplicate = false;
78514     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSamplerCreateInfo;
78515 
78516 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SamplerCreateInfoVULKAN_HPP_NAMESPACE::SamplerCreateInfo78517     VULKAN_HPP_CONSTEXPR SamplerCreateInfo(
78518       VULKAN_HPP_NAMESPACE::SamplerCreateFlags flags_            = {},
78519       VULKAN_HPP_NAMESPACE::Filter             magFilter_        = VULKAN_HPP_NAMESPACE::Filter::eNearest,
78520       VULKAN_HPP_NAMESPACE::Filter             minFilter_        = VULKAN_HPP_NAMESPACE::Filter::eNearest,
78521       VULKAN_HPP_NAMESPACE::SamplerMipmapMode  mipmapMode_       = VULKAN_HPP_NAMESPACE::SamplerMipmapMode::eNearest,
78522       VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeU_     = VULKAN_HPP_NAMESPACE::SamplerAddressMode::eRepeat,
78523       VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeV_     = VULKAN_HPP_NAMESPACE::SamplerAddressMode::eRepeat,
78524       VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeW_     = VULKAN_HPP_NAMESPACE::SamplerAddressMode::eRepeat,
78525       float                                    mipLodBias_       = {},
78526       VULKAN_HPP_NAMESPACE::Bool32             anisotropyEnable_ = {},
78527       float                                    maxAnisotropy_    = {},
78528       VULKAN_HPP_NAMESPACE::Bool32             compareEnable_    = {},
78529       VULKAN_HPP_NAMESPACE::CompareOp          compareOp_        = VULKAN_HPP_NAMESPACE::CompareOp::eNever,
78530       float                                    minLod_           = {},
78531       float                                    maxLod_           = {},
78532       VULKAN_HPP_NAMESPACE::BorderColor        borderColor_ = VULKAN_HPP_NAMESPACE::BorderColor::eFloatTransparentBlack,
78533       VULKAN_HPP_NAMESPACE::Bool32             unnormalizedCoordinates_ = {} ) VULKAN_HPP_NOEXCEPT
78534       : flags( flags_ )
78535       , magFilter( magFilter_ )
78536       , minFilter( minFilter_ )
78537       , mipmapMode( mipmapMode_ )
78538       , addressModeU( addressModeU_ )
78539       , addressModeV( addressModeV_ )
78540       , addressModeW( addressModeW_ )
78541       , mipLodBias( mipLodBias_ )
78542       , anisotropyEnable( anisotropyEnable_ )
78543       , maxAnisotropy( maxAnisotropy_ )
78544       , compareEnable( compareEnable_ )
78545       , compareOp( compareOp_ )
78546       , minLod( minLod_ )
78547       , maxLod( maxLod_ )
78548       , borderColor( borderColor_ )
78549       , unnormalizedCoordinates( unnormalizedCoordinates_ )
78550     {}
78551 
78552     VULKAN_HPP_CONSTEXPR SamplerCreateInfo( SamplerCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78553 
SamplerCreateInfoVULKAN_HPP_NAMESPACE::SamplerCreateInfo78554     SamplerCreateInfo( VkSamplerCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
78555       : SamplerCreateInfo( *reinterpret_cast<SamplerCreateInfo const *>( &rhs ) )
78556     {}
78557 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
78558 
78559     SamplerCreateInfo & operator=( SamplerCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78560 
operator =VULKAN_HPP_NAMESPACE::SamplerCreateInfo78561     SamplerCreateInfo & operator=( VkSamplerCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
78562     {
78563       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerCreateInfo const *>( &rhs );
78564       return *this;
78565     }
78566 
78567 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SamplerCreateInfo78568     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
78569     {
78570       pNext = pNext_;
78571       return *this;
78572     }
78573 
78574     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::SamplerCreateInfo78575                             setFlags( VULKAN_HPP_NAMESPACE::SamplerCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
78576     {
78577       flags = flags_;
78578       return *this;
78579     }
78580 
78581     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo &
setMagFilterVULKAN_HPP_NAMESPACE::SamplerCreateInfo78582                             setMagFilter( VULKAN_HPP_NAMESPACE::Filter magFilter_ ) VULKAN_HPP_NOEXCEPT
78583     {
78584       magFilter = magFilter_;
78585       return *this;
78586     }
78587 
78588     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo &
setMinFilterVULKAN_HPP_NAMESPACE::SamplerCreateInfo78589                             setMinFilter( VULKAN_HPP_NAMESPACE::Filter minFilter_ ) VULKAN_HPP_NOEXCEPT
78590     {
78591       minFilter = minFilter_;
78592       return *this;
78593     }
78594 
78595     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo &
setMipmapModeVULKAN_HPP_NAMESPACE::SamplerCreateInfo78596                             setMipmapMode( VULKAN_HPP_NAMESPACE::SamplerMipmapMode mipmapMode_ ) VULKAN_HPP_NOEXCEPT
78597     {
78598       mipmapMode = mipmapMode_;
78599       return *this;
78600     }
78601 
78602     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo &
setAddressModeUVULKAN_HPP_NAMESPACE::SamplerCreateInfo78603       setAddressModeU( VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeU_ ) VULKAN_HPP_NOEXCEPT
78604     {
78605       addressModeU = addressModeU_;
78606       return *this;
78607     }
78608 
78609     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo &
setAddressModeVVULKAN_HPP_NAMESPACE::SamplerCreateInfo78610       setAddressModeV( VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeV_ ) VULKAN_HPP_NOEXCEPT
78611     {
78612       addressModeV = addressModeV_;
78613       return *this;
78614     }
78615 
78616     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo &
setAddressModeWVULKAN_HPP_NAMESPACE::SamplerCreateInfo78617       setAddressModeW( VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeW_ ) VULKAN_HPP_NOEXCEPT
78618     {
78619       addressModeW = addressModeW_;
78620       return *this;
78621     }
78622 
setMipLodBiasVULKAN_HPP_NAMESPACE::SamplerCreateInfo78623     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setMipLodBias( float mipLodBias_ ) VULKAN_HPP_NOEXCEPT
78624     {
78625       mipLodBias = mipLodBias_;
78626       return *this;
78627     }
78628 
78629     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo &
setAnisotropyEnableVULKAN_HPP_NAMESPACE::SamplerCreateInfo78630                             setAnisotropyEnable( VULKAN_HPP_NAMESPACE::Bool32 anisotropyEnable_ ) VULKAN_HPP_NOEXCEPT
78631     {
78632       anisotropyEnable = anisotropyEnable_;
78633       return *this;
78634     }
78635 
setMaxAnisotropyVULKAN_HPP_NAMESPACE::SamplerCreateInfo78636     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setMaxAnisotropy( float maxAnisotropy_ ) VULKAN_HPP_NOEXCEPT
78637     {
78638       maxAnisotropy = maxAnisotropy_;
78639       return *this;
78640     }
78641 
78642     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo &
setCompareEnableVULKAN_HPP_NAMESPACE::SamplerCreateInfo78643                             setCompareEnable( VULKAN_HPP_NAMESPACE::Bool32 compareEnable_ ) VULKAN_HPP_NOEXCEPT
78644     {
78645       compareEnable = compareEnable_;
78646       return *this;
78647     }
78648 
78649     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo &
setCompareOpVULKAN_HPP_NAMESPACE::SamplerCreateInfo78650                             setCompareOp( VULKAN_HPP_NAMESPACE::CompareOp compareOp_ ) VULKAN_HPP_NOEXCEPT
78651     {
78652       compareOp = compareOp_;
78653       return *this;
78654     }
78655 
setMinLodVULKAN_HPP_NAMESPACE::SamplerCreateInfo78656     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setMinLod( float minLod_ ) VULKAN_HPP_NOEXCEPT
78657     {
78658       minLod = minLod_;
78659       return *this;
78660     }
78661 
setMaxLodVULKAN_HPP_NAMESPACE::SamplerCreateInfo78662     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setMaxLod( float maxLod_ ) VULKAN_HPP_NOEXCEPT
78663     {
78664       maxLod = maxLod_;
78665       return *this;
78666     }
78667 
78668     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo &
setBorderColorVULKAN_HPP_NAMESPACE::SamplerCreateInfo78669                             setBorderColor( VULKAN_HPP_NAMESPACE::BorderColor borderColor_ ) VULKAN_HPP_NOEXCEPT
78670     {
78671       borderColor = borderColor_;
78672       return *this;
78673     }
78674 
78675     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo &
setUnnormalizedCoordinatesVULKAN_HPP_NAMESPACE::SamplerCreateInfo78676       setUnnormalizedCoordinates( VULKAN_HPP_NAMESPACE::Bool32 unnormalizedCoordinates_ ) VULKAN_HPP_NOEXCEPT
78677     {
78678       unnormalizedCoordinates = unnormalizedCoordinates_;
78679       return *this;
78680     }
78681 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
78682 
operator VkSamplerCreateInfo const&VULKAN_HPP_NAMESPACE::SamplerCreateInfo78683     explicit operator VkSamplerCreateInfo const &() const VULKAN_HPP_NOEXCEPT
78684     {
78685       return *reinterpret_cast<const VkSamplerCreateInfo *>( this );
78686     }
78687 
operator VkSamplerCreateInfo&VULKAN_HPP_NAMESPACE::SamplerCreateInfo78688     explicit operator VkSamplerCreateInfo &() VULKAN_HPP_NOEXCEPT
78689     {
78690       return *reinterpret_cast<VkSamplerCreateInfo *>( this );
78691     }
78692 
78693 #if 14 <= VULKAN_HPP_CPP_VERSION
78694     auto
78695 #else
78696     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
78697                const void * const &,
78698                VULKAN_HPP_NAMESPACE::SamplerCreateFlags const &,
78699                VULKAN_HPP_NAMESPACE::Filter const &,
78700                VULKAN_HPP_NAMESPACE::Filter const &,
78701                VULKAN_HPP_NAMESPACE::SamplerMipmapMode const &,
78702                VULKAN_HPP_NAMESPACE::SamplerAddressMode const &,
78703                VULKAN_HPP_NAMESPACE::SamplerAddressMode const &,
78704                VULKAN_HPP_NAMESPACE::SamplerAddressMode const &,
78705                float const &,
78706                VULKAN_HPP_NAMESPACE::Bool32 const &,
78707                float const &,
78708                VULKAN_HPP_NAMESPACE::Bool32 const &,
78709                VULKAN_HPP_NAMESPACE::CompareOp const &,
78710                float const &,
78711                float const &,
78712                VULKAN_HPP_NAMESPACE::BorderColor const &,
78713                VULKAN_HPP_NAMESPACE::Bool32 const &>
78714 #endif
reflectVULKAN_HPP_NAMESPACE::SamplerCreateInfo78715       reflect() const VULKAN_HPP_NOEXCEPT
78716     {
78717       return std::tie( sType,
78718                        pNext,
78719                        flags,
78720                        magFilter,
78721                        minFilter,
78722                        mipmapMode,
78723                        addressModeU,
78724                        addressModeV,
78725                        addressModeW,
78726                        mipLodBias,
78727                        anisotropyEnable,
78728                        maxAnisotropy,
78729                        compareEnable,
78730                        compareOp,
78731                        minLod,
78732                        maxLod,
78733                        borderColor,
78734                        unnormalizedCoordinates );
78735     }
78736 
78737 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
78738     auto operator<=>( SamplerCreateInfo const & ) const = default;
78739 #else
operator ==VULKAN_HPP_NAMESPACE::SamplerCreateInfo78740     bool operator==( SamplerCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
78741     {
78742       return this->reflect() == rhs.reflect();
78743     }
78744 
operator !=VULKAN_HPP_NAMESPACE::SamplerCreateInfo78745     bool operator!=( SamplerCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
78746     {
78747       return this->reflect() != rhs.reflect();
78748     }
78749 #endif
78750 
78751   public:
78752     VULKAN_HPP_NAMESPACE::StructureType      sType            = StructureType::eSamplerCreateInfo;
78753     const void *                             pNext            = {};
78754     VULKAN_HPP_NAMESPACE::SamplerCreateFlags flags            = {};
78755     VULKAN_HPP_NAMESPACE::Filter             magFilter        = VULKAN_HPP_NAMESPACE::Filter::eNearest;
78756     VULKAN_HPP_NAMESPACE::Filter             minFilter        = VULKAN_HPP_NAMESPACE::Filter::eNearest;
78757     VULKAN_HPP_NAMESPACE::SamplerMipmapMode  mipmapMode       = VULKAN_HPP_NAMESPACE::SamplerMipmapMode::eNearest;
78758     VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeU     = VULKAN_HPP_NAMESPACE::SamplerAddressMode::eRepeat;
78759     VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeV     = VULKAN_HPP_NAMESPACE::SamplerAddressMode::eRepeat;
78760     VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeW     = VULKAN_HPP_NAMESPACE::SamplerAddressMode::eRepeat;
78761     float                                    mipLodBias       = {};
78762     VULKAN_HPP_NAMESPACE::Bool32             anisotropyEnable = {};
78763     float                                    maxAnisotropy    = {};
78764     VULKAN_HPP_NAMESPACE::Bool32             compareEnable    = {};
78765     VULKAN_HPP_NAMESPACE::CompareOp          compareOp        = VULKAN_HPP_NAMESPACE::CompareOp::eNever;
78766     float                                    minLod           = {};
78767     float                                    maxLod           = {};
78768     VULKAN_HPP_NAMESPACE::BorderColor        borderColor = VULKAN_HPP_NAMESPACE::BorderColor::eFloatTransparentBlack;
78769     VULKAN_HPP_NAMESPACE::Bool32             unnormalizedCoordinates = {};
78770   };
78771   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SamplerCreateInfo ) == sizeof( VkSamplerCreateInfo ),
78772                             "struct and wrapper have different size!" );
78773   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SamplerCreateInfo>::value,
78774                             "struct wrapper is not a standard layout!" );
78775   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SamplerCreateInfo>::value,
78776                             "SamplerCreateInfo is not nothrow_move_constructible!" );
78777 
78778   template <>
78779   struct CppType<StructureType, StructureType::eSamplerCreateInfo>
78780   {
78781     using Type = SamplerCreateInfo;
78782   };
78783 
78784   struct SamplerCustomBorderColorCreateInfoEXT
78785   {
78786     using NativeType = VkSamplerCustomBorderColorCreateInfoEXT;
78787 
78788     static const bool                                  allowDuplicate = false;
78789     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
78790       StructureType::eSamplerCustomBorderColorCreateInfoEXT;
78791 
78792 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SamplerCustomBorderColorCreateInfoEXTVULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT78793     VULKAN_HPP_CONSTEXPR_14 SamplerCustomBorderColorCreateInfoEXT(
78794       VULKAN_HPP_NAMESPACE::ClearColorValue customBorderColor_ = {},
78795       VULKAN_HPP_NAMESPACE::Format          format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined ) VULKAN_HPP_NOEXCEPT
78796       : customBorderColor( customBorderColor_ )
78797       , format( format_ )
78798     {}
78799 
78800     VULKAN_HPP_CONSTEXPR_14 SamplerCustomBorderColorCreateInfoEXT( SamplerCustomBorderColorCreateInfoEXT const & rhs )
78801       VULKAN_HPP_NOEXCEPT = default;
78802 
SamplerCustomBorderColorCreateInfoEXTVULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT78803     SamplerCustomBorderColorCreateInfoEXT( VkSamplerCustomBorderColorCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
78804       : SamplerCustomBorderColorCreateInfoEXT(
78805           *reinterpret_cast<SamplerCustomBorderColorCreateInfoEXT const *>( &rhs ) )
78806     {}
78807 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
78808 
78809     SamplerCustomBorderColorCreateInfoEXT &
78810       operator=( SamplerCustomBorderColorCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78811 
78812     SamplerCustomBorderColorCreateInfoEXT &
operator =VULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT78813       operator=( VkSamplerCustomBorderColorCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
78814     {
78815       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT const *>( &rhs );
78816       return *this;
78817     }
78818 
78819 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT78820     VULKAN_HPP_CONSTEXPR_14 SamplerCustomBorderColorCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
78821     {
78822       pNext = pNext_;
78823       return *this;
78824     }
78825 
78826     VULKAN_HPP_CONSTEXPR_14 SamplerCustomBorderColorCreateInfoEXT &
setCustomBorderColorVULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT78827       setCustomBorderColor( VULKAN_HPP_NAMESPACE::ClearColorValue const & customBorderColor_ ) VULKAN_HPP_NOEXCEPT
78828     {
78829       customBorderColor = customBorderColor_;
78830       return *this;
78831     }
78832 
78833     VULKAN_HPP_CONSTEXPR_14 SamplerCustomBorderColorCreateInfoEXT &
setFormatVULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT78834                             setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
78835     {
78836       format = format_;
78837       return *this;
78838     }
78839 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
78840 
operator VkSamplerCustomBorderColorCreateInfoEXT const&VULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT78841     explicit operator VkSamplerCustomBorderColorCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
78842     {
78843       return *reinterpret_cast<const VkSamplerCustomBorderColorCreateInfoEXT *>( this );
78844     }
78845 
operator VkSamplerCustomBorderColorCreateInfoEXT&VULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT78846     explicit operator VkSamplerCustomBorderColorCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
78847     {
78848       return *reinterpret_cast<VkSamplerCustomBorderColorCreateInfoEXT *>( this );
78849     }
78850 
78851 #if 14 <= VULKAN_HPP_CPP_VERSION
78852     auto
78853 #else
78854     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
78855                const void * const &,
78856                VULKAN_HPP_NAMESPACE::ClearColorValue const &,
78857                VULKAN_HPP_NAMESPACE::Format const &>
78858 #endif
reflectVULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT78859       reflect() const VULKAN_HPP_NOEXCEPT
78860     {
78861       return std::tie( sType, pNext, customBorderColor, format );
78862     }
78863 
78864   public:
78865     VULKAN_HPP_NAMESPACE::StructureType   sType             = StructureType::eSamplerCustomBorderColorCreateInfoEXT;
78866     const void *                          pNext             = {};
78867     VULKAN_HPP_NAMESPACE::ClearColorValue customBorderColor = {};
78868     VULKAN_HPP_NAMESPACE::Format          format            = VULKAN_HPP_NAMESPACE::Format::eUndefined;
78869   };
78870   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT ) ==
78871                               sizeof( VkSamplerCustomBorderColorCreateInfoEXT ),
78872                             "struct and wrapper have different size!" );
78873   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT>::value,
78874                             "struct wrapper is not a standard layout!" );
78875   VULKAN_HPP_STATIC_ASSERT(
78876     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT>::value,
78877     "SamplerCustomBorderColorCreateInfoEXT is not nothrow_move_constructible!" );
78878 
78879   template <>
78880   struct CppType<StructureType, StructureType::eSamplerCustomBorderColorCreateInfoEXT>
78881   {
78882     using Type = SamplerCustomBorderColorCreateInfoEXT;
78883   };
78884 
78885   struct SamplerReductionModeCreateInfo
78886   {
78887     using NativeType = VkSamplerReductionModeCreateInfo;
78888 
78889     static const bool                                  allowDuplicate = false;
78890     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSamplerReductionModeCreateInfo;
78891 
78892 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SamplerReductionModeCreateInfoVULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo78893     VULKAN_HPP_CONSTEXPR SamplerReductionModeCreateInfo(
78894       VULKAN_HPP_NAMESPACE::SamplerReductionMode reductionMode_ =
78895         VULKAN_HPP_NAMESPACE::SamplerReductionMode::eWeightedAverage ) VULKAN_HPP_NOEXCEPT
78896       : reductionMode( reductionMode_ )
78897     {}
78898 
78899     VULKAN_HPP_CONSTEXPR
78900       SamplerReductionModeCreateInfo( SamplerReductionModeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78901 
SamplerReductionModeCreateInfoVULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo78902     SamplerReductionModeCreateInfo( VkSamplerReductionModeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
78903       : SamplerReductionModeCreateInfo( *reinterpret_cast<SamplerReductionModeCreateInfo const *>( &rhs ) )
78904     {}
78905 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
78906 
78907     SamplerReductionModeCreateInfo &
78908       operator=( SamplerReductionModeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78909 
operator =VULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo78910     SamplerReductionModeCreateInfo & operator=( VkSamplerReductionModeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
78911     {
78912       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo const *>( &rhs );
78913       return *this;
78914     }
78915 
78916 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo78917     VULKAN_HPP_CONSTEXPR_14 SamplerReductionModeCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
78918     {
78919       pNext = pNext_;
78920       return *this;
78921     }
78922 
78923     VULKAN_HPP_CONSTEXPR_14 SamplerReductionModeCreateInfo &
setReductionModeVULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo78924       setReductionMode( VULKAN_HPP_NAMESPACE::SamplerReductionMode reductionMode_ ) VULKAN_HPP_NOEXCEPT
78925     {
78926       reductionMode = reductionMode_;
78927       return *this;
78928     }
78929 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
78930 
operator VkSamplerReductionModeCreateInfo const&VULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo78931     explicit operator VkSamplerReductionModeCreateInfo const &() const VULKAN_HPP_NOEXCEPT
78932     {
78933       return *reinterpret_cast<const VkSamplerReductionModeCreateInfo *>( this );
78934     }
78935 
operator VkSamplerReductionModeCreateInfo&VULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo78936     explicit operator VkSamplerReductionModeCreateInfo &() VULKAN_HPP_NOEXCEPT
78937     {
78938       return *reinterpret_cast<VkSamplerReductionModeCreateInfo *>( this );
78939     }
78940 
78941 #if 14 <= VULKAN_HPP_CPP_VERSION
78942     auto
78943 #else
78944     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
78945                const void * const &,
78946                VULKAN_HPP_NAMESPACE::SamplerReductionMode const &>
78947 #endif
reflectVULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo78948       reflect() const VULKAN_HPP_NOEXCEPT
78949     {
78950       return std::tie( sType, pNext, reductionMode );
78951     }
78952 
78953 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
78954     auto operator<=>( SamplerReductionModeCreateInfo const & ) const = default;
78955 #else
operator ==VULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo78956     bool operator==( SamplerReductionModeCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
78957     {
78958       return this->reflect() == rhs.reflect();
78959     }
78960 
operator !=VULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo78961     bool operator!=( SamplerReductionModeCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
78962     {
78963       return this->reflect() != rhs.reflect();
78964     }
78965 #endif
78966 
78967   public:
78968     VULKAN_HPP_NAMESPACE::StructureType        sType = StructureType::eSamplerReductionModeCreateInfo;
78969     const void *                               pNext = {};
78970     VULKAN_HPP_NAMESPACE::SamplerReductionMode reductionMode =
78971       VULKAN_HPP_NAMESPACE::SamplerReductionMode::eWeightedAverage;
78972   };
78973   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo ) ==
78974                               sizeof( VkSamplerReductionModeCreateInfo ),
78975                             "struct and wrapper have different size!" );
78976   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo>::value,
78977                             "struct wrapper is not a standard layout!" );
78978   VULKAN_HPP_STATIC_ASSERT(
78979     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo>::value,
78980     "SamplerReductionModeCreateInfo is not nothrow_move_constructible!" );
78981 
78982   template <>
78983   struct CppType<StructureType, StructureType::eSamplerReductionModeCreateInfo>
78984   {
78985     using Type = SamplerReductionModeCreateInfo;
78986   };
78987   using SamplerReductionModeCreateInfoEXT = SamplerReductionModeCreateInfo;
78988 
78989   struct SamplerYcbcrConversionCreateInfo
78990   {
78991     using NativeType = VkSamplerYcbcrConversionCreateInfo;
78992 
78993     static const bool                                  allowDuplicate = false;
78994     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSamplerYcbcrConversionCreateInfo;
78995 
78996 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SamplerYcbcrConversionCreateInfoVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo78997     VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionCreateInfo(
78998       VULKAN_HPP_NAMESPACE::Format                      format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined,
78999       VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion ycbcrModel_ =
79000         VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity,
79001       VULKAN_HPP_NAMESPACE::SamplerYcbcrRange ycbcrRange_    = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull,
79002       VULKAN_HPP_NAMESPACE::ComponentMapping  components_    = {},
79003       VULKAN_HPP_NAMESPACE::ChromaLocation    xChromaOffset_ = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven,
79004       VULKAN_HPP_NAMESPACE::ChromaLocation    yChromaOffset_ = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven,
79005       VULKAN_HPP_NAMESPACE::Filter            chromaFilter_  = VULKAN_HPP_NAMESPACE::Filter::eNearest,
79006       VULKAN_HPP_NAMESPACE::Bool32            forceExplicitReconstruction_ = {} ) VULKAN_HPP_NOEXCEPT
79007       : format( format_ )
79008       , ycbcrModel( ycbcrModel_ )
79009       , ycbcrRange( ycbcrRange_ )
79010       , components( components_ )
79011       , xChromaOffset( xChromaOffset_ )
79012       , yChromaOffset( yChromaOffset_ )
79013       , chromaFilter( chromaFilter_ )
79014       , forceExplicitReconstruction( forceExplicitReconstruction_ )
79015     {}
79016 
79017     VULKAN_HPP_CONSTEXPR
79018       SamplerYcbcrConversionCreateInfo( SamplerYcbcrConversionCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79019 
SamplerYcbcrConversionCreateInfoVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo79020     SamplerYcbcrConversionCreateInfo( VkSamplerYcbcrConversionCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
79021       : SamplerYcbcrConversionCreateInfo( *reinterpret_cast<SamplerYcbcrConversionCreateInfo const *>( &rhs ) )
79022     {}
79023 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
79024 
79025     SamplerYcbcrConversionCreateInfo &
79026       operator=( SamplerYcbcrConversionCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79027 
operator =VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo79028     SamplerYcbcrConversionCreateInfo & operator=( VkSamplerYcbcrConversionCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
79029     {
79030       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo const *>( &rhs );
79031       return *this;
79032     }
79033 
79034 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo79035     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
79036     {
79037       pNext = pNext_;
79038       return *this;
79039     }
79040 
79041     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo &
setFormatVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo79042                             setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
79043     {
79044       format = format_;
79045       return *this;
79046     }
79047 
79048     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo &
setYcbcrModelVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo79049       setYcbcrModel( VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion ycbcrModel_ ) VULKAN_HPP_NOEXCEPT
79050     {
79051       ycbcrModel = ycbcrModel_;
79052       return *this;
79053     }
79054 
79055     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo &
setYcbcrRangeVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo79056                             setYcbcrRange( VULKAN_HPP_NAMESPACE::SamplerYcbcrRange ycbcrRange_ ) VULKAN_HPP_NOEXCEPT
79057     {
79058       ycbcrRange = ycbcrRange_;
79059       return *this;
79060     }
79061 
79062     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo &
setComponentsVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo79063       setComponents( VULKAN_HPP_NAMESPACE::ComponentMapping const & components_ ) VULKAN_HPP_NOEXCEPT
79064     {
79065       components = components_;
79066       return *this;
79067     }
79068 
79069     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo &
setXChromaOffsetVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo79070                             setXChromaOffset( VULKAN_HPP_NAMESPACE::ChromaLocation xChromaOffset_ ) VULKAN_HPP_NOEXCEPT
79071     {
79072       xChromaOffset = xChromaOffset_;
79073       return *this;
79074     }
79075 
79076     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo &
setYChromaOffsetVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo79077                             setYChromaOffset( VULKAN_HPP_NAMESPACE::ChromaLocation yChromaOffset_ ) VULKAN_HPP_NOEXCEPT
79078     {
79079       yChromaOffset = yChromaOffset_;
79080       return *this;
79081     }
79082 
79083     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo &
setChromaFilterVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo79084                             setChromaFilter( VULKAN_HPP_NAMESPACE::Filter chromaFilter_ ) VULKAN_HPP_NOEXCEPT
79085     {
79086       chromaFilter = chromaFilter_;
79087       return *this;
79088     }
79089 
79090     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo &
setForceExplicitReconstructionVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo79091       setForceExplicitReconstruction( VULKAN_HPP_NAMESPACE::Bool32 forceExplicitReconstruction_ ) VULKAN_HPP_NOEXCEPT
79092     {
79093       forceExplicitReconstruction = forceExplicitReconstruction_;
79094       return *this;
79095     }
79096 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
79097 
operator VkSamplerYcbcrConversionCreateInfo const&VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo79098     explicit operator VkSamplerYcbcrConversionCreateInfo const &() const VULKAN_HPP_NOEXCEPT
79099     {
79100       return *reinterpret_cast<const VkSamplerYcbcrConversionCreateInfo *>( this );
79101     }
79102 
operator VkSamplerYcbcrConversionCreateInfo&VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo79103     explicit operator VkSamplerYcbcrConversionCreateInfo &() VULKAN_HPP_NOEXCEPT
79104     {
79105       return *reinterpret_cast<VkSamplerYcbcrConversionCreateInfo *>( this );
79106     }
79107 
79108 #if 14 <= VULKAN_HPP_CPP_VERSION
79109     auto
79110 #else
79111     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
79112                const void * const &,
79113                VULKAN_HPP_NAMESPACE::Format const &,
79114                VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion const &,
79115                VULKAN_HPP_NAMESPACE::SamplerYcbcrRange const &,
79116                VULKAN_HPP_NAMESPACE::ComponentMapping const &,
79117                VULKAN_HPP_NAMESPACE::ChromaLocation const &,
79118                VULKAN_HPP_NAMESPACE::ChromaLocation const &,
79119                VULKAN_HPP_NAMESPACE::Filter const &,
79120                VULKAN_HPP_NAMESPACE::Bool32 const &>
79121 #endif
reflectVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo79122       reflect() const VULKAN_HPP_NOEXCEPT
79123     {
79124       return std::tie( sType,
79125                        pNext,
79126                        format,
79127                        ycbcrModel,
79128                        ycbcrRange,
79129                        components,
79130                        xChromaOffset,
79131                        yChromaOffset,
79132                        chromaFilter,
79133                        forceExplicitReconstruction );
79134     }
79135 
79136 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
79137     auto operator<=>( SamplerYcbcrConversionCreateInfo const & ) const = default;
79138 #else
operator ==VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo79139     bool operator==( SamplerYcbcrConversionCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
79140     {
79141       return this->reflect() == rhs.reflect();
79142     }
79143 
operator !=VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo79144     bool operator!=( SamplerYcbcrConversionCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
79145     {
79146       return this->reflect() != rhs.reflect();
79147     }
79148 #endif
79149 
79150   public:
79151     VULKAN_HPP_NAMESPACE::StructureType               sType  = StructureType::eSamplerYcbcrConversionCreateInfo;
79152     const void *                                      pNext  = {};
79153     VULKAN_HPP_NAMESPACE::Format                      format = VULKAN_HPP_NAMESPACE::Format::eUndefined;
79154     VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion ycbcrModel =
79155       VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity;
79156     VULKAN_HPP_NAMESPACE::SamplerYcbcrRange ycbcrRange    = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull;
79157     VULKAN_HPP_NAMESPACE::ComponentMapping  components    = {};
79158     VULKAN_HPP_NAMESPACE::ChromaLocation    xChromaOffset = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven;
79159     VULKAN_HPP_NAMESPACE::ChromaLocation    yChromaOffset = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven;
79160     VULKAN_HPP_NAMESPACE::Filter            chromaFilter  = VULKAN_HPP_NAMESPACE::Filter::eNearest;
79161     VULKAN_HPP_NAMESPACE::Bool32            forceExplicitReconstruction = {};
79162   };
79163   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo ) ==
79164                               sizeof( VkSamplerYcbcrConversionCreateInfo ),
79165                             "struct and wrapper have different size!" );
79166   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo>::value,
79167                             "struct wrapper is not a standard layout!" );
79168   VULKAN_HPP_STATIC_ASSERT(
79169     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo>::value,
79170     "SamplerYcbcrConversionCreateInfo is not nothrow_move_constructible!" );
79171 
79172   template <>
79173   struct CppType<StructureType, StructureType::eSamplerYcbcrConversionCreateInfo>
79174   {
79175     using Type = SamplerYcbcrConversionCreateInfo;
79176   };
79177   using SamplerYcbcrConversionCreateInfoKHR = SamplerYcbcrConversionCreateInfo;
79178 
79179   struct SamplerYcbcrConversionImageFormatProperties
79180   {
79181     using NativeType = VkSamplerYcbcrConversionImageFormatProperties;
79182 
79183     static const bool                                  allowDuplicate = false;
79184     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
79185       StructureType::eSamplerYcbcrConversionImageFormatProperties;
79186 
79187 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SamplerYcbcrConversionImageFormatPropertiesVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties79188     VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionImageFormatProperties(
79189       uint32_t combinedImageSamplerDescriptorCount_ = {} ) VULKAN_HPP_NOEXCEPT
79190       : combinedImageSamplerDescriptorCount( combinedImageSamplerDescriptorCount_ )
79191     {}
79192 
79193     VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionImageFormatProperties(
79194       SamplerYcbcrConversionImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79195 
SamplerYcbcrConversionImageFormatPropertiesVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties79196     SamplerYcbcrConversionImageFormatProperties( VkSamplerYcbcrConversionImageFormatProperties const & rhs )
79197       VULKAN_HPP_NOEXCEPT
79198       : SamplerYcbcrConversionImageFormatProperties(
79199           *reinterpret_cast<SamplerYcbcrConversionImageFormatProperties const *>( &rhs ) )
79200     {}
79201 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
79202 
79203     SamplerYcbcrConversionImageFormatProperties &
79204       operator=( SamplerYcbcrConversionImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79205 
79206     SamplerYcbcrConversionImageFormatProperties &
operator =VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties79207       operator=( VkSamplerYcbcrConversionImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
79208     {
79209       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties const *>( &rhs );
79210       return *this;
79211     }
79212 
operator VkSamplerYcbcrConversionImageFormatProperties const&VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties79213     explicit operator VkSamplerYcbcrConversionImageFormatProperties const &() const VULKAN_HPP_NOEXCEPT
79214     {
79215       return *reinterpret_cast<const VkSamplerYcbcrConversionImageFormatProperties *>( this );
79216     }
79217 
operator VkSamplerYcbcrConversionImageFormatProperties&VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties79218     explicit operator VkSamplerYcbcrConversionImageFormatProperties &() VULKAN_HPP_NOEXCEPT
79219     {
79220       return *reinterpret_cast<VkSamplerYcbcrConversionImageFormatProperties *>( this );
79221     }
79222 
79223 #if 14 <= VULKAN_HPP_CPP_VERSION
79224     auto
79225 #else
79226     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
79227 #endif
reflectVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties79228       reflect() const VULKAN_HPP_NOEXCEPT
79229     {
79230       return std::tie( sType, pNext, combinedImageSamplerDescriptorCount );
79231     }
79232 
79233 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
79234     auto operator<=>( SamplerYcbcrConversionImageFormatProperties const & ) const = default;
79235 #else
operator ==VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties79236     bool operator==( SamplerYcbcrConversionImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
79237     {
79238       return this->reflect() == rhs.reflect();
79239     }
79240 
operator !=VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties79241     bool operator!=( SamplerYcbcrConversionImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
79242     {
79243       return this->reflect() != rhs.reflect();
79244     }
79245 #endif
79246 
79247   public:
79248     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSamplerYcbcrConversionImageFormatProperties;
79249     void *                              pNext = {};
79250     uint32_t                            combinedImageSamplerDescriptorCount = {};
79251   };
79252   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties ) ==
79253                               sizeof( VkSamplerYcbcrConversionImageFormatProperties ),
79254                             "struct and wrapper have different size!" );
79255   VULKAN_HPP_STATIC_ASSERT(
79256     std::is_standard_layout<VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties>::value,
79257     "struct wrapper is not a standard layout!" );
79258   VULKAN_HPP_STATIC_ASSERT(
79259     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties>::value,
79260     "SamplerYcbcrConversionImageFormatProperties is not nothrow_move_constructible!" );
79261 
79262   template <>
79263   struct CppType<StructureType, StructureType::eSamplerYcbcrConversionImageFormatProperties>
79264   {
79265     using Type = SamplerYcbcrConversionImageFormatProperties;
79266   };
79267   using SamplerYcbcrConversionImageFormatPropertiesKHR = SamplerYcbcrConversionImageFormatProperties;
79268 
79269   struct SamplerYcbcrConversionInfo
79270   {
79271     using NativeType = VkSamplerYcbcrConversionInfo;
79272 
79273     static const bool                                  allowDuplicate = false;
79274     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSamplerYcbcrConversionInfo;
79275 
79276 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
79277     VULKAN_HPP_CONSTEXPR
SamplerYcbcrConversionInfoVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo79278       SamplerYcbcrConversionInfo( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion conversion_ = {} ) VULKAN_HPP_NOEXCEPT
79279       : conversion( conversion_ )
79280     {}
79281 
79282     VULKAN_HPP_CONSTEXPR
79283       SamplerYcbcrConversionInfo( SamplerYcbcrConversionInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79284 
SamplerYcbcrConversionInfoVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo79285     SamplerYcbcrConversionInfo( VkSamplerYcbcrConversionInfo const & rhs ) VULKAN_HPP_NOEXCEPT
79286       : SamplerYcbcrConversionInfo( *reinterpret_cast<SamplerYcbcrConversionInfo const *>( &rhs ) )
79287     {}
79288 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
79289 
79290     SamplerYcbcrConversionInfo & operator=( SamplerYcbcrConversionInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79291 
operator =VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo79292     SamplerYcbcrConversionInfo & operator=( VkSamplerYcbcrConversionInfo const & rhs ) VULKAN_HPP_NOEXCEPT
79293     {
79294       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo const *>( &rhs );
79295       return *this;
79296     }
79297 
79298 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo79299     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
79300     {
79301       pNext = pNext_;
79302       return *this;
79303     }
79304 
79305     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionInfo &
setConversionVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo79306       setConversion( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion conversion_ ) VULKAN_HPP_NOEXCEPT
79307     {
79308       conversion = conversion_;
79309       return *this;
79310     }
79311 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
79312 
operator VkSamplerYcbcrConversionInfo const&VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo79313     explicit operator VkSamplerYcbcrConversionInfo const &() const VULKAN_HPP_NOEXCEPT
79314     {
79315       return *reinterpret_cast<const VkSamplerYcbcrConversionInfo *>( this );
79316     }
79317 
operator VkSamplerYcbcrConversionInfo&VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo79318     explicit operator VkSamplerYcbcrConversionInfo &() VULKAN_HPP_NOEXCEPT
79319     {
79320       return *reinterpret_cast<VkSamplerYcbcrConversionInfo *>( this );
79321     }
79322 
79323 #if 14 <= VULKAN_HPP_CPP_VERSION
79324     auto
79325 #else
79326     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
79327                const void * const &,
79328                VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion const &>
79329 #endif
reflectVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo79330       reflect() const VULKAN_HPP_NOEXCEPT
79331     {
79332       return std::tie( sType, pNext, conversion );
79333     }
79334 
79335 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
79336     auto operator<=>( SamplerYcbcrConversionInfo const & ) const = default;
79337 #else
operator ==VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo79338     bool operator==( SamplerYcbcrConversionInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
79339     {
79340       return this->reflect() == rhs.reflect();
79341     }
79342 
operator !=VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo79343     bool operator!=( SamplerYcbcrConversionInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
79344     {
79345       return this->reflect() != rhs.reflect();
79346     }
79347 #endif
79348 
79349   public:
79350     VULKAN_HPP_NAMESPACE::StructureType          sType      = StructureType::eSamplerYcbcrConversionInfo;
79351     const void *                                 pNext      = {};
79352     VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion conversion = {};
79353   };
79354   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo ) ==
79355                               sizeof( VkSamplerYcbcrConversionInfo ),
79356                             "struct and wrapper have different size!" );
79357   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo>::value,
79358                             "struct wrapper is not a standard layout!" );
79359   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo>::value,
79360                             "SamplerYcbcrConversionInfo is not nothrow_move_constructible!" );
79361 
79362   template <>
79363   struct CppType<StructureType, StructureType::eSamplerYcbcrConversionInfo>
79364   {
79365     using Type = SamplerYcbcrConversionInfo;
79366   };
79367   using SamplerYcbcrConversionInfoKHR = SamplerYcbcrConversionInfo;
79368 
79369 #if defined( VK_USE_PLATFORM_SCREEN_QNX )
79370   struct ScreenSurfaceCreateInfoQNX
79371   {
79372     using NativeType = VkScreenSurfaceCreateInfoQNX;
79373 
79374     static const bool                                  allowDuplicate = false;
79375     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eScreenSurfaceCreateInfoQNX;
79376 
79377 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ScreenSurfaceCreateInfoQNXVULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX79378     VULKAN_HPP_CONSTEXPR ScreenSurfaceCreateInfoQNX( VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateFlagsQNX flags_   = {},
79379                                                      struct _screen_context *                          context_ = {},
79380                                                      struct _screen_window * window_ = {} ) VULKAN_HPP_NOEXCEPT
79381       : flags( flags_ )
79382       , context( context_ )
79383       , window( window_ )
79384     {}
79385 
79386     VULKAN_HPP_CONSTEXPR
79387       ScreenSurfaceCreateInfoQNX( ScreenSurfaceCreateInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79388 
ScreenSurfaceCreateInfoQNXVULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX79389     ScreenSurfaceCreateInfoQNX( VkScreenSurfaceCreateInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT
79390       : ScreenSurfaceCreateInfoQNX( *reinterpret_cast<ScreenSurfaceCreateInfoQNX const *>( &rhs ) )
79391     {}
79392 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
79393 
79394     ScreenSurfaceCreateInfoQNX & operator=( ScreenSurfaceCreateInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79395 
operator =VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX79396     ScreenSurfaceCreateInfoQNX & operator=( VkScreenSurfaceCreateInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT
79397     {
79398       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX const *>( &rhs );
79399       return *this;
79400     }
79401 
79402 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX79403     VULKAN_HPP_CONSTEXPR_14 ScreenSurfaceCreateInfoQNX & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
79404     {
79405       pNext = pNext_;
79406       return *this;
79407     }
79408 
79409     VULKAN_HPP_CONSTEXPR_14 ScreenSurfaceCreateInfoQNX &
setFlagsVULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX79410                             setFlags( VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateFlagsQNX flags_ ) VULKAN_HPP_NOEXCEPT
79411     {
79412       flags = flags_;
79413       return *this;
79414     }
79415 
79416     VULKAN_HPP_CONSTEXPR_14 ScreenSurfaceCreateInfoQNX &
setContextVULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX79417                             setContext( struct _screen_context * context_ ) VULKAN_HPP_NOEXCEPT
79418     {
79419       context = context_;
79420       return *this;
79421     }
79422 
79423     VULKAN_HPP_CONSTEXPR_14 ScreenSurfaceCreateInfoQNX &
setWindowVULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX79424                             setWindow( struct _screen_window * window_ ) VULKAN_HPP_NOEXCEPT
79425     {
79426       window = window_;
79427       return *this;
79428     }
79429 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
79430 
operator VkScreenSurfaceCreateInfoQNX const&VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX79431     explicit operator VkScreenSurfaceCreateInfoQNX const &() const VULKAN_HPP_NOEXCEPT
79432     {
79433       return *reinterpret_cast<const VkScreenSurfaceCreateInfoQNX *>( this );
79434     }
79435 
operator VkScreenSurfaceCreateInfoQNX&VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX79436     explicit operator VkScreenSurfaceCreateInfoQNX &() VULKAN_HPP_NOEXCEPT
79437     {
79438       return *reinterpret_cast<VkScreenSurfaceCreateInfoQNX *>( this );
79439     }
79440 
79441 #  if 14 <= VULKAN_HPP_CPP_VERSION
79442     auto
79443 #  else
79444     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
79445                const void * const &,
79446                VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateFlagsQNX const &,
79447                struct _screen_context * const &,
79448                struct _screen_window * const &>
79449 #  endif
reflectVULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX79450       reflect() const VULKAN_HPP_NOEXCEPT
79451     {
79452       return std::tie( sType, pNext, flags, context, window );
79453     }
79454 
79455 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
79456     auto operator<=>( ScreenSurfaceCreateInfoQNX const & ) const = default;
79457 #  else
operator ==VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX79458     bool operator==( ScreenSurfaceCreateInfoQNX const & rhs ) const VULKAN_HPP_NOEXCEPT
79459     {
79460       return this->reflect() == rhs.reflect();
79461     }
79462 
operator !=VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX79463     bool operator!=( ScreenSurfaceCreateInfoQNX const & rhs ) const VULKAN_HPP_NOEXCEPT
79464     {
79465       return this->reflect() != rhs.reflect();
79466     }
79467 #  endif
79468 
79469   public:
79470     VULKAN_HPP_NAMESPACE::StructureType               sType   = StructureType::eScreenSurfaceCreateInfoQNX;
79471     const void *                                      pNext   = {};
79472     VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateFlagsQNX flags   = {};
79473     struct _screen_context *                          context = {};
79474     struct _screen_window *                           window  = {};
79475   };
79476   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX ) ==
79477                               sizeof( VkScreenSurfaceCreateInfoQNX ),
79478                             "struct and wrapper have different size!" );
79479   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX>::value,
79480                             "struct wrapper is not a standard layout!" );
79481   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX>::value,
79482                             "ScreenSurfaceCreateInfoQNX is not nothrow_move_constructible!" );
79483 
79484   template <>
79485   struct CppType<StructureType, StructureType::eScreenSurfaceCreateInfoQNX>
79486   {
79487     using Type = ScreenSurfaceCreateInfoQNX;
79488   };
79489 #endif /*VK_USE_PLATFORM_SCREEN_QNX*/
79490 
79491   struct SemaphoreCreateInfo
79492   {
79493     using NativeType = VkSemaphoreCreateInfo;
79494 
79495     static const bool                                  allowDuplicate = false;
79496     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSemaphoreCreateInfo;
79497 
79498 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
79499     VULKAN_HPP_CONSTEXPR
SemaphoreCreateInfoVULKAN_HPP_NAMESPACE::SemaphoreCreateInfo79500       SemaphoreCreateInfo( VULKAN_HPP_NAMESPACE::SemaphoreCreateFlags flags_ = {} ) VULKAN_HPP_NOEXCEPT
79501       : flags( flags_ )
79502     {}
79503 
79504     VULKAN_HPP_CONSTEXPR SemaphoreCreateInfo( SemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79505 
SemaphoreCreateInfoVULKAN_HPP_NAMESPACE::SemaphoreCreateInfo79506     SemaphoreCreateInfo( VkSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
79507       : SemaphoreCreateInfo( *reinterpret_cast<SemaphoreCreateInfo const *>( &rhs ) )
79508     {}
79509 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
79510 
79511     SemaphoreCreateInfo & operator=( SemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79512 
operator =VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo79513     SemaphoreCreateInfo & operator=( VkSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
79514     {
79515       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo const *>( &rhs );
79516       return *this;
79517     }
79518 
79519 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SemaphoreCreateInfo79520     VULKAN_HPP_CONSTEXPR_14 SemaphoreCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
79521     {
79522       pNext = pNext_;
79523       return *this;
79524     }
79525 
79526     VULKAN_HPP_CONSTEXPR_14 SemaphoreCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::SemaphoreCreateInfo79527                             setFlags( VULKAN_HPP_NAMESPACE::SemaphoreCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
79528     {
79529       flags = flags_;
79530       return *this;
79531     }
79532 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
79533 
operator VkSemaphoreCreateInfo const&VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo79534     explicit operator VkSemaphoreCreateInfo const &() const VULKAN_HPP_NOEXCEPT
79535     {
79536       return *reinterpret_cast<const VkSemaphoreCreateInfo *>( this );
79537     }
79538 
operator VkSemaphoreCreateInfo&VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo79539     explicit operator VkSemaphoreCreateInfo &() VULKAN_HPP_NOEXCEPT
79540     {
79541       return *reinterpret_cast<VkSemaphoreCreateInfo *>( this );
79542     }
79543 
79544 #if 14 <= VULKAN_HPP_CPP_VERSION
79545     auto
79546 #else
79547     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
79548                const void * const &,
79549                VULKAN_HPP_NAMESPACE::SemaphoreCreateFlags const &>
79550 #endif
reflectVULKAN_HPP_NAMESPACE::SemaphoreCreateInfo79551       reflect() const VULKAN_HPP_NOEXCEPT
79552     {
79553       return std::tie( sType, pNext, flags );
79554     }
79555 
79556 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
79557     auto operator<=>( SemaphoreCreateInfo const & ) const = default;
79558 #else
operator ==VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo79559     bool operator==( SemaphoreCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
79560     {
79561       return this->reflect() == rhs.reflect();
79562     }
79563 
operator !=VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo79564     bool operator!=( SemaphoreCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
79565     {
79566       return this->reflect() != rhs.reflect();
79567     }
79568 #endif
79569 
79570   public:
79571     VULKAN_HPP_NAMESPACE::StructureType        sType = StructureType::eSemaphoreCreateInfo;
79572     const void *                               pNext = {};
79573     VULKAN_HPP_NAMESPACE::SemaphoreCreateFlags flags = {};
79574   };
79575   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo ) == sizeof( VkSemaphoreCreateInfo ),
79576                             "struct and wrapper have different size!" );
79577   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo>::value,
79578                             "struct wrapper is not a standard layout!" );
79579   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo>::value,
79580                             "SemaphoreCreateInfo is not nothrow_move_constructible!" );
79581 
79582   template <>
79583   struct CppType<StructureType, StructureType::eSemaphoreCreateInfo>
79584   {
79585     using Type = SemaphoreCreateInfo;
79586   };
79587 
79588   struct SemaphoreGetFdInfoKHR
79589   {
79590     using NativeType = VkSemaphoreGetFdInfoKHR;
79591 
79592     static const bool                                  allowDuplicate = false;
79593     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSemaphoreGetFdInfoKHR;
79594 
79595 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SemaphoreGetFdInfoKHRVULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR79596     VULKAN_HPP_CONSTEXPR SemaphoreGetFdInfoKHR( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ = {},
79597                                                 VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ =
79598                                                   VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd )
79599       VULKAN_HPP_NOEXCEPT
79600       : semaphore( semaphore_ )
79601       , handleType( handleType_ )
79602     {}
79603 
79604     VULKAN_HPP_CONSTEXPR SemaphoreGetFdInfoKHR( SemaphoreGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79605 
SemaphoreGetFdInfoKHRVULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR79606     SemaphoreGetFdInfoKHR( VkSemaphoreGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
79607       : SemaphoreGetFdInfoKHR( *reinterpret_cast<SemaphoreGetFdInfoKHR const *>( &rhs ) )
79608     {}
79609 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
79610 
79611     SemaphoreGetFdInfoKHR & operator=( SemaphoreGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79612 
operator =VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR79613     SemaphoreGetFdInfoKHR & operator=( VkSemaphoreGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
79614     {
79615       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR const *>( &rhs );
79616       return *this;
79617     }
79618 
79619 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR79620     VULKAN_HPP_CONSTEXPR_14 SemaphoreGetFdInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
79621     {
79622       pNext = pNext_;
79623       return *this;
79624     }
79625 
79626     VULKAN_HPP_CONSTEXPR_14 SemaphoreGetFdInfoKHR &
setSemaphoreVULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR79627                             setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
79628     {
79629       semaphore = semaphore_;
79630       return *this;
79631     }
79632 
79633     VULKAN_HPP_CONSTEXPR_14 SemaphoreGetFdInfoKHR &
setHandleTypeVULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR79634       setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
79635     {
79636       handleType = handleType_;
79637       return *this;
79638     }
79639 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
79640 
operator VkSemaphoreGetFdInfoKHR const&VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR79641     explicit operator VkSemaphoreGetFdInfoKHR const &() const VULKAN_HPP_NOEXCEPT
79642     {
79643       return *reinterpret_cast<const VkSemaphoreGetFdInfoKHR *>( this );
79644     }
79645 
operator VkSemaphoreGetFdInfoKHR&VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR79646     explicit operator VkSemaphoreGetFdInfoKHR &() VULKAN_HPP_NOEXCEPT
79647     {
79648       return *reinterpret_cast<VkSemaphoreGetFdInfoKHR *>( this );
79649     }
79650 
79651 #if 14 <= VULKAN_HPP_CPP_VERSION
79652     auto
79653 #else
79654     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
79655                const void * const &,
79656                VULKAN_HPP_NAMESPACE::Semaphore const &,
79657                VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits const &>
79658 #endif
reflectVULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR79659       reflect() const VULKAN_HPP_NOEXCEPT
79660     {
79661       return std::tie( sType, pNext, semaphore, handleType );
79662     }
79663 
79664 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
79665     auto operator<=>( SemaphoreGetFdInfoKHR const & ) const = default;
79666 #else
operator ==VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR79667     bool operator==( SemaphoreGetFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
79668     {
79669       return this->reflect() == rhs.reflect();
79670     }
79671 
operator !=VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR79672     bool operator!=( SemaphoreGetFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
79673     {
79674       return this->reflect() != rhs.reflect();
79675     }
79676 #endif
79677 
79678   public:
79679     VULKAN_HPP_NAMESPACE::StructureType                       sType     = StructureType::eSemaphoreGetFdInfoKHR;
79680     const void *                                              pNext     = {};
79681     VULKAN_HPP_NAMESPACE::Semaphore                           semaphore = {};
79682     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType =
79683       VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd;
79684   };
79685   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR ) == sizeof( VkSemaphoreGetFdInfoKHR ),
79686                             "struct and wrapper have different size!" );
79687   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR>::value,
79688                             "struct wrapper is not a standard layout!" );
79689   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR>::value,
79690                             "SemaphoreGetFdInfoKHR is not nothrow_move_constructible!" );
79691 
79692   template <>
79693   struct CppType<StructureType, StructureType::eSemaphoreGetFdInfoKHR>
79694   {
79695     using Type = SemaphoreGetFdInfoKHR;
79696   };
79697 
79698 #if defined( VK_USE_PLATFORM_WIN32_KHR )
79699   struct SemaphoreGetWin32HandleInfoKHR
79700   {
79701     using NativeType = VkSemaphoreGetWin32HandleInfoKHR;
79702 
79703     static const bool                                  allowDuplicate = false;
79704     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSemaphoreGetWin32HandleInfoKHR;
79705 
79706 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SemaphoreGetWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR79707     VULKAN_HPP_CONSTEXPR SemaphoreGetWin32HandleInfoKHR(
79708       VULKAN_HPP_NAMESPACE::Semaphore                           semaphore_ = {},
79709       VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ =
79710         VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd ) VULKAN_HPP_NOEXCEPT
79711       : semaphore( semaphore_ )
79712       , handleType( handleType_ )
79713     {}
79714 
79715     VULKAN_HPP_CONSTEXPR
79716       SemaphoreGetWin32HandleInfoKHR( SemaphoreGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79717 
SemaphoreGetWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR79718     SemaphoreGetWin32HandleInfoKHR( VkSemaphoreGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
79719       : SemaphoreGetWin32HandleInfoKHR( *reinterpret_cast<SemaphoreGetWin32HandleInfoKHR const *>( &rhs ) )
79720     {}
79721 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
79722 
79723     SemaphoreGetWin32HandleInfoKHR &
79724       operator=( SemaphoreGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79725 
operator =VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR79726     SemaphoreGetWin32HandleInfoKHR & operator=( VkSemaphoreGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
79727     {
79728       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR const *>( &rhs );
79729       return *this;
79730     }
79731 
79732 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR79733     VULKAN_HPP_CONSTEXPR_14 SemaphoreGetWin32HandleInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
79734     {
79735       pNext = pNext_;
79736       return *this;
79737     }
79738 
79739     VULKAN_HPP_CONSTEXPR_14 SemaphoreGetWin32HandleInfoKHR &
setSemaphoreVULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR79740                             setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
79741     {
79742       semaphore = semaphore_;
79743       return *this;
79744     }
79745 
79746     VULKAN_HPP_CONSTEXPR_14 SemaphoreGetWin32HandleInfoKHR &
setHandleTypeVULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR79747       setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
79748     {
79749       handleType = handleType_;
79750       return *this;
79751     }
79752 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
79753 
operator VkSemaphoreGetWin32HandleInfoKHR const&VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR79754     explicit operator VkSemaphoreGetWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT
79755     {
79756       return *reinterpret_cast<const VkSemaphoreGetWin32HandleInfoKHR *>( this );
79757     }
79758 
operator VkSemaphoreGetWin32HandleInfoKHR&VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR79759     explicit operator VkSemaphoreGetWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT
79760     {
79761       return *reinterpret_cast<VkSemaphoreGetWin32HandleInfoKHR *>( this );
79762     }
79763 
79764 #  if 14 <= VULKAN_HPP_CPP_VERSION
79765     auto
79766 #  else
79767     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
79768                const void * const &,
79769                VULKAN_HPP_NAMESPACE::Semaphore const &,
79770                VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits const &>
79771 #  endif
reflectVULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR79772       reflect() const VULKAN_HPP_NOEXCEPT
79773     {
79774       return std::tie( sType, pNext, semaphore, handleType );
79775     }
79776 
79777 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
79778     auto operator<=>( SemaphoreGetWin32HandleInfoKHR const & ) const = default;
79779 #  else
operator ==VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR79780     bool operator==( SemaphoreGetWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
79781     {
79782       return this->reflect() == rhs.reflect();
79783     }
79784 
operator !=VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR79785     bool operator!=( SemaphoreGetWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
79786     {
79787       return this->reflect() != rhs.reflect();
79788     }
79789 #  endif
79790 
79791   public:
79792     VULKAN_HPP_NAMESPACE::StructureType                       sType = StructureType::eSemaphoreGetWin32HandleInfoKHR;
79793     const void *                                              pNext = {};
79794     VULKAN_HPP_NAMESPACE::Semaphore                           semaphore = {};
79795     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType =
79796       VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd;
79797   };
79798   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR ) ==
79799                               sizeof( VkSemaphoreGetWin32HandleInfoKHR ),
79800                             "struct and wrapper have different size!" );
79801   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR>::value,
79802                             "struct wrapper is not a standard layout!" );
79803   VULKAN_HPP_STATIC_ASSERT(
79804     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR>::value,
79805     "SemaphoreGetWin32HandleInfoKHR is not nothrow_move_constructible!" );
79806 
79807   template <>
79808   struct CppType<StructureType, StructureType::eSemaphoreGetWin32HandleInfoKHR>
79809   {
79810     using Type = SemaphoreGetWin32HandleInfoKHR;
79811   };
79812 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
79813 
79814 #if defined( VK_USE_PLATFORM_FUCHSIA )
79815   struct SemaphoreGetZirconHandleInfoFUCHSIA
79816   {
79817     using NativeType = VkSemaphoreGetZirconHandleInfoFUCHSIA;
79818 
79819     static const bool                                  allowDuplicate = false;
79820     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
79821       StructureType::eSemaphoreGetZirconHandleInfoFUCHSIA;
79822 
79823 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SemaphoreGetZirconHandleInfoFUCHSIAVULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA79824     VULKAN_HPP_CONSTEXPR SemaphoreGetZirconHandleInfoFUCHSIA(
79825       VULKAN_HPP_NAMESPACE::Semaphore                           semaphore_ = {},
79826       VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ =
79827         VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd ) VULKAN_HPP_NOEXCEPT
79828       : semaphore( semaphore_ )
79829       , handleType( handleType_ )
79830     {}
79831 
79832     VULKAN_HPP_CONSTEXPR SemaphoreGetZirconHandleInfoFUCHSIA( SemaphoreGetZirconHandleInfoFUCHSIA const & rhs )
79833       VULKAN_HPP_NOEXCEPT = default;
79834 
SemaphoreGetZirconHandleInfoFUCHSIAVULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA79835     SemaphoreGetZirconHandleInfoFUCHSIA( VkSemaphoreGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
79836       : SemaphoreGetZirconHandleInfoFUCHSIA( *reinterpret_cast<SemaphoreGetZirconHandleInfoFUCHSIA const *>( &rhs ) )
79837     {}
79838 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
79839 
79840     SemaphoreGetZirconHandleInfoFUCHSIA &
79841       operator=( SemaphoreGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79842 
79843     SemaphoreGetZirconHandleInfoFUCHSIA &
operator =VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA79844       operator=( VkSemaphoreGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
79845     {
79846       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA const *>( &rhs );
79847       return *this;
79848     }
79849 
79850 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA79851     VULKAN_HPP_CONSTEXPR_14 SemaphoreGetZirconHandleInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
79852     {
79853       pNext = pNext_;
79854       return *this;
79855     }
79856 
79857     VULKAN_HPP_CONSTEXPR_14 SemaphoreGetZirconHandleInfoFUCHSIA &
setSemaphoreVULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA79858                             setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
79859     {
79860       semaphore = semaphore_;
79861       return *this;
79862     }
79863 
79864     VULKAN_HPP_CONSTEXPR_14 SemaphoreGetZirconHandleInfoFUCHSIA &
setHandleTypeVULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA79865       setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
79866     {
79867       handleType = handleType_;
79868       return *this;
79869     }
79870 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
79871 
operator VkSemaphoreGetZirconHandleInfoFUCHSIA const&VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA79872     explicit operator VkSemaphoreGetZirconHandleInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
79873     {
79874       return *reinterpret_cast<const VkSemaphoreGetZirconHandleInfoFUCHSIA *>( this );
79875     }
79876 
operator VkSemaphoreGetZirconHandleInfoFUCHSIA&VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA79877     explicit operator VkSemaphoreGetZirconHandleInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT
79878     {
79879       return *reinterpret_cast<VkSemaphoreGetZirconHandleInfoFUCHSIA *>( this );
79880     }
79881 
79882 #  if 14 <= VULKAN_HPP_CPP_VERSION
79883     auto
79884 #  else
79885     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
79886                const void * const &,
79887                VULKAN_HPP_NAMESPACE::Semaphore const &,
79888                VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits const &>
79889 #  endif
reflectVULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA79890       reflect() const VULKAN_HPP_NOEXCEPT
79891     {
79892       return std::tie( sType, pNext, semaphore, handleType );
79893     }
79894 
79895 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
79896     auto operator<=>( SemaphoreGetZirconHandleInfoFUCHSIA const & ) const = default;
79897 #  else
operator ==VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA79898     bool operator==( SemaphoreGetZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
79899     {
79900       return this->reflect() == rhs.reflect();
79901     }
79902 
operator !=VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA79903     bool operator!=( SemaphoreGetZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
79904     {
79905       return this->reflect() != rhs.reflect();
79906     }
79907 #  endif
79908 
79909   public:
79910     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::eSemaphoreGetZirconHandleInfoFUCHSIA;
79911     const void *                        pNext     = {};
79912     VULKAN_HPP_NAMESPACE::Semaphore     semaphore = {};
79913     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType =
79914       VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd;
79915   };
79916   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA ) ==
79917                               sizeof( VkSemaphoreGetZirconHandleInfoFUCHSIA ),
79918                             "struct and wrapper have different size!" );
79919   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA>::value,
79920                             "struct wrapper is not a standard layout!" );
79921   VULKAN_HPP_STATIC_ASSERT(
79922     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA>::value,
79923     "SemaphoreGetZirconHandleInfoFUCHSIA is not nothrow_move_constructible!" );
79924 
79925   template <>
79926   struct CppType<StructureType, StructureType::eSemaphoreGetZirconHandleInfoFUCHSIA>
79927   {
79928     using Type = SemaphoreGetZirconHandleInfoFUCHSIA;
79929   };
79930 #endif /*VK_USE_PLATFORM_FUCHSIA*/
79931 
79932   struct SemaphoreSignalInfo
79933   {
79934     using NativeType = VkSemaphoreSignalInfo;
79935 
79936     static const bool                                  allowDuplicate = false;
79937     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSemaphoreSignalInfo;
79938 
79939 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SemaphoreSignalInfoVULKAN_HPP_NAMESPACE::SemaphoreSignalInfo79940     VULKAN_HPP_CONSTEXPR SemaphoreSignalInfo( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ = {},
79941                                               uint64_t                        value_     = {} ) VULKAN_HPP_NOEXCEPT
79942       : semaphore( semaphore_ )
79943       , value( value_ )
79944     {}
79945 
79946     VULKAN_HPP_CONSTEXPR SemaphoreSignalInfo( SemaphoreSignalInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79947 
SemaphoreSignalInfoVULKAN_HPP_NAMESPACE::SemaphoreSignalInfo79948     SemaphoreSignalInfo( VkSemaphoreSignalInfo const & rhs ) VULKAN_HPP_NOEXCEPT
79949       : SemaphoreSignalInfo( *reinterpret_cast<SemaphoreSignalInfo const *>( &rhs ) )
79950     {}
79951 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
79952 
79953     SemaphoreSignalInfo & operator=( SemaphoreSignalInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79954 
operator =VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo79955     SemaphoreSignalInfo & operator=( VkSemaphoreSignalInfo const & rhs ) VULKAN_HPP_NOEXCEPT
79956     {
79957       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo const *>( &rhs );
79958       return *this;
79959     }
79960 
79961 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SemaphoreSignalInfo79962     VULKAN_HPP_CONSTEXPR_14 SemaphoreSignalInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
79963     {
79964       pNext = pNext_;
79965       return *this;
79966     }
79967 
79968     VULKAN_HPP_CONSTEXPR_14 SemaphoreSignalInfo &
setSemaphoreVULKAN_HPP_NAMESPACE::SemaphoreSignalInfo79969                             setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
79970     {
79971       semaphore = semaphore_;
79972       return *this;
79973     }
79974 
setValueVULKAN_HPP_NAMESPACE::SemaphoreSignalInfo79975     VULKAN_HPP_CONSTEXPR_14 SemaphoreSignalInfo & setValue( uint64_t value_ ) VULKAN_HPP_NOEXCEPT
79976     {
79977       value = value_;
79978       return *this;
79979     }
79980 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
79981 
operator VkSemaphoreSignalInfo const&VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo79982     explicit operator VkSemaphoreSignalInfo const &() const VULKAN_HPP_NOEXCEPT
79983     {
79984       return *reinterpret_cast<const VkSemaphoreSignalInfo *>( this );
79985     }
79986 
operator VkSemaphoreSignalInfo&VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo79987     explicit operator VkSemaphoreSignalInfo &() VULKAN_HPP_NOEXCEPT
79988     {
79989       return *reinterpret_cast<VkSemaphoreSignalInfo *>( this );
79990     }
79991 
79992 #if 14 <= VULKAN_HPP_CPP_VERSION
79993     auto
79994 #else
79995     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
79996                const void * const &,
79997                VULKAN_HPP_NAMESPACE::Semaphore const &,
79998                uint64_t const &>
79999 #endif
reflectVULKAN_HPP_NAMESPACE::SemaphoreSignalInfo80000       reflect() const VULKAN_HPP_NOEXCEPT
80001     {
80002       return std::tie( sType, pNext, semaphore, value );
80003     }
80004 
80005 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
80006     auto operator<=>( SemaphoreSignalInfo const & ) const = default;
80007 #else
operator ==VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo80008     bool operator==( SemaphoreSignalInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
80009     {
80010       return this->reflect() == rhs.reflect();
80011     }
80012 
operator !=VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo80013     bool operator!=( SemaphoreSignalInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
80014     {
80015       return this->reflect() != rhs.reflect();
80016     }
80017 #endif
80018 
80019   public:
80020     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::eSemaphoreSignalInfo;
80021     const void *                        pNext     = {};
80022     VULKAN_HPP_NAMESPACE::Semaphore     semaphore = {};
80023     uint64_t                            value     = {};
80024   };
80025   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo ) == sizeof( VkSemaphoreSignalInfo ),
80026                             "struct and wrapper have different size!" );
80027   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo>::value,
80028                             "struct wrapper is not a standard layout!" );
80029   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo>::value,
80030                             "SemaphoreSignalInfo is not nothrow_move_constructible!" );
80031 
80032   template <>
80033   struct CppType<StructureType, StructureType::eSemaphoreSignalInfo>
80034   {
80035     using Type = SemaphoreSignalInfo;
80036   };
80037   using SemaphoreSignalInfoKHR = SemaphoreSignalInfo;
80038 
80039   struct SemaphoreSubmitInfoKHR
80040   {
80041     using NativeType = VkSemaphoreSubmitInfoKHR;
80042 
80043     static const bool                                  allowDuplicate = false;
80044     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSemaphoreSubmitInfoKHR;
80045 
80046 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SemaphoreSubmitInfoKHRVULKAN_HPP_NAMESPACE::SemaphoreSubmitInfoKHR80047     VULKAN_HPP_CONSTEXPR SemaphoreSubmitInfoKHR( VULKAN_HPP_NAMESPACE::Semaphore              semaphore_ = {},
80048                                                  uint64_t                                     value_     = {},
80049                                                  VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR stageMask_ = {},
80050                                                  uint32_t deviceIndex_ = {} ) VULKAN_HPP_NOEXCEPT
80051       : semaphore( semaphore_ )
80052       , value( value_ )
80053       , stageMask( stageMask_ )
80054       , deviceIndex( deviceIndex_ )
80055     {}
80056 
80057     VULKAN_HPP_CONSTEXPR SemaphoreSubmitInfoKHR( SemaphoreSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80058 
SemaphoreSubmitInfoKHRVULKAN_HPP_NAMESPACE::SemaphoreSubmitInfoKHR80059     SemaphoreSubmitInfoKHR( VkSemaphoreSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
80060       : SemaphoreSubmitInfoKHR( *reinterpret_cast<SemaphoreSubmitInfoKHR const *>( &rhs ) )
80061     {}
80062 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
80063 
80064     SemaphoreSubmitInfoKHR & operator=( SemaphoreSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80065 
operator =VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfoKHR80066     SemaphoreSubmitInfoKHR & operator=( VkSemaphoreSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
80067     {
80068       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfoKHR const *>( &rhs );
80069       return *this;
80070     }
80071 
80072 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SemaphoreSubmitInfoKHR80073     VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
80074     {
80075       pNext = pNext_;
80076       return *this;
80077     }
80078 
80079     VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfoKHR &
setSemaphoreVULKAN_HPP_NAMESPACE::SemaphoreSubmitInfoKHR80080                             setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
80081     {
80082       semaphore = semaphore_;
80083       return *this;
80084     }
80085 
setValueVULKAN_HPP_NAMESPACE::SemaphoreSubmitInfoKHR80086     VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfoKHR & setValue( uint64_t value_ ) VULKAN_HPP_NOEXCEPT
80087     {
80088       value = value_;
80089       return *this;
80090     }
80091 
80092     VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfoKHR &
setStageMaskVULKAN_HPP_NAMESPACE::SemaphoreSubmitInfoKHR80093                             setStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR stageMask_ ) VULKAN_HPP_NOEXCEPT
80094     {
80095       stageMask = stageMask_;
80096       return *this;
80097     }
80098 
setDeviceIndexVULKAN_HPP_NAMESPACE::SemaphoreSubmitInfoKHR80099     VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfoKHR & setDeviceIndex( uint32_t deviceIndex_ ) VULKAN_HPP_NOEXCEPT
80100     {
80101       deviceIndex = deviceIndex_;
80102       return *this;
80103     }
80104 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
80105 
operator VkSemaphoreSubmitInfoKHR const&VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfoKHR80106     explicit operator VkSemaphoreSubmitInfoKHR const &() const VULKAN_HPP_NOEXCEPT
80107     {
80108       return *reinterpret_cast<const VkSemaphoreSubmitInfoKHR *>( this );
80109     }
80110 
operator VkSemaphoreSubmitInfoKHR&VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfoKHR80111     explicit operator VkSemaphoreSubmitInfoKHR &() VULKAN_HPP_NOEXCEPT
80112     {
80113       return *reinterpret_cast<VkSemaphoreSubmitInfoKHR *>( this );
80114     }
80115 
80116 #if 14 <= VULKAN_HPP_CPP_VERSION
80117     auto
80118 #else
80119     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
80120                const void * const &,
80121                VULKAN_HPP_NAMESPACE::Semaphore const &,
80122                uint64_t const &,
80123                VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR const &,
80124                uint32_t const &>
80125 #endif
reflectVULKAN_HPP_NAMESPACE::SemaphoreSubmitInfoKHR80126       reflect() const VULKAN_HPP_NOEXCEPT
80127     {
80128       return std::tie( sType, pNext, semaphore, value, stageMask, deviceIndex );
80129     }
80130 
80131 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
80132     auto operator<=>( SemaphoreSubmitInfoKHR const & ) const = default;
80133 #else
operator ==VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfoKHR80134     bool operator==( SemaphoreSubmitInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
80135     {
80136       return this->reflect() == rhs.reflect();
80137     }
80138 
operator !=VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfoKHR80139     bool operator!=( SemaphoreSubmitInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
80140     {
80141       return this->reflect() != rhs.reflect();
80142     }
80143 #endif
80144 
80145   public:
80146     VULKAN_HPP_NAMESPACE::StructureType          sType       = StructureType::eSemaphoreSubmitInfoKHR;
80147     const void *                                 pNext       = {};
80148     VULKAN_HPP_NAMESPACE::Semaphore              semaphore   = {};
80149     uint64_t                                     value       = {};
80150     VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR stageMask   = {};
80151     uint32_t                                     deviceIndex = {};
80152   };
80153   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfoKHR ) ==
80154                               sizeof( VkSemaphoreSubmitInfoKHR ),
80155                             "struct and wrapper have different size!" );
80156   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfoKHR>::value,
80157                             "struct wrapper is not a standard layout!" );
80158   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfoKHR>::value,
80159                             "SemaphoreSubmitInfoKHR is not nothrow_move_constructible!" );
80160 
80161   template <>
80162   struct CppType<StructureType, StructureType::eSemaphoreSubmitInfoKHR>
80163   {
80164     using Type = SemaphoreSubmitInfoKHR;
80165   };
80166 
80167   struct SemaphoreTypeCreateInfo
80168   {
80169     using NativeType = VkSemaphoreTypeCreateInfo;
80170 
80171     static const bool                                  allowDuplicate = false;
80172     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSemaphoreTypeCreateInfo;
80173 
80174 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SemaphoreTypeCreateInfoVULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo80175     VULKAN_HPP_CONSTEXPR SemaphoreTypeCreateInfo(
80176       VULKAN_HPP_NAMESPACE::SemaphoreType semaphoreType_ = VULKAN_HPP_NAMESPACE::SemaphoreType::eBinary,
80177       uint64_t                            initialValue_  = {} ) VULKAN_HPP_NOEXCEPT
80178       : semaphoreType( semaphoreType_ )
80179       , initialValue( initialValue_ )
80180     {}
80181 
80182     VULKAN_HPP_CONSTEXPR SemaphoreTypeCreateInfo( SemaphoreTypeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80183 
SemaphoreTypeCreateInfoVULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo80184     SemaphoreTypeCreateInfo( VkSemaphoreTypeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
80185       : SemaphoreTypeCreateInfo( *reinterpret_cast<SemaphoreTypeCreateInfo const *>( &rhs ) )
80186     {}
80187 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
80188 
80189     SemaphoreTypeCreateInfo & operator=( SemaphoreTypeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80190 
operator =VULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo80191     SemaphoreTypeCreateInfo & operator=( VkSemaphoreTypeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
80192     {
80193       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo const *>( &rhs );
80194       return *this;
80195     }
80196 
80197 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo80198     VULKAN_HPP_CONSTEXPR_14 SemaphoreTypeCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
80199     {
80200       pNext = pNext_;
80201       return *this;
80202     }
80203 
80204     VULKAN_HPP_CONSTEXPR_14 SemaphoreTypeCreateInfo &
setSemaphoreTypeVULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo80205                             setSemaphoreType( VULKAN_HPP_NAMESPACE::SemaphoreType semaphoreType_ ) VULKAN_HPP_NOEXCEPT
80206     {
80207       semaphoreType = semaphoreType_;
80208       return *this;
80209     }
80210 
setInitialValueVULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo80211     VULKAN_HPP_CONSTEXPR_14 SemaphoreTypeCreateInfo & setInitialValue( uint64_t initialValue_ ) VULKAN_HPP_NOEXCEPT
80212     {
80213       initialValue = initialValue_;
80214       return *this;
80215     }
80216 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
80217 
operator VkSemaphoreTypeCreateInfo const&VULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo80218     explicit operator VkSemaphoreTypeCreateInfo const &() const VULKAN_HPP_NOEXCEPT
80219     {
80220       return *reinterpret_cast<const VkSemaphoreTypeCreateInfo *>( this );
80221     }
80222 
operator VkSemaphoreTypeCreateInfo&VULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo80223     explicit operator VkSemaphoreTypeCreateInfo &() VULKAN_HPP_NOEXCEPT
80224     {
80225       return *reinterpret_cast<VkSemaphoreTypeCreateInfo *>( this );
80226     }
80227 
80228 #if 14 <= VULKAN_HPP_CPP_VERSION
80229     auto
80230 #else
80231     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
80232                const void * const &,
80233                VULKAN_HPP_NAMESPACE::SemaphoreType const &,
80234                uint64_t const &>
80235 #endif
reflectVULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo80236       reflect() const VULKAN_HPP_NOEXCEPT
80237     {
80238       return std::tie( sType, pNext, semaphoreType, initialValue );
80239     }
80240 
80241 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
80242     auto operator<=>( SemaphoreTypeCreateInfo const & ) const = default;
80243 #else
operator ==VULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo80244     bool operator==( SemaphoreTypeCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
80245     {
80246       return this->reflect() == rhs.reflect();
80247     }
80248 
operator !=VULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo80249     bool operator!=( SemaphoreTypeCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
80250     {
80251       return this->reflect() != rhs.reflect();
80252     }
80253 #endif
80254 
80255   public:
80256     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::eSemaphoreTypeCreateInfo;
80257     const void *                        pNext         = {};
80258     VULKAN_HPP_NAMESPACE::SemaphoreType semaphoreType = VULKAN_HPP_NAMESPACE::SemaphoreType::eBinary;
80259     uint64_t                            initialValue  = {};
80260   };
80261   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo ) ==
80262                               sizeof( VkSemaphoreTypeCreateInfo ),
80263                             "struct and wrapper have different size!" );
80264   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo>::value,
80265                             "struct wrapper is not a standard layout!" );
80266   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo>::value,
80267                             "SemaphoreTypeCreateInfo is not nothrow_move_constructible!" );
80268 
80269   template <>
80270   struct CppType<StructureType, StructureType::eSemaphoreTypeCreateInfo>
80271   {
80272     using Type = SemaphoreTypeCreateInfo;
80273   };
80274   using SemaphoreTypeCreateInfoKHR = SemaphoreTypeCreateInfo;
80275 
80276   struct SemaphoreWaitInfo
80277   {
80278     using NativeType = VkSemaphoreWaitInfo;
80279 
80280     static const bool                                  allowDuplicate = false;
80281     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSemaphoreWaitInfo;
80282 
80283 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SemaphoreWaitInfoVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo80284     VULKAN_HPP_CONSTEXPR SemaphoreWaitInfo( VULKAN_HPP_NAMESPACE::SemaphoreWaitFlags flags_          = {},
80285                                             uint32_t                                 semaphoreCount_ = {},
80286                                             const VULKAN_HPP_NAMESPACE::Semaphore *  pSemaphores_    = {},
80287                                             const uint64_t *                         pValues_ = {} ) VULKAN_HPP_NOEXCEPT
80288       : flags( flags_ )
80289       , semaphoreCount( semaphoreCount_ )
80290       , pSemaphores( pSemaphores_ )
80291       , pValues( pValues_ )
80292     {}
80293 
80294     VULKAN_HPP_CONSTEXPR SemaphoreWaitInfo( SemaphoreWaitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80295 
SemaphoreWaitInfoVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo80296     SemaphoreWaitInfo( VkSemaphoreWaitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
80297       : SemaphoreWaitInfo( *reinterpret_cast<SemaphoreWaitInfo const *>( &rhs ) )
80298     {}
80299 
80300 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SemaphoreWaitInfoVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo80301     SemaphoreWaitInfo(
80302       VULKAN_HPP_NAMESPACE::SemaphoreWaitFlags                                                     flags_,
80303       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const & semaphores_,
80304       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const &                        values_ = {} )
80305       : flags( flags_ )
80306       , semaphoreCount( static_cast<uint32_t>( semaphores_.size() ) )
80307       , pSemaphores( semaphores_.data() )
80308       , pValues( values_.data() )
80309     {
80310 #    ifdef VULKAN_HPP_NO_EXCEPTIONS
80311       VULKAN_HPP_ASSERT( semaphores_.size() == values_.size() );
80312 #    else
80313       if ( semaphores_.size() != values_.size() )
80314       {
80315         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
80316                           "::SemaphoreWaitInfo::SemaphoreWaitInfo: semaphores_.size() != values_.size()" );
80317       }
80318 #    endif /*VULKAN_HPP_NO_EXCEPTIONS*/
80319     }
80320 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
80321 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
80322 
80323     SemaphoreWaitInfo & operator=( SemaphoreWaitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80324 
operator =VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo80325     SemaphoreWaitInfo & operator=( VkSemaphoreWaitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
80326     {
80327       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo const *>( &rhs );
80328       return *this;
80329     }
80330 
80331 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo80332     VULKAN_HPP_CONSTEXPR_14 SemaphoreWaitInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
80333     {
80334       pNext = pNext_;
80335       return *this;
80336     }
80337 
80338     VULKAN_HPP_CONSTEXPR_14 SemaphoreWaitInfo &
setFlagsVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo80339                             setFlags( VULKAN_HPP_NAMESPACE::SemaphoreWaitFlags flags_ ) VULKAN_HPP_NOEXCEPT
80340     {
80341       flags = flags_;
80342       return *this;
80343     }
80344 
setSemaphoreCountVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo80345     VULKAN_HPP_CONSTEXPR_14 SemaphoreWaitInfo & setSemaphoreCount( uint32_t semaphoreCount_ ) VULKAN_HPP_NOEXCEPT
80346     {
80347       semaphoreCount = semaphoreCount_;
80348       return *this;
80349     }
80350 
80351     VULKAN_HPP_CONSTEXPR_14 SemaphoreWaitInfo &
setPSemaphoresVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo80352                             setPSemaphores( const VULKAN_HPP_NAMESPACE::Semaphore * pSemaphores_ ) VULKAN_HPP_NOEXCEPT
80353     {
80354       pSemaphores = pSemaphores_;
80355       return *this;
80356     }
80357 
80358 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSemaphoresVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo80359     SemaphoreWaitInfo & setSemaphores(
80360       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const & semaphores_ )
80361       VULKAN_HPP_NOEXCEPT
80362     {
80363       semaphoreCount = static_cast<uint32_t>( semaphores_.size() );
80364       pSemaphores    = semaphores_.data();
80365       return *this;
80366     }
80367 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
80368 
setPValuesVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo80369     VULKAN_HPP_CONSTEXPR_14 SemaphoreWaitInfo & setPValues( const uint64_t * pValues_ ) VULKAN_HPP_NOEXCEPT
80370     {
80371       pValues = pValues_;
80372       return *this;
80373     }
80374 
80375 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
80376     SemaphoreWaitInfo &
setValuesVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo80377       setValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & values_ ) VULKAN_HPP_NOEXCEPT
80378     {
80379       semaphoreCount = static_cast<uint32_t>( values_.size() );
80380       pValues        = values_.data();
80381       return *this;
80382     }
80383 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
80384 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
80385 
operator VkSemaphoreWaitInfo const&VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo80386     explicit operator VkSemaphoreWaitInfo const &() const VULKAN_HPP_NOEXCEPT
80387     {
80388       return *reinterpret_cast<const VkSemaphoreWaitInfo *>( this );
80389     }
80390 
operator VkSemaphoreWaitInfo&VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo80391     explicit operator VkSemaphoreWaitInfo &() VULKAN_HPP_NOEXCEPT
80392     {
80393       return *reinterpret_cast<VkSemaphoreWaitInfo *>( this );
80394     }
80395 
80396 #if 14 <= VULKAN_HPP_CPP_VERSION
80397     auto
80398 #else
80399     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
80400                const void * const &,
80401                VULKAN_HPP_NAMESPACE::SemaphoreWaitFlags const &,
80402                uint32_t const &,
80403                const VULKAN_HPP_NAMESPACE::Semaphore * const &,
80404                const uint64_t * const &>
80405 #endif
reflectVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo80406       reflect() const VULKAN_HPP_NOEXCEPT
80407     {
80408       return std::tie( sType, pNext, flags, semaphoreCount, pSemaphores, pValues );
80409     }
80410 
80411 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
80412     auto operator<=>( SemaphoreWaitInfo const & ) const = default;
80413 #else
operator ==VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo80414     bool operator==( SemaphoreWaitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
80415     {
80416       return this->reflect() == rhs.reflect();
80417     }
80418 
operator !=VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo80419     bool operator!=( SemaphoreWaitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
80420     {
80421       return this->reflect() != rhs.reflect();
80422     }
80423 #endif
80424 
80425   public:
80426     VULKAN_HPP_NAMESPACE::StructureType      sType          = StructureType::eSemaphoreWaitInfo;
80427     const void *                             pNext          = {};
80428     VULKAN_HPP_NAMESPACE::SemaphoreWaitFlags flags          = {};
80429     uint32_t                                 semaphoreCount = {};
80430     const VULKAN_HPP_NAMESPACE::Semaphore *  pSemaphores    = {};
80431     const uint64_t *                         pValues        = {};
80432   };
80433   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo ) == sizeof( VkSemaphoreWaitInfo ),
80434                             "struct and wrapper have different size!" );
80435   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo>::value,
80436                             "struct wrapper is not a standard layout!" );
80437   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo>::value,
80438                             "SemaphoreWaitInfo is not nothrow_move_constructible!" );
80439 
80440   template <>
80441   struct CppType<StructureType, StructureType::eSemaphoreWaitInfo>
80442   {
80443     using Type = SemaphoreWaitInfo;
80444   };
80445   using SemaphoreWaitInfoKHR = SemaphoreWaitInfo;
80446 
80447   struct SetStateFlagsIndirectCommandNV
80448   {
80449     using NativeType = VkSetStateFlagsIndirectCommandNV;
80450 
80451 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SetStateFlagsIndirectCommandNVVULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV80452     VULKAN_HPP_CONSTEXPR SetStateFlagsIndirectCommandNV( uint32_t data_ = {} ) VULKAN_HPP_NOEXCEPT : data( data_ ) {}
80453 
80454     VULKAN_HPP_CONSTEXPR
80455       SetStateFlagsIndirectCommandNV( SetStateFlagsIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80456 
SetStateFlagsIndirectCommandNVVULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV80457     SetStateFlagsIndirectCommandNV( VkSetStateFlagsIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
80458       : SetStateFlagsIndirectCommandNV( *reinterpret_cast<SetStateFlagsIndirectCommandNV const *>( &rhs ) )
80459     {}
80460 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
80461 
80462     SetStateFlagsIndirectCommandNV &
80463       operator=( SetStateFlagsIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80464 
operator =VULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV80465     SetStateFlagsIndirectCommandNV & operator=( VkSetStateFlagsIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
80466     {
80467       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV const *>( &rhs );
80468       return *this;
80469     }
80470 
80471 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setDataVULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV80472     VULKAN_HPP_CONSTEXPR_14 SetStateFlagsIndirectCommandNV & setData( uint32_t data_ ) VULKAN_HPP_NOEXCEPT
80473     {
80474       data = data_;
80475       return *this;
80476     }
80477 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
80478 
operator VkSetStateFlagsIndirectCommandNV const&VULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV80479     explicit operator VkSetStateFlagsIndirectCommandNV const &() const VULKAN_HPP_NOEXCEPT
80480     {
80481       return *reinterpret_cast<const VkSetStateFlagsIndirectCommandNV *>( this );
80482     }
80483 
operator VkSetStateFlagsIndirectCommandNV&VULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV80484     explicit operator VkSetStateFlagsIndirectCommandNV &() VULKAN_HPP_NOEXCEPT
80485     {
80486       return *reinterpret_cast<VkSetStateFlagsIndirectCommandNV *>( this );
80487     }
80488 
80489 #if 14 <= VULKAN_HPP_CPP_VERSION
80490     auto
80491 #else
80492     std::tuple<uint32_t const &>
80493 #endif
reflectVULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV80494       reflect() const VULKAN_HPP_NOEXCEPT
80495     {
80496       return std::tie( data );
80497     }
80498 
80499 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
80500     auto operator<=>( SetStateFlagsIndirectCommandNV const & ) const = default;
80501 #else
operator ==VULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV80502     bool operator==( SetStateFlagsIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
80503     {
80504       return this->reflect() == rhs.reflect();
80505     }
80506 
operator !=VULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV80507     bool operator!=( SetStateFlagsIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
80508     {
80509       return this->reflect() != rhs.reflect();
80510     }
80511 #endif
80512 
80513   public:
80514     uint32_t data = {};
80515   };
80516   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV ) ==
80517                               sizeof( VkSetStateFlagsIndirectCommandNV ),
80518                             "struct and wrapper have different size!" );
80519   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV>::value,
80520                             "struct wrapper is not a standard layout!" );
80521   VULKAN_HPP_STATIC_ASSERT(
80522     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV>::value,
80523     "SetStateFlagsIndirectCommandNV is not nothrow_move_constructible!" );
80524 
80525   struct ShaderModuleCreateInfo
80526   {
80527     using NativeType = VkShaderModuleCreateInfo;
80528 
80529     static const bool                                  allowDuplicate = false;
80530     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eShaderModuleCreateInfo;
80531 
80532 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ShaderModuleCreateInfoVULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo80533     VULKAN_HPP_CONSTEXPR ShaderModuleCreateInfo( VULKAN_HPP_NAMESPACE::ShaderModuleCreateFlags flags_    = {},
80534                                                  size_t                                        codeSize_ = {},
80535                                                  const uint32_t * pCode_ = {} ) VULKAN_HPP_NOEXCEPT
80536       : flags( flags_ )
80537       , codeSize( codeSize_ )
80538       , pCode( pCode_ )
80539     {}
80540 
80541     VULKAN_HPP_CONSTEXPR ShaderModuleCreateInfo( ShaderModuleCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80542 
ShaderModuleCreateInfoVULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo80543     ShaderModuleCreateInfo( VkShaderModuleCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
80544       : ShaderModuleCreateInfo( *reinterpret_cast<ShaderModuleCreateInfo const *>( &rhs ) )
80545     {}
80546 
80547 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ShaderModuleCreateInfoVULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo80548     ShaderModuleCreateInfo( VULKAN_HPP_NAMESPACE::ShaderModuleCreateFlags                         flags_,
80549                             VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & code_ )
80550       : flags( flags_ ), codeSize( code_.size() * 4 ), pCode( code_.data() )
80551     {}
80552 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
80553 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
80554 
80555     ShaderModuleCreateInfo & operator=( ShaderModuleCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80556 
operator =VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo80557     ShaderModuleCreateInfo & operator=( VkShaderModuleCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
80558     {
80559       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo const *>( &rhs );
80560       return *this;
80561     }
80562 
80563 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo80564     VULKAN_HPP_CONSTEXPR_14 ShaderModuleCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
80565     {
80566       pNext = pNext_;
80567       return *this;
80568     }
80569 
80570     VULKAN_HPP_CONSTEXPR_14 ShaderModuleCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo80571                             setFlags( VULKAN_HPP_NAMESPACE::ShaderModuleCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
80572     {
80573       flags = flags_;
80574       return *this;
80575     }
80576 
setCodeSizeVULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo80577     VULKAN_HPP_CONSTEXPR_14 ShaderModuleCreateInfo & setCodeSize( size_t codeSize_ ) VULKAN_HPP_NOEXCEPT
80578     {
80579       codeSize = codeSize_;
80580       return *this;
80581     }
80582 
setPCodeVULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo80583     VULKAN_HPP_CONSTEXPR_14 ShaderModuleCreateInfo & setPCode( const uint32_t * pCode_ ) VULKAN_HPP_NOEXCEPT
80584     {
80585       pCode = pCode_;
80586       return *this;
80587     }
80588 
80589 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
80590     ShaderModuleCreateInfo &
setCodeVULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo80591       setCode( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & code_ ) VULKAN_HPP_NOEXCEPT
80592     {
80593       codeSize = code_.size() * 4;
80594       pCode    = code_.data();
80595       return *this;
80596     }
80597 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
80598 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
80599 
operator VkShaderModuleCreateInfo const&VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo80600     explicit operator VkShaderModuleCreateInfo const &() const VULKAN_HPP_NOEXCEPT
80601     {
80602       return *reinterpret_cast<const VkShaderModuleCreateInfo *>( this );
80603     }
80604 
operator VkShaderModuleCreateInfo&VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo80605     explicit operator VkShaderModuleCreateInfo &() VULKAN_HPP_NOEXCEPT
80606     {
80607       return *reinterpret_cast<VkShaderModuleCreateInfo *>( this );
80608     }
80609 
80610 #if 14 <= VULKAN_HPP_CPP_VERSION
80611     auto
80612 #else
80613     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
80614                const void * const &,
80615                VULKAN_HPP_NAMESPACE::ShaderModuleCreateFlags const &,
80616                size_t const &,
80617                const uint32_t * const &>
80618 #endif
reflectVULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo80619       reflect() const VULKAN_HPP_NOEXCEPT
80620     {
80621       return std::tie( sType, pNext, flags, codeSize, pCode );
80622     }
80623 
80624 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
80625     auto operator<=>( ShaderModuleCreateInfo const & ) const = default;
80626 #else
operator ==VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo80627     bool operator==( ShaderModuleCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
80628     {
80629       return this->reflect() == rhs.reflect();
80630     }
80631 
operator !=VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo80632     bool operator!=( ShaderModuleCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
80633     {
80634       return this->reflect() != rhs.reflect();
80635     }
80636 #endif
80637 
80638   public:
80639     VULKAN_HPP_NAMESPACE::StructureType           sType    = StructureType::eShaderModuleCreateInfo;
80640     const void *                                  pNext    = {};
80641     VULKAN_HPP_NAMESPACE::ShaderModuleCreateFlags flags    = {};
80642     size_t                                        codeSize = {};
80643     const uint32_t *                              pCode    = {};
80644   };
80645   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo ) ==
80646                               sizeof( VkShaderModuleCreateInfo ),
80647                             "struct and wrapper have different size!" );
80648   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo>::value,
80649                             "struct wrapper is not a standard layout!" );
80650   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo>::value,
80651                             "ShaderModuleCreateInfo is not nothrow_move_constructible!" );
80652 
80653   template <>
80654   struct CppType<StructureType, StructureType::eShaderModuleCreateInfo>
80655   {
80656     using Type = ShaderModuleCreateInfo;
80657   };
80658 
80659   struct ShaderModuleValidationCacheCreateInfoEXT
80660   {
80661     using NativeType = VkShaderModuleValidationCacheCreateInfoEXT;
80662 
80663     static const bool                                  allowDuplicate = false;
80664     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
80665       StructureType::eShaderModuleValidationCacheCreateInfoEXT;
80666 
80667 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ShaderModuleValidationCacheCreateInfoEXTVULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT80668     VULKAN_HPP_CONSTEXPR ShaderModuleValidationCacheCreateInfoEXT(
80669       VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache_ = {} ) VULKAN_HPP_NOEXCEPT
80670       : validationCache( validationCache_ )
80671     {}
80672 
80673     VULKAN_HPP_CONSTEXPR ShaderModuleValidationCacheCreateInfoEXT(
80674       ShaderModuleValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80675 
ShaderModuleValidationCacheCreateInfoEXTVULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT80676     ShaderModuleValidationCacheCreateInfoEXT( VkShaderModuleValidationCacheCreateInfoEXT const & rhs )
80677       VULKAN_HPP_NOEXCEPT
80678       : ShaderModuleValidationCacheCreateInfoEXT(
80679           *reinterpret_cast<ShaderModuleValidationCacheCreateInfoEXT const *>( &rhs ) )
80680     {}
80681 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
80682 
80683     ShaderModuleValidationCacheCreateInfoEXT &
80684       operator=( ShaderModuleValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80685 
80686     ShaderModuleValidationCacheCreateInfoEXT &
operator =VULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT80687       operator=( VkShaderModuleValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
80688     {
80689       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT const *>( &rhs );
80690       return *this;
80691     }
80692 
80693 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
80694     VULKAN_HPP_CONSTEXPR_14 ShaderModuleValidationCacheCreateInfoEXT &
setPNextVULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT80695                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
80696     {
80697       pNext = pNext_;
80698       return *this;
80699     }
80700 
80701     VULKAN_HPP_CONSTEXPR_14 ShaderModuleValidationCacheCreateInfoEXT &
setValidationCacheVULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT80702       setValidationCache( VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache_ ) VULKAN_HPP_NOEXCEPT
80703     {
80704       validationCache = validationCache_;
80705       return *this;
80706     }
80707 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
80708 
operator VkShaderModuleValidationCacheCreateInfoEXT const&VULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT80709     explicit operator VkShaderModuleValidationCacheCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
80710     {
80711       return *reinterpret_cast<const VkShaderModuleValidationCacheCreateInfoEXT *>( this );
80712     }
80713 
operator VkShaderModuleValidationCacheCreateInfoEXT&VULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT80714     explicit operator VkShaderModuleValidationCacheCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
80715     {
80716       return *reinterpret_cast<VkShaderModuleValidationCacheCreateInfoEXT *>( this );
80717     }
80718 
80719 #if 14 <= VULKAN_HPP_CPP_VERSION
80720     auto
80721 #else
80722     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
80723                const void * const &,
80724                VULKAN_HPP_NAMESPACE::ValidationCacheEXT const &>
80725 #endif
reflectVULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT80726       reflect() const VULKAN_HPP_NOEXCEPT
80727     {
80728       return std::tie( sType, pNext, validationCache );
80729     }
80730 
80731 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
80732     auto operator<=>( ShaderModuleValidationCacheCreateInfoEXT const & ) const = default;
80733 #else
operator ==VULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT80734     bool operator==( ShaderModuleValidationCacheCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
80735     {
80736       return this->reflect() == rhs.reflect();
80737     }
80738 
operator !=VULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT80739     bool operator!=( ShaderModuleValidationCacheCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
80740     {
80741       return this->reflect() != rhs.reflect();
80742     }
80743 #endif
80744 
80745   public:
80746     VULKAN_HPP_NAMESPACE::StructureType      sType           = StructureType::eShaderModuleValidationCacheCreateInfoEXT;
80747     const void *                             pNext           = {};
80748     VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache = {};
80749   };
80750   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT ) ==
80751                               sizeof( VkShaderModuleValidationCacheCreateInfoEXT ),
80752                             "struct and wrapper have different size!" );
80753   VULKAN_HPP_STATIC_ASSERT(
80754     std::is_standard_layout<VULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT>::value,
80755     "struct wrapper is not a standard layout!" );
80756   VULKAN_HPP_STATIC_ASSERT(
80757     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT>::value,
80758     "ShaderModuleValidationCacheCreateInfoEXT is not nothrow_move_constructible!" );
80759 
80760   template <>
80761   struct CppType<StructureType, StructureType::eShaderModuleValidationCacheCreateInfoEXT>
80762   {
80763     using Type = ShaderModuleValidationCacheCreateInfoEXT;
80764   };
80765 
80766   struct ShaderResourceUsageAMD
80767   {
80768     using NativeType = VkShaderResourceUsageAMD;
80769 
80770 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ShaderResourceUsageAMDVULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD80771     VULKAN_HPP_CONSTEXPR ShaderResourceUsageAMD( uint32_t numUsedVgprs_             = {},
80772                                                  uint32_t numUsedSgprs_             = {},
80773                                                  uint32_t ldsSizePerLocalWorkGroup_ = {},
80774                                                  size_t   ldsUsageSizeInBytes_      = {},
80775                                                  size_t   scratchMemUsageInBytes_   = {} ) VULKAN_HPP_NOEXCEPT
80776       : numUsedVgprs( numUsedVgprs_ )
80777       , numUsedSgprs( numUsedSgprs_ )
80778       , ldsSizePerLocalWorkGroup( ldsSizePerLocalWorkGroup_ )
80779       , ldsUsageSizeInBytes( ldsUsageSizeInBytes_ )
80780       , scratchMemUsageInBytes( scratchMemUsageInBytes_ )
80781     {}
80782 
80783     VULKAN_HPP_CONSTEXPR ShaderResourceUsageAMD( ShaderResourceUsageAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80784 
ShaderResourceUsageAMDVULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD80785     ShaderResourceUsageAMD( VkShaderResourceUsageAMD const & rhs ) VULKAN_HPP_NOEXCEPT
80786       : ShaderResourceUsageAMD( *reinterpret_cast<ShaderResourceUsageAMD const *>( &rhs ) )
80787     {}
80788 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
80789 
80790     ShaderResourceUsageAMD & operator=( ShaderResourceUsageAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80791 
operator =VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD80792     ShaderResourceUsageAMD & operator=( VkShaderResourceUsageAMD const & rhs ) VULKAN_HPP_NOEXCEPT
80793     {
80794       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD const *>( &rhs );
80795       return *this;
80796     }
80797 
operator VkShaderResourceUsageAMD const&VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD80798     explicit operator VkShaderResourceUsageAMD const &() const VULKAN_HPP_NOEXCEPT
80799     {
80800       return *reinterpret_cast<const VkShaderResourceUsageAMD *>( this );
80801     }
80802 
operator VkShaderResourceUsageAMD&VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD80803     explicit operator VkShaderResourceUsageAMD &() VULKAN_HPP_NOEXCEPT
80804     {
80805       return *reinterpret_cast<VkShaderResourceUsageAMD *>( this );
80806     }
80807 
80808 #if 14 <= VULKAN_HPP_CPP_VERSION
80809     auto
80810 #else
80811     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &, size_t const &, size_t const &>
80812 #endif
reflectVULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD80813       reflect() const VULKAN_HPP_NOEXCEPT
80814     {
80815       return std::tie(
80816         numUsedVgprs, numUsedSgprs, ldsSizePerLocalWorkGroup, ldsUsageSizeInBytes, scratchMemUsageInBytes );
80817     }
80818 
80819 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
80820     auto operator<=>( ShaderResourceUsageAMD const & ) const = default;
80821 #else
operator ==VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD80822     bool operator==( ShaderResourceUsageAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
80823     {
80824       return this->reflect() == rhs.reflect();
80825     }
80826 
operator !=VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD80827     bool operator!=( ShaderResourceUsageAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
80828     {
80829       return this->reflect() != rhs.reflect();
80830     }
80831 #endif
80832 
80833   public:
80834     uint32_t numUsedVgprs             = {};
80835     uint32_t numUsedSgprs             = {};
80836     uint32_t ldsSizePerLocalWorkGroup = {};
80837     size_t   ldsUsageSizeInBytes      = {};
80838     size_t   scratchMemUsageInBytes   = {};
80839   };
80840   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD ) ==
80841                               sizeof( VkShaderResourceUsageAMD ),
80842                             "struct and wrapper have different size!" );
80843   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD>::value,
80844                             "struct wrapper is not a standard layout!" );
80845   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD>::value,
80846                             "ShaderResourceUsageAMD is not nothrow_move_constructible!" );
80847 
80848   struct ShaderStatisticsInfoAMD
80849   {
80850     using NativeType = VkShaderStatisticsInfoAMD;
80851 
80852 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
80853     VULKAN_HPP_CONSTEXPR_14
ShaderStatisticsInfoAMDVULKAN_HPP_NAMESPACE::ShaderStatisticsInfoAMD80854       ShaderStatisticsInfoAMD( VULKAN_HPP_NAMESPACE::ShaderStageFlags       shaderStageMask_   = {},
80855                                VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD resourceUsage_     = {},
80856                                uint32_t                                     numPhysicalVgprs_  = {},
80857                                uint32_t                                     numPhysicalSgprs_  = {},
80858                                uint32_t                                     numAvailableVgprs_ = {},
80859                                uint32_t                                     numAvailableSgprs_ = {},
80860                                std::array<uint32_t, 3> const & computeWorkGroupSize_ = {} ) VULKAN_HPP_NOEXCEPT
80861       : shaderStageMask( shaderStageMask_ )
80862       , resourceUsage( resourceUsage_ )
80863       , numPhysicalVgprs( numPhysicalVgprs_ )
80864       , numPhysicalSgprs( numPhysicalSgprs_ )
80865       , numAvailableVgprs( numAvailableVgprs_ )
80866       , numAvailableSgprs( numAvailableSgprs_ )
80867       , computeWorkGroupSize( computeWorkGroupSize_ )
80868     {}
80869 
80870     VULKAN_HPP_CONSTEXPR_14
80871       ShaderStatisticsInfoAMD( ShaderStatisticsInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80872 
ShaderStatisticsInfoAMDVULKAN_HPP_NAMESPACE::ShaderStatisticsInfoAMD80873     ShaderStatisticsInfoAMD( VkShaderStatisticsInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
80874       : ShaderStatisticsInfoAMD( *reinterpret_cast<ShaderStatisticsInfoAMD const *>( &rhs ) )
80875     {}
80876 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
80877 
80878     ShaderStatisticsInfoAMD & operator=( ShaderStatisticsInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80879 
operator =VULKAN_HPP_NAMESPACE::ShaderStatisticsInfoAMD80880     ShaderStatisticsInfoAMD & operator=( VkShaderStatisticsInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
80881     {
80882       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ShaderStatisticsInfoAMD const *>( &rhs );
80883       return *this;
80884     }
80885 
operator VkShaderStatisticsInfoAMD const&VULKAN_HPP_NAMESPACE::ShaderStatisticsInfoAMD80886     explicit operator VkShaderStatisticsInfoAMD const &() const VULKAN_HPP_NOEXCEPT
80887     {
80888       return *reinterpret_cast<const VkShaderStatisticsInfoAMD *>( this );
80889     }
80890 
operator VkShaderStatisticsInfoAMD&VULKAN_HPP_NAMESPACE::ShaderStatisticsInfoAMD80891     explicit operator VkShaderStatisticsInfoAMD &() VULKAN_HPP_NOEXCEPT
80892     {
80893       return *reinterpret_cast<VkShaderStatisticsInfoAMD *>( this );
80894     }
80895 
80896 #if 14 <= VULKAN_HPP_CPP_VERSION
80897     auto
80898 #else
80899     std::tuple<VULKAN_HPP_NAMESPACE::ShaderStageFlags const &,
80900                VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD const &,
80901                uint32_t const &,
80902                uint32_t const &,
80903                uint32_t const &,
80904                uint32_t const &,
80905                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> const &>
80906 #endif
reflectVULKAN_HPP_NAMESPACE::ShaderStatisticsInfoAMD80907       reflect() const VULKAN_HPP_NOEXCEPT
80908     {
80909       return std::tie( shaderStageMask,
80910                        resourceUsage,
80911                        numPhysicalVgprs,
80912                        numPhysicalSgprs,
80913                        numAvailableVgprs,
80914                        numAvailableSgprs,
80915                        computeWorkGroupSize );
80916     }
80917 
80918 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
80919     auto operator<=>( ShaderStatisticsInfoAMD const & ) const = default;
80920 #else
operator ==VULKAN_HPP_NAMESPACE::ShaderStatisticsInfoAMD80921     bool operator==( ShaderStatisticsInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
80922     {
80923       return this->reflect() == rhs.reflect();
80924     }
80925 
operator !=VULKAN_HPP_NAMESPACE::ShaderStatisticsInfoAMD80926     bool operator!=( ShaderStatisticsInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
80927     {
80928       return this->reflect() != rhs.reflect();
80929     }
80930 #endif
80931 
80932   public:
80933     VULKAN_HPP_NAMESPACE::ShaderStageFlags            shaderStageMask      = {};
80934     VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD      resourceUsage        = {};
80935     uint32_t                                          numPhysicalVgprs     = {};
80936     uint32_t                                          numPhysicalSgprs     = {};
80937     uint32_t                                          numAvailableVgprs    = {};
80938     uint32_t                                          numAvailableSgprs    = {};
80939     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> computeWorkGroupSize = {};
80940   };
80941   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ShaderStatisticsInfoAMD ) ==
80942                               sizeof( VkShaderStatisticsInfoAMD ),
80943                             "struct and wrapper have different size!" );
80944   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ShaderStatisticsInfoAMD>::value,
80945                             "struct wrapper is not a standard layout!" );
80946   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ShaderStatisticsInfoAMD>::value,
80947                             "ShaderStatisticsInfoAMD is not nothrow_move_constructible!" );
80948 
80949   struct SharedPresentSurfaceCapabilitiesKHR
80950   {
80951     using NativeType = VkSharedPresentSurfaceCapabilitiesKHR;
80952 
80953     static const bool                                  allowDuplicate = false;
80954     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
80955       StructureType::eSharedPresentSurfaceCapabilitiesKHR;
80956 
80957 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SharedPresentSurfaceCapabilitiesKHRVULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR80958     VULKAN_HPP_CONSTEXPR SharedPresentSurfaceCapabilitiesKHR(
80959       VULKAN_HPP_NAMESPACE::ImageUsageFlags sharedPresentSupportedUsageFlags_ = {} ) VULKAN_HPP_NOEXCEPT
80960       : sharedPresentSupportedUsageFlags( sharedPresentSupportedUsageFlags_ )
80961     {}
80962 
80963     VULKAN_HPP_CONSTEXPR SharedPresentSurfaceCapabilitiesKHR( SharedPresentSurfaceCapabilitiesKHR const & rhs )
80964       VULKAN_HPP_NOEXCEPT = default;
80965 
SharedPresentSurfaceCapabilitiesKHRVULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR80966     SharedPresentSurfaceCapabilitiesKHR( VkSharedPresentSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
80967       : SharedPresentSurfaceCapabilitiesKHR( *reinterpret_cast<SharedPresentSurfaceCapabilitiesKHR const *>( &rhs ) )
80968     {}
80969 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
80970 
80971     SharedPresentSurfaceCapabilitiesKHR &
80972       operator=( SharedPresentSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80973 
80974     SharedPresentSurfaceCapabilitiesKHR &
operator =VULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR80975       operator=( VkSharedPresentSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
80976     {
80977       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR const *>( &rhs );
80978       return *this;
80979     }
80980 
operator VkSharedPresentSurfaceCapabilitiesKHR const&VULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR80981     explicit operator VkSharedPresentSurfaceCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT
80982     {
80983       return *reinterpret_cast<const VkSharedPresentSurfaceCapabilitiesKHR *>( this );
80984     }
80985 
operator VkSharedPresentSurfaceCapabilitiesKHR&VULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR80986     explicit operator VkSharedPresentSurfaceCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT
80987     {
80988       return *reinterpret_cast<VkSharedPresentSurfaceCapabilitiesKHR *>( this );
80989     }
80990 
80991 #if 14 <= VULKAN_HPP_CPP_VERSION
80992     auto
80993 #else
80994     std::
80995       tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ImageUsageFlags const &>
80996 #endif
reflectVULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR80997       reflect() const VULKAN_HPP_NOEXCEPT
80998     {
80999       return std::tie( sType, pNext, sharedPresentSupportedUsageFlags );
81000     }
81001 
81002 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
81003     auto operator<=>( SharedPresentSurfaceCapabilitiesKHR const & ) const = default;
81004 #else
operator ==VULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR81005     bool operator==( SharedPresentSurfaceCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
81006     {
81007       return this->reflect() == rhs.reflect();
81008     }
81009 
operator !=VULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR81010     bool operator!=( SharedPresentSurfaceCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
81011     {
81012       return this->reflect() != rhs.reflect();
81013     }
81014 #endif
81015 
81016   public:
81017     VULKAN_HPP_NAMESPACE::StructureType   sType = StructureType::eSharedPresentSurfaceCapabilitiesKHR;
81018     void *                                pNext = {};
81019     VULKAN_HPP_NAMESPACE::ImageUsageFlags sharedPresentSupportedUsageFlags = {};
81020   };
81021   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR ) ==
81022                               sizeof( VkSharedPresentSurfaceCapabilitiesKHR ),
81023                             "struct and wrapper have different size!" );
81024   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR>::value,
81025                             "struct wrapper is not a standard layout!" );
81026   VULKAN_HPP_STATIC_ASSERT(
81027     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR>::value,
81028     "SharedPresentSurfaceCapabilitiesKHR is not nothrow_move_constructible!" );
81029 
81030   template <>
81031   struct CppType<StructureType, StructureType::eSharedPresentSurfaceCapabilitiesKHR>
81032   {
81033     using Type = SharedPresentSurfaceCapabilitiesKHR;
81034   };
81035 
81036   struct SparseImageFormatProperties
81037   {
81038     using NativeType = VkSparseImageFormatProperties;
81039 
81040 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
81041     VULKAN_HPP_CONSTEXPR
SparseImageFormatPropertiesVULKAN_HPP_NAMESPACE::SparseImageFormatProperties81042       SparseImageFormatProperties( VULKAN_HPP_NAMESPACE::ImageAspectFlags       aspectMask_       = {},
81043                                    VULKAN_HPP_NAMESPACE::Extent3D               imageGranularity_ = {},
81044                                    VULKAN_HPP_NAMESPACE::SparseImageFormatFlags flags_ = {} ) VULKAN_HPP_NOEXCEPT
81045       : aspectMask( aspectMask_ )
81046       , imageGranularity( imageGranularity_ )
81047       , flags( flags_ )
81048     {}
81049 
81050     VULKAN_HPP_CONSTEXPR
81051       SparseImageFormatProperties( SparseImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81052 
SparseImageFormatPropertiesVULKAN_HPP_NAMESPACE::SparseImageFormatProperties81053     SparseImageFormatProperties( VkSparseImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
81054       : SparseImageFormatProperties( *reinterpret_cast<SparseImageFormatProperties const *>( &rhs ) )
81055     {}
81056 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
81057 
81058     SparseImageFormatProperties & operator=( SparseImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81059 
operator =VULKAN_HPP_NAMESPACE::SparseImageFormatProperties81060     SparseImageFormatProperties & operator=( VkSparseImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
81061     {
81062       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties const *>( &rhs );
81063       return *this;
81064     }
81065 
operator VkSparseImageFormatProperties const&VULKAN_HPP_NAMESPACE::SparseImageFormatProperties81066     explicit operator VkSparseImageFormatProperties const &() const VULKAN_HPP_NOEXCEPT
81067     {
81068       return *reinterpret_cast<const VkSparseImageFormatProperties *>( this );
81069     }
81070 
operator VkSparseImageFormatProperties&VULKAN_HPP_NAMESPACE::SparseImageFormatProperties81071     explicit operator VkSparseImageFormatProperties &() VULKAN_HPP_NOEXCEPT
81072     {
81073       return *reinterpret_cast<VkSparseImageFormatProperties *>( this );
81074     }
81075 
81076 #if 14 <= VULKAN_HPP_CPP_VERSION
81077     auto
81078 #else
81079     std::tuple<VULKAN_HPP_NAMESPACE::ImageAspectFlags const &,
81080                VULKAN_HPP_NAMESPACE::Extent3D const &,
81081                VULKAN_HPP_NAMESPACE::SparseImageFormatFlags const &>
81082 #endif
reflectVULKAN_HPP_NAMESPACE::SparseImageFormatProperties81083       reflect() const VULKAN_HPP_NOEXCEPT
81084     {
81085       return std::tie( aspectMask, imageGranularity, flags );
81086     }
81087 
81088 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
81089     auto operator<=>( SparseImageFormatProperties const & ) const = default;
81090 #else
operator ==VULKAN_HPP_NAMESPACE::SparseImageFormatProperties81091     bool operator==( SparseImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
81092     {
81093       return this->reflect() == rhs.reflect();
81094     }
81095 
operator !=VULKAN_HPP_NAMESPACE::SparseImageFormatProperties81096     bool operator!=( SparseImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
81097     {
81098       return this->reflect() != rhs.reflect();
81099     }
81100 #endif
81101 
81102   public:
81103     VULKAN_HPP_NAMESPACE::ImageAspectFlags       aspectMask       = {};
81104     VULKAN_HPP_NAMESPACE::Extent3D               imageGranularity = {};
81105     VULKAN_HPP_NAMESPACE::SparseImageFormatFlags flags            = {};
81106   };
81107   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SparseImageFormatProperties ) ==
81108                               sizeof( VkSparseImageFormatProperties ),
81109                             "struct and wrapper have different size!" );
81110   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties>::value,
81111                             "struct wrapper is not a standard layout!" );
81112   VULKAN_HPP_STATIC_ASSERT(
81113     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties>::value,
81114     "SparseImageFormatProperties is not nothrow_move_constructible!" );
81115 
81116   struct SparseImageFormatProperties2
81117   {
81118     using NativeType = VkSparseImageFormatProperties2;
81119 
81120     static const bool                                  allowDuplicate = false;
81121     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSparseImageFormatProperties2;
81122 
81123 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SparseImageFormatProperties2VULKAN_HPP_NAMESPACE::SparseImageFormatProperties281124     VULKAN_HPP_CONSTEXPR SparseImageFormatProperties2(
81125       VULKAN_HPP_NAMESPACE::SparseImageFormatProperties properties_ = {} ) VULKAN_HPP_NOEXCEPT
81126       : properties( properties_ )
81127     {}
81128 
81129     VULKAN_HPP_CONSTEXPR
81130       SparseImageFormatProperties2( SparseImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81131 
SparseImageFormatProperties2VULKAN_HPP_NAMESPACE::SparseImageFormatProperties281132     SparseImageFormatProperties2( VkSparseImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
81133       : SparseImageFormatProperties2( *reinterpret_cast<SparseImageFormatProperties2 const *>( &rhs ) )
81134     {}
81135 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
81136 
81137     SparseImageFormatProperties2 & operator=( SparseImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81138 
operator =VULKAN_HPP_NAMESPACE::SparseImageFormatProperties281139     SparseImageFormatProperties2 & operator=( VkSparseImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
81140     {
81141       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2 const *>( &rhs );
81142       return *this;
81143     }
81144 
operator VkSparseImageFormatProperties2 const&VULKAN_HPP_NAMESPACE::SparseImageFormatProperties281145     explicit operator VkSparseImageFormatProperties2 const &() const VULKAN_HPP_NOEXCEPT
81146     {
81147       return *reinterpret_cast<const VkSparseImageFormatProperties2 *>( this );
81148     }
81149 
operator VkSparseImageFormatProperties2&VULKAN_HPP_NAMESPACE::SparseImageFormatProperties281150     explicit operator VkSparseImageFormatProperties2 &() VULKAN_HPP_NOEXCEPT
81151     {
81152       return *reinterpret_cast<VkSparseImageFormatProperties2 *>( this );
81153     }
81154 
81155 #if 14 <= VULKAN_HPP_CPP_VERSION
81156     auto
81157 #else
81158     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
81159                void * const &,
81160                VULKAN_HPP_NAMESPACE::SparseImageFormatProperties const &>
81161 #endif
reflectVULKAN_HPP_NAMESPACE::SparseImageFormatProperties281162       reflect() const VULKAN_HPP_NOEXCEPT
81163     {
81164       return std::tie( sType, pNext, properties );
81165     }
81166 
81167 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
81168     auto operator<=>( SparseImageFormatProperties2 const & ) const = default;
81169 #else
operator ==VULKAN_HPP_NAMESPACE::SparseImageFormatProperties281170     bool operator==( SparseImageFormatProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
81171     {
81172       return this->reflect() == rhs.reflect();
81173     }
81174 
operator !=VULKAN_HPP_NAMESPACE::SparseImageFormatProperties281175     bool operator!=( SparseImageFormatProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
81176     {
81177       return this->reflect() != rhs.reflect();
81178     }
81179 #endif
81180 
81181   public:
81182     VULKAN_HPP_NAMESPACE::StructureType               sType      = StructureType::eSparseImageFormatProperties2;
81183     void *                                            pNext      = {};
81184     VULKAN_HPP_NAMESPACE::SparseImageFormatProperties properties = {};
81185   };
81186   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2 ) ==
81187                               sizeof( VkSparseImageFormatProperties2 ),
81188                             "struct and wrapper have different size!" );
81189   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2>::value,
81190                             "struct wrapper is not a standard layout!" );
81191   VULKAN_HPP_STATIC_ASSERT(
81192     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2>::value,
81193     "SparseImageFormatProperties2 is not nothrow_move_constructible!" );
81194 
81195   template <>
81196   struct CppType<StructureType, StructureType::eSparseImageFormatProperties2>
81197   {
81198     using Type = SparseImageFormatProperties2;
81199   };
81200   using SparseImageFormatProperties2KHR = SparseImageFormatProperties2;
81201 
81202   struct SparseImageMemoryRequirements
81203   {
81204     using NativeType = VkSparseImageMemoryRequirements;
81205 
81206 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
81207     VULKAN_HPP_CONSTEXPR
SparseImageMemoryRequirementsVULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements81208       SparseImageMemoryRequirements( VULKAN_HPP_NAMESPACE::SparseImageFormatProperties formatProperties_     = {},
81209                                      uint32_t                                          imageMipTailFirstLod_ = {},
81210                                      VULKAN_HPP_NAMESPACE::DeviceSize                  imageMipTailSize_     = {},
81211                                      VULKAN_HPP_NAMESPACE::DeviceSize                  imageMipTailOffset_   = {},
81212                                      VULKAN_HPP_NAMESPACE::DeviceSize imageMipTailStride_ = {} ) VULKAN_HPP_NOEXCEPT
81213       : formatProperties( formatProperties_ )
81214       , imageMipTailFirstLod( imageMipTailFirstLod_ )
81215       , imageMipTailSize( imageMipTailSize_ )
81216       , imageMipTailOffset( imageMipTailOffset_ )
81217       , imageMipTailStride( imageMipTailStride_ )
81218     {}
81219 
81220     VULKAN_HPP_CONSTEXPR
81221       SparseImageMemoryRequirements( SparseImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81222 
SparseImageMemoryRequirementsVULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements81223     SparseImageMemoryRequirements( VkSparseImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
81224       : SparseImageMemoryRequirements( *reinterpret_cast<SparseImageMemoryRequirements const *>( &rhs ) )
81225     {}
81226 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
81227 
81228     SparseImageMemoryRequirements &
81229       operator=( SparseImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81230 
operator =VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements81231     SparseImageMemoryRequirements & operator=( VkSparseImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
81232     {
81233       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements const *>( &rhs );
81234       return *this;
81235     }
81236 
operator VkSparseImageMemoryRequirements const&VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements81237     explicit operator VkSparseImageMemoryRequirements const &() const VULKAN_HPP_NOEXCEPT
81238     {
81239       return *reinterpret_cast<const VkSparseImageMemoryRequirements *>( this );
81240     }
81241 
operator VkSparseImageMemoryRequirements&VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements81242     explicit operator VkSparseImageMemoryRequirements &() VULKAN_HPP_NOEXCEPT
81243     {
81244       return *reinterpret_cast<VkSparseImageMemoryRequirements *>( this );
81245     }
81246 
81247 #if 14 <= VULKAN_HPP_CPP_VERSION
81248     auto
81249 #else
81250     std::tuple<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties const &,
81251                uint32_t const &,
81252                VULKAN_HPP_NAMESPACE::DeviceSize const &,
81253                VULKAN_HPP_NAMESPACE::DeviceSize const &,
81254                VULKAN_HPP_NAMESPACE::DeviceSize const &>
81255 #endif
reflectVULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements81256       reflect() const VULKAN_HPP_NOEXCEPT
81257     {
81258       return std::tie(
81259         formatProperties, imageMipTailFirstLod, imageMipTailSize, imageMipTailOffset, imageMipTailStride );
81260     }
81261 
81262 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
81263     auto operator<=>( SparseImageMemoryRequirements const & ) const = default;
81264 #else
operator ==VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements81265     bool operator==( SparseImageMemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT
81266     {
81267       return this->reflect() == rhs.reflect();
81268     }
81269 
operator !=VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements81270     bool operator!=( SparseImageMemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT
81271     {
81272       return this->reflect() != rhs.reflect();
81273     }
81274 #endif
81275 
81276   public:
81277     VULKAN_HPP_NAMESPACE::SparseImageFormatProperties formatProperties     = {};
81278     uint32_t                                          imageMipTailFirstLod = {};
81279     VULKAN_HPP_NAMESPACE::DeviceSize                  imageMipTailSize     = {};
81280     VULKAN_HPP_NAMESPACE::DeviceSize                  imageMipTailOffset   = {};
81281     VULKAN_HPP_NAMESPACE::DeviceSize                  imageMipTailStride   = {};
81282   };
81283   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements ) ==
81284                               sizeof( VkSparseImageMemoryRequirements ),
81285                             "struct and wrapper have different size!" );
81286   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements>::value,
81287                             "struct wrapper is not a standard layout!" );
81288   VULKAN_HPP_STATIC_ASSERT(
81289     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements>::value,
81290     "SparseImageMemoryRequirements is not nothrow_move_constructible!" );
81291 
81292   struct SparseImageMemoryRequirements2
81293   {
81294     using NativeType = VkSparseImageMemoryRequirements2;
81295 
81296     static const bool                                  allowDuplicate = false;
81297     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSparseImageMemoryRequirements2;
81298 
81299 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SparseImageMemoryRequirements2VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements281300     VULKAN_HPP_CONSTEXPR SparseImageMemoryRequirements2(
81301       VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements memoryRequirements_ = {} ) VULKAN_HPP_NOEXCEPT
81302       : memoryRequirements( memoryRequirements_ )
81303     {}
81304 
81305     VULKAN_HPP_CONSTEXPR
81306       SparseImageMemoryRequirements2( SparseImageMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81307 
SparseImageMemoryRequirements2VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements281308     SparseImageMemoryRequirements2( VkSparseImageMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT
81309       : SparseImageMemoryRequirements2( *reinterpret_cast<SparseImageMemoryRequirements2 const *>( &rhs ) )
81310     {}
81311 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
81312 
81313     SparseImageMemoryRequirements2 &
81314       operator=( SparseImageMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81315 
operator =VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements281316     SparseImageMemoryRequirements2 & operator=( VkSparseImageMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT
81317     {
81318       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2 const *>( &rhs );
81319       return *this;
81320     }
81321 
operator VkSparseImageMemoryRequirements2 const&VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements281322     explicit operator VkSparseImageMemoryRequirements2 const &() const VULKAN_HPP_NOEXCEPT
81323     {
81324       return *reinterpret_cast<const VkSparseImageMemoryRequirements2 *>( this );
81325     }
81326 
operator VkSparseImageMemoryRequirements2&VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements281327     explicit operator VkSparseImageMemoryRequirements2 &() VULKAN_HPP_NOEXCEPT
81328     {
81329       return *reinterpret_cast<VkSparseImageMemoryRequirements2 *>( this );
81330     }
81331 
81332 #if 14 <= VULKAN_HPP_CPP_VERSION
81333     auto
81334 #else
81335     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
81336                void * const &,
81337                VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements const &>
81338 #endif
reflectVULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements281339       reflect() const VULKAN_HPP_NOEXCEPT
81340     {
81341       return std::tie( sType, pNext, memoryRequirements );
81342     }
81343 
81344 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
81345     auto operator<=>( SparseImageMemoryRequirements2 const & ) const = default;
81346 #else
operator ==VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements281347     bool operator==( SparseImageMemoryRequirements2 const & rhs ) const VULKAN_HPP_NOEXCEPT
81348     {
81349       return this->reflect() == rhs.reflect();
81350     }
81351 
operator !=VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements281352     bool operator!=( SparseImageMemoryRequirements2 const & rhs ) const VULKAN_HPP_NOEXCEPT
81353     {
81354       return this->reflect() != rhs.reflect();
81355     }
81356 #endif
81357 
81358   public:
81359     VULKAN_HPP_NAMESPACE::StructureType                 sType = StructureType::eSparseImageMemoryRequirements2;
81360     void *                                              pNext = {};
81361     VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements memoryRequirements = {};
81362   };
81363   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2 ) ==
81364                               sizeof( VkSparseImageMemoryRequirements2 ),
81365                             "struct and wrapper have different size!" );
81366   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2>::value,
81367                             "struct wrapper is not a standard layout!" );
81368   VULKAN_HPP_STATIC_ASSERT(
81369     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2>::value,
81370     "SparseImageMemoryRequirements2 is not nothrow_move_constructible!" );
81371 
81372   template <>
81373   struct CppType<StructureType, StructureType::eSparseImageMemoryRequirements2>
81374   {
81375     using Type = SparseImageMemoryRequirements2;
81376   };
81377   using SparseImageMemoryRequirements2KHR = SparseImageMemoryRequirements2;
81378 
81379 #if defined( VK_USE_PLATFORM_GGP )
81380   struct StreamDescriptorSurfaceCreateInfoGGP
81381   {
81382     using NativeType = VkStreamDescriptorSurfaceCreateInfoGGP;
81383 
81384     static const bool                                  allowDuplicate = false;
81385     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
81386       StructureType::eStreamDescriptorSurfaceCreateInfoGGP;
81387 
81388 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
81389     VULKAN_HPP_CONSTEXPR
StreamDescriptorSurfaceCreateInfoGGPVULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP81390       StreamDescriptorSurfaceCreateInfoGGP( VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateFlagsGGP flags_ = {},
81391                                             GgpStreamDescriptor streamDescriptor_ = {} ) VULKAN_HPP_NOEXCEPT
81392       : flags( flags_ )
81393       , streamDescriptor( streamDescriptor_ )
81394     {}
81395 
81396     VULKAN_HPP_CONSTEXPR StreamDescriptorSurfaceCreateInfoGGP( StreamDescriptorSurfaceCreateInfoGGP const & rhs )
81397       VULKAN_HPP_NOEXCEPT = default;
81398 
StreamDescriptorSurfaceCreateInfoGGPVULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP81399     StreamDescriptorSurfaceCreateInfoGGP( VkStreamDescriptorSurfaceCreateInfoGGP const & rhs ) VULKAN_HPP_NOEXCEPT
81400       : StreamDescriptorSurfaceCreateInfoGGP( *reinterpret_cast<StreamDescriptorSurfaceCreateInfoGGP const *>( &rhs ) )
81401     {}
81402 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
81403 
81404     StreamDescriptorSurfaceCreateInfoGGP &
81405       operator=( StreamDescriptorSurfaceCreateInfoGGP const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81406 
81407     StreamDescriptorSurfaceCreateInfoGGP &
operator =VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP81408       operator=( VkStreamDescriptorSurfaceCreateInfoGGP const & rhs ) VULKAN_HPP_NOEXCEPT
81409     {
81410       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP const *>( &rhs );
81411       return *this;
81412     }
81413 
81414 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP81415     VULKAN_HPP_CONSTEXPR_14 StreamDescriptorSurfaceCreateInfoGGP & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
81416     {
81417       pNext = pNext_;
81418       return *this;
81419     }
81420 
81421     VULKAN_HPP_CONSTEXPR_14 StreamDescriptorSurfaceCreateInfoGGP &
setFlagsVULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP81422       setFlags( VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateFlagsGGP flags_ ) VULKAN_HPP_NOEXCEPT
81423     {
81424       flags = flags_;
81425       return *this;
81426     }
81427 
81428     VULKAN_HPP_CONSTEXPR_14 StreamDescriptorSurfaceCreateInfoGGP &
setStreamDescriptorVULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP81429                             setStreamDescriptor( GgpStreamDescriptor streamDescriptor_ ) VULKAN_HPP_NOEXCEPT
81430     {
81431       streamDescriptor = streamDescriptor_;
81432       return *this;
81433     }
81434 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
81435 
operator VkStreamDescriptorSurfaceCreateInfoGGP const&VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP81436     explicit operator VkStreamDescriptorSurfaceCreateInfoGGP const &() const VULKAN_HPP_NOEXCEPT
81437     {
81438       return *reinterpret_cast<const VkStreamDescriptorSurfaceCreateInfoGGP *>( this );
81439     }
81440 
operator VkStreamDescriptorSurfaceCreateInfoGGP&VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP81441     explicit operator VkStreamDescriptorSurfaceCreateInfoGGP &() VULKAN_HPP_NOEXCEPT
81442     {
81443       return *reinterpret_cast<VkStreamDescriptorSurfaceCreateInfoGGP *>( this );
81444     }
81445 
81446 #  if 14 <= VULKAN_HPP_CPP_VERSION
81447     auto
81448 #  else
81449     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
81450                const void * const &,
81451                VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateFlagsGGP const &,
81452                GgpStreamDescriptor const &>
81453 #  endif
reflectVULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP81454       reflect() const VULKAN_HPP_NOEXCEPT
81455     {
81456       return std::tie( sType, pNext, flags, streamDescriptor );
81457     }
81458 
81459 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
81460     auto operator<=>( StreamDescriptorSurfaceCreateInfoGGP const & ) const = default;
81461 #  else
operator ==VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP81462     bool operator==( StreamDescriptorSurfaceCreateInfoGGP const & rhs ) const VULKAN_HPP_NOEXCEPT
81463     {
81464       return this->reflect() == rhs.reflect();
81465     }
81466 
operator !=VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP81467     bool operator!=( StreamDescriptorSurfaceCreateInfoGGP const & rhs ) const VULKAN_HPP_NOEXCEPT
81468     {
81469       return this->reflect() != rhs.reflect();
81470     }
81471 #  endif
81472 
81473   public:
81474     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eStreamDescriptorSurfaceCreateInfoGGP;
81475     const void *                        pNext = {};
81476     VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateFlagsGGP flags            = {};
81477     GgpStreamDescriptor                                         streamDescriptor = {};
81478   };
81479   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP ) ==
81480                               sizeof( VkStreamDescriptorSurfaceCreateInfoGGP ),
81481                             "struct and wrapper have different size!" );
81482   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP>::value,
81483                             "struct wrapper is not a standard layout!" );
81484   VULKAN_HPP_STATIC_ASSERT(
81485     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP>::value,
81486     "StreamDescriptorSurfaceCreateInfoGGP is not nothrow_move_constructible!" );
81487 
81488   template <>
81489   struct CppType<StructureType, StructureType::eStreamDescriptorSurfaceCreateInfoGGP>
81490   {
81491     using Type = StreamDescriptorSurfaceCreateInfoGGP;
81492   };
81493 #endif /*VK_USE_PLATFORM_GGP*/
81494 
81495   struct StridedDeviceAddressRegionKHR
81496   {
81497     using NativeType = VkStridedDeviceAddressRegionKHR;
81498 
81499 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
81500     VULKAN_HPP_CONSTEXPR
StridedDeviceAddressRegionKHRVULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR81501       StridedDeviceAddressRegionKHR( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ = {},
81502                                      VULKAN_HPP_NAMESPACE::DeviceSize    stride_        = {},
81503                                      VULKAN_HPP_NAMESPACE::DeviceSize    size_          = {} ) VULKAN_HPP_NOEXCEPT
81504       : deviceAddress( deviceAddress_ )
81505       , stride( stride_ )
81506       , size( size_ )
81507     {}
81508 
81509     VULKAN_HPP_CONSTEXPR
81510       StridedDeviceAddressRegionKHR( StridedDeviceAddressRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81511 
StridedDeviceAddressRegionKHRVULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR81512     StridedDeviceAddressRegionKHR( VkStridedDeviceAddressRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT
81513       : StridedDeviceAddressRegionKHR( *reinterpret_cast<StridedDeviceAddressRegionKHR const *>( &rhs ) )
81514     {}
81515 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
81516 
81517     StridedDeviceAddressRegionKHR &
81518       operator=( StridedDeviceAddressRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81519 
operator =VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR81520     StridedDeviceAddressRegionKHR & operator=( VkStridedDeviceAddressRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT
81521     {
81522       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR const *>( &rhs );
81523       return *this;
81524     }
81525 
81526 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
81527     VULKAN_HPP_CONSTEXPR_14 StridedDeviceAddressRegionKHR &
setDeviceAddressVULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR81528                             setDeviceAddress( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ ) VULKAN_HPP_NOEXCEPT
81529     {
81530       deviceAddress = deviceAddress_;
81531       return *this;
81532     }
81533 
81534     VULKAN_HPP_CONSTEXPR_14 StridedDeviceAddressRegionKHR &
setStrideVULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR81535                             setStride( VULKAN_HPP_NAMESPACE::DeviceSize stride_ ) VULKAN_HPP_NOEXCEPT
81536     {
81537       stride = stride_;
81538       return *this;
81539     }
81540 
81541     VULKAN_HPP_CONSTEXPR_14 StridedDeviceAddressRegionKHR &
setSizeVULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR81542                             setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
81543     {
81544       size = size_;
81545       return *this;
81546     }
81547 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
81548 
operator VkStridedDeviceAddressRegionKHR const&VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR81549     explicit operator VkStridedDeviceAddressRegionKHR const &() const VULKAN_HPP_NOEXCEPT
81550     {
81551       return *reinterpret_cast<const VkStridedDeviceAddressRegionKHR *>( this );
81552     }
81553 
operator VkStridedDeviceAddressRegionKHR&VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR81554     explicit operator VkStridedDeviceAddressRegionKHR &() VULKAN_HPP_NOEXCEPT
81555     {
81556       return *reinterpret_cast<VkStridedDeviceAddressRegionKHR *>( this );
81557     }
81558 
81559 #if 14 <= VULKAN_HPP_CPP_VERSION
81560     auto
81561 #else
81562     std::tuple<VULKAN_HPP_NAMESPACE::DeviceAddress const &,
81563                VULKAN_HPP_NAMESPACE::DeviceSize const &,
81564                VULKAN_HPP_NAMESPACE::DeviceSize const &>
81565 #endif
reflectVULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR81566       reflect() const VULKAN_HPP_NOEXCEPT
81567     {
81568       return std::tie( deviceAddress, stride, size );
81569     }
81570 
81571 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
81572     auto operator<=>( StridedDeviceAddressRegionKHR const & ) const = default;
81573 #else
operator ==VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR81574     bool operator==( StridedDeviceAddressRegionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
81575     {
81576       return this->reflect() == rhs.reflect();
81577     }
81578 
operator !=VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR81579     bool operator!=( StridedDeviceAddressRegionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
81580     {
81581       return this->reflect() != rhs.reflect();
81582     }
81583 #endif
81584 
81585   public:
81586     VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress = {};
81587     VULKAN_HPP_NAMESPACE::DeviceSize    stride        = {};
81588     VULKAN_HPP_NAMESPACE::DeviceSize    size          = {};
81589   };
81590   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR ) ==
81591                               sizeof( VkStridedDeviceAddressRegionKHR ),
81592                             "struct and wrapper have different size!" );
81593   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR>::value,
81594                             "struct wrapper is not a standard layout!" );
81595   VULKAN_HPP_STATIC_ASSERT(
81596     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR>::value,
81597     "StridedDeviceAddressRegionKHR is not nothrow_move_constructible!" );
81598 
81599   struct SubmitInfo
81600   {
81601     using NativeType = VkSubmitInfo;
81602 
81603     static const bool                                  allowDuplicate = false;
81604     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSubmitInfo;
81605 
81606 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
81607     VULKAN_HPP_CONSTEXPR
SubmitInfoVULKAN_HPP_NAMESPACE::SubmitInfo81608       SubmitInfo( uint32_t                                         waitSemaphoreCount_   = {},
81609                   const VULKAN_HPP_NAMESPACE::Semaphore *          pWaitSemaphores_      = {},
81610                   const VULKAN_HPP_NAMESPACE::PipelineStageFlags * pWaitDstStageMask_    = {},
81611                   uint32_t                                         commandBufferCount_   = {},
81612                   const VULKAN_HPP_NAMESPACE::CommandBuffer *      pCommandBuffers_      = {},
81613                   uint32_t                                         signalSemaphoreCount_ = {},
81614                   const VULKAN_HPP_NAMESPACE::Semaphore *          pSignalSemaphores_    = {} ) VULKAN_HPP_NOEXCEPT
81615       : waitSemaphoreCount( waitSemaphoreCount_ )
81616       , pWaitSemaphores( pWaitSemaphores_ )
81617       , pWaitDstStageMask( pWaitDstStageMask_ )
81618       , commandBufferCount( commandBufferCount_ )
81619       , pCommandBuffers( pCommandBuffers_ )
81620       , signalSemaphoreCount( signalSemaphoreCount_ )
81621       , pSignalSemaphores( pSignalSemaphores_ )
81622     {}
81623 
81624     VULKAN_HPP_CONSTEXPR SubmitInfo( SubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81625 
SubmitInfoVULKAN_HPP_NAMESPACE::SubmitInfo81626     SubmitInfo( VkSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
81627       : SubmitInfo( *reinterpret_cast<SubmitInfo const *>( &rhs ) )
81628     {}
81629 
81630 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SubmitInfoVULKAN_HPP_NAMESPACE::SubmitInfo81631     SubmitInfo(
81632       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const & waitSemaphores_,
81633       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineStageFlags> const &
81634         waitDstStageMask_ = {},
81635       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::CommandBuffer> const &
81636         commandBuffers_ = {},
81637       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const &
81638         signalSemaphores_ = {} )
81639       : waitSemaphoreCount( static_cast<uint32_t>( waitSemaphores_.size() ) )
81640       , pWaitSemaphores( waitSemaphores_.data() )
81641       , pWaitDstStageMask( waitDstStageMask_.data() )
81642       , commandBufferCount( static_cast<uint32_t>( commandBuffers_.size() ) )
81643       , pCommandBuffers( commandBuffers_.data() )
81644       , signalSemaphoreCount( static_cast<uint32_t>( signalSemaphores_.size() ) )
81645       , pSignalSemaphores( signalSemaphores_.data() )
81646     {
81647 #    ifdef VULKAN_HPP_NO_EXCEPTIONS
81648       VULKAN_HPP_ASSERT( waitSemaphores_.size() == waitDstStageMask_.size() );
81649 #    else
81650       if ( waitSemaphores_.size() != waitDstStageMask_.size() )
81651       {
81652         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
81653                           "::SubmitInfo::SubmitInfo: waitSemaphores_.size() != waitDstStageMask_.size()" );
81654       }
81655 #    endif /*VULKAN_HPP_NO_EXCEPTIONS*/
81656     }
81657 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
81658 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
81659 
81660     SubmitInfo & operator=( SubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81661 
operator =VULKAN_HPP_NAMESPACE::SubmitInfo81662     SubmitInfo & operator=( VkSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
81663     {
81664       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubmitInfo const *>( &rhs );
81665       return *this;
81666     }
81667 
81668 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SubmitInfo81669     VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
81670     {
81671       pNext = pNext_;
81672       return *this;
81673     }
81674 
setWaitSemaphoreCountVULKAN_HPP_NAMESPACE::SubmitInfo81675     VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT
81676     {
81677       waitSemaphoreCount = waitSemaphoreCount_;
81678       return *this;
81679     }
81680 
81681     VULKAN_HPP_CONSTEXPR_14 SubmitInfo &
setPWaitSemaphoresVULKAN_HPP_NAMESPACE::SubmitInfo81682       setPWaitSemaphores( const VULKAN_HPP_NAMESPACE::Semaphore * pWaitSemaphores_ ) VULKAN_HPP_NOEXCEPT
81683     {
81684       pWaitSemaphores = pWaitSemaphores_;
81685       return *this;
81686     }
81687 
81688 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setWaitSemaphoresVULKAN_HPP_NAMESPACE::SubmitInfo81689     SubmitInfo & setWaitSemaphores(
81690       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const & waitSemaphores_ )
81691       VULKAN_HPP_NOEXCEPT
81692     {
81693       waitSemaphoreCount = static_cast<uint32_t>( waitSemaphores_.size() );
81694       pWaitSemaphores    = waitSemaphores_.data();
81695       return *this;
81696     }
81697 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
81698 
81699     VULKAN_HPP_CONSTEXPR_14 SubmitInfo &
setPWaitDstStageMaskVULKAN_HPP_NAMESPACE::SubmitInfo81700       setPWaitDstStageMask( const VULKAN_HPP_NAMESPACE::PipelineStageFlags * pWaitDstStageMask_ ) VULKAN_HPP_NOEXCEPT
81701     {
81702       pWaitDstStageMask = pWaitDstStageMask_;
81703       return *this;
81704     }
81705 
81706 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setWaitDstStageMaskVULKAN_HPP_NAMESPACE::SubmitInfo81707     SubmitInfo & setWaitDstStageMask(
81708       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineStageFlags> const &
81709         waitDstStageMask_ ) VULKAN_HPP_NOEXCEPT
81710     {
81711       waitSemaphoreCount = static_cast<uint32_t>( waitDstStageMask_.size() );
81712       pWaitDstStageMask  = waitDstStageMask_.data();
81713       return *this;
81714     }
81715 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
81716 
setCommandBufferCountVULKAN_HPP_NAMESPACE::SubmitInfo81717     VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setCommandBufferCount( uint32_t commandBufferCount_ ) VULKAN_HPP_NOEXCEPT
81718     {
81719       commandBufferCount = commandBufferCount_;
81720       return *this;
81721     }
81722 
81723     VULKAN_HPP_CONSTEXPR_14 SubmitInfo &
setPCommandBuffersVULKAN_HPP_NAMESPACE::SubmitInfo81724       setPCommandBuffers( const VULKAN_HPP_NAMESPACE::CommandBuffer * pCommandBuffers_ ) VULKAN_HPP_NOEXCEPT
81725     {
81726       pCommandBuffers = pCommandBuffers_;
81727       return *this;
81728     }
81729 
81730 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setCommandBuffersVULKAN_HPP_NAMESPACE::SubmitInfo81731     SubmitInfo & setCommandBuffers(
81732       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::CommandBuffer> const & commandBuffers_ )
81733       VULKAN_HPP_NOEXCEPT
81734     {
81735       commandBufferCount = static_cast<uint32_t>( commandBuffers_.size() );
81736       pCommandBuffers    = commandBuffers_.data();
81737       return *this;
81738     }
81739 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
81740 
setSignalSemaphoreCountVULKAN_HPP_NAMESPACE::SubmitInfo81741     VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT
81742     {
81743       signalSemaphoreCount = signalSemaphoreCount_;
81744       return *this;
81745     }
81746 
81747     VULKAN_HPP_CONSTEXPR_14 SubmitInfo &
setPSignalSemaphoresVULKAN_HPP_NAMESPACE::SubmitInfo81748       setPSignalSemaphores( const VULKAN_HPP_NAMESPACE::Semaphore * pSignalSemaphores_ ) VULKAN_HPP_NOEXCEPT
81749     {
81750       pSignalSemaphores = pSignalSemaphores_;
81751       return *this;
81752     }
81753 
81754 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSignalSemaphoresVULKAN_HPP_NAMESPACE::SubmitInfo81755     SubmitInfo & setSignalSemaphores(
81756       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const & signalSemaphores_ )
81757       VULKAN_HPP_NOEXCEPT
81758     {
81759       signalSemaphoreCount = static_cast<uint32_t>( signalSemaphores_.size() );
81760       pSignalSemaphores    = signalSemaphores_.data();
81761       return *this;
81762     }
81763 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
81764 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
81765 
operator VkSubmitInfo const&VULKAN_HPP_NAMESPACE::SubmitInfo81766     explicit operator VkSubmitInfo const &() const VULKAN_HPP_NOEXCEPT
81767     {
81768       return *reinterpret_cast<const VkSubmitInfo *>( this );
81769     }
81770 
operator VkSubmitInfo&VULKAN_HPP_NAMESPACE::SubmitInfo81771     explicit operator VkSubmitInfo &() VULKAN_HPP_NOEXCEPT
81772     {
81773       return *reinterpret_cast<VkSubmitInfo *>( this );
81774     }
81775 
81776 #if 14 <= VULKAN_HPP_CPP_VERSION
81777     auto
81778 #else
81779     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
81780                const void * const &,
81781                uint32_t const &,
81782                const VULKAN_HPP_NAMESPACE::Semaphore * const &,
81783                const VULKAN_HPP_NAMESPACE::PipelineStageFlags * const &,
81784                uint32_t const &,
81785                const VULKAN_HPP_NAMESPACE::CommandBuffer * const &,
81786                uint32_t const &,
81787                const VULKAN_HPP_NAMESPACE::Semaphore * const &>
81788 #endif
reflectVULKAN_HPP_NAMESPACE::SubmitInfo81789       reflect() const VULKAN_HPP_NOEXCEPT
81790     {
81791       return std::tie( sType,
81792                        pNext,
81793                        waitSemaphoreCount,
81794                        pWaitSemaphores,
81795                        pWaitDstStageMask,
81796                        commandBufferCount,
81797                        pCommandBuffers,
81798                        signalSemaphoreCount,
81799                        pSignalSemaphores );
81800     }
81801 
81802 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
81803     auto operator<=>( SubmitInfo const & ) const = default;
81804 #else
operator ==VULKAN_HPP_NAMESPACE::SubmitInfo81805     bool operator==( SubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
81806     {
81807       return this->reflect() == rhs.reflect();
81808     }
81809 
operator !=VULKAN_HPP_NAMESPACE::SubmitInfo81810     bool operator!=( SubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
81811     {
81812       return this->reflect() != rhs.reflect();
81813     }
81814 #endif
81815 
81816   public:
81817     VULKAN_HPP_NAMESPACE::StructureType              sType                = StructureType::eSubmitInfo;
81818     const void *                                     pNext                = {};
81819     uint32_t                                         waitSemaphoreCount   = {};
81820     const VULKAN_HPP_NAMESPACE::Semaphore *          pWaitSemaphores      = {};
81821     const VULKAN_HPP_NAMESPACE::PipelineStageFlags * pWaitDstStageMask    = {};
81822     uint32_t                                         commandBufferCount   = {};
81823     const VULKAN_HPP_NAMESPACE::CommandBuffer *      pCommandBuffers      = {};
81824     uint32_t                                         signalSemaphoreCount = {};
81825     const VULKAN_HPP_NAMESPACE::Semaphore *          pSignalSemaphores    = {};
81826   };
81827   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubmitInfo ) == sizeof( VkSubmitInfo ),
81828                             "struct and wrapper have different size!" );
81829   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SubmitInfo>::value,
81830                             "struct wrapper is not a standard layout!" );
81831   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SubmitInfo>::value,
81832                             "SubmitInfo is not nothrow_move_constructible!" );
81833 
81834   template <>
81835   struct CppType<StructureType, StructureType::eSubmitInfo>
81836   {
81837     using Type = SubmitInfo;
81838   };
81839 
81840   struct SubmitInfo2KHR
81841   {
81842     using NativeType = VkSubmitInfo2KHR;
81843 
81844     static const bool                                  allowDuplicate = false;
81845     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSubmitInfo2KHR;
81846 
81847 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubmitInfo2KHRVULKAN_HPP_NAMESPACE::SubmitInfo2KHR81848     VULKAN_HPP_CONSTEXPR SubmitInfo2KHR(
81849       VULKAN_HPP_NAMESPACE::SubmitFlagsKHR                     flags_                    = {},
81850       uint32_t                                                 waitSemaphoreInfoCount_   = {},
81851       const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfoKHR *     pWaitSemaphoreInfos_      = {},
81852       uint32_t                                                 commandBufferInfoCount_   = {},
81853       const VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfoKHR * pCommandBufferInfos_      = {},
81854       uint32_t                                                 signalSemaphoreInfoCount_ = {},
81855       const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfoKHR *     pSignalSemaphoreInfos_    = {} ) VULKAN_HPP_NOEXCEPT
81856       : flags( flags_ )
81857       , waitSemaphoreInfoCount( waitSemaphoreInfoCount_ )
81858       , pWaitSemaphoreInfos( pWaitSemaphoreInfos_ )
81859       , commandBufferInfoCount( commandBufferInfoCount_ )
81860       , pCommandBufferInfos( pCommandBufferInfos_ )
81861       , signalSemaphoreInfoCount( signalSemaphoreInfoCount_ )
81862       , pSignalSemaphoreInfos( pSignalSemaphoreInfos_ )
81863     {}
81864 
81865     VULKAN_HPP_CONSTEXPR SubmitInfo2KHR( SubmitInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81866 
SubmitInfo2KHRVULKAN_HPP_NAMESPACE::SubmitInfo2KHR81867     SubmitInfo2KHR( VkSubmitInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
81868       : SubmitInfo2KHR( *reinterpret_cast<SubmitInfo2KHR const *>( &rhs ) )
81869     {}
81870 
81871 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SubmitInfo2KHRVULKAN_HPP_NAMESPACE::SubmitInfo2KHR81872     SubmitInfo2KHR(
81873       VULKAN_HPP_NAMESPACE::SubmitFlagsKHR flags_,
81874       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfoKHR> const &
81875         waitSemaphoreInfos_,
81876       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfoKHR> const &
81877         commandBufferInfos_ = {},
81878       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfoKHR> const &
81879         signalSemaphoreInfos_ = {} )
81880       : flags( flags_ )
81881       , waitSemaphoreInfoCount( static_cast<uint32_t>( waitSemaphoreInfos_.size() ) )
81882       , pWaitSemaphoreInfos( waitSemaphoreInfos_.data() )
81883       , commandBufferInfoCount( static_cast<uint32_t>( commandBufferInfos_.size() ) )
81884       , pCommandBufferInfos( commandBufferInfos_.data() )
81885       , signalSemaphoreInfoCount( static_cast<uint32_t>( signalSemaphoreInfos_.size() ) )
81886       , pSignalSemaphoreInfos( signalSemaphoreInfos_.data() )
81887     {}
81888 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
81889 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
81890 
81891     SubmitInfo2KHR & operator=( SubmitInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81892 
operator =VULKAN_HPP_NAMESPACE::SubmitInfo2KHR81893     SubmitInfo2KHR & operator=( VkSubmitInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
81894     {
81895       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubmitInfo2KHR const *>( &rhs );
81896       return *this;
81897     }
81898 
81899 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SubmitInfo2KHR81900     VULKAN_HPP_CONSTEXPR_14 SubmitInfo2KHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
81901     {
81902       pNext = pNext_;
81903       return *this;
81904     }
81905 
setFlagsVULKAN_HPP_NAMESPACE::SubmitInfo2KHR81906     VULKAN_HPP_CONSTEXPR_14 SubmitInfo2KHR & setFlags( VULKAN_HPP_NAMESPACE::SubmitFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
81907     {
81908       flags = flags_;
81909       return *this;
81910     }
81911 
81912     VULKAN_HPP_CONSTEXPR_14 SubmitInfo2KHR &
setWaitSemaphoreInfoCountVULKAN_HPP_NAMESPACE::SubmitInfo2KHR81913                             setWaitSemaphoreInfoCount( uint32_t waitSemaphoreInfoCount_ ) VULKAN_HPP_NOEXCEPT
81914     {
81915       waitSemaphoreInfoCount = waitSemaphoreInfoCount_;
81916       return *this;
81917     }
81918 
setPWaitSemaphoreInfosVULKAN_HPP_NAMESPACE::SubmitInfo2KHR81919     VULKAN_HPP_CONSTEXPR_14 SubmitInfo2KHR & setPWaitSemaphoreInfos(
81920       const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfoKHR * pWaitSemaphoreInfos_ ) VULKAN_HPP_NOEXCEPT
81921     {
81922       pWaitSemaphoreInfos = pWaitSemaphoreInfos_;
81923       return *this;
81924     }
81925 
81926 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setWaitSemaphoreInfosVULKAN_HPP_NAMESPACE::SubmitInfo2KHR81927     SubmitInfo2KHR & setWaitSemaphoreInfos(
81928       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfoKHR> const &
81929         waitSemaphoreInfos_ ) VULKAN_HPP_NOEXCEPT
81930     {
81931       waitSemaphoreInfoCount = static_cast<uint32_t>( waitSemaphoreInfos_.size() );
81932       pWaitSemaphoreInfos    = waitSemaphoreInfos_.data();
81933       return *this;
81934     }
81935 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
81936 
81937     VULKAN_HPP_CONSTEXPR_14 SubmitInfo2KHR &
setCommandBufferInfoCountVULKAN_HPP_NAMESPACE::SubmitInfo2KHR81938                             setCommandBufferInfoCount( uint32_t commandBufferInfoCount_ ) VULKAN_HPP_NOEXCEPT
81939     {
81940       commandBufferInfoCount = commandBufferInfoCount_;
81941       return *this;
81942     }
81943 
setPCommandBufferInfosVULKAN_HPP_NAMESPACE::SubmitInfo2KHR81944     VULKAN_HPP_CONSTEXPR_14 SubmitInfo2KHR & setPCommandBufferInfos(
81945       const VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfoKHR * pCommandBufferInfos_ ) VULKAN_HPP_NOEXCEPT
81946     {
81947       pCommandBufferInfos = pCommandBufferInfos_;
81948       return *this;
81949     }
81950 
81951 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setCommandBufferInfosVULKAN_HPP_NAMESPACE::SubmitInfo2KHR81952     SubmitInfo2KHR & setCommandBufferInfos(
81953       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfoKHR> const &
81954         commandBufferInfos_ ) VULKAN_HPP_NOEXCEPT
81955     {
81956       commandBufferInfoCount = static_cast<uint32_t>( commandBufferInfos_.size() );
81957       pCommandBufferInfos    = commandBufferInfos_.data();
81958       return *this;
81959     }
81960 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
81961 
81962     VULKAN_HPP_CONSTEXPR_14 SubmitInfo2KHR &
setSignalSemaphoreInfoCountVULKAN_HPP_NAMESPACE::SubmitInfo2KHR81963                             setSignalSemaphoreInfoCount( uint32_t signalSemaphoreInfoCount_ ) VULKAN_HPP_NOEXCEPT
81964     {
81965       signalSemaphoreInfoCount = signalSemaphoreInfoCount_;
81966       return *this;
81967     }
81968 
setPSignalSemaphoreInfosVULKAN_HPP_NAMESPACE::SubmitInfo2KHR81969     VULKAN_HPP_CONSTEXPR_14 SubmitInfo2KHR & setPSignalSemaphoreInfos(
81970       const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfoKHR * pSignalSemaphoreInfos_ ) VULKAN_HPP_NOEXCEPT
81971     {
81972       pSignalSemaphoreInfos = pSignalSemaphoreInfos_;
81973       return *this;
81974     }
81975 
81976 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSignalSemaphoreInfosVULKAN_HPP_NAMESPACE::SubmitInfo2KHR81977     SubmitInfo2KHR & setSignalSemaphoreInfos(
81978       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfoKHR> const &
81979         signalSemaphoreInfos_ ) VULKAN_HPP_NOEXCEPT
81980     {
81981       signalSemaphoreInfoCount = static_cast<uint32_t>( signalSemaphoreInfos_.size() );
81982       pSignalSemaphoreInfos    = signalSemaphoreInfos_.data();
81983       return *this;
81984     }
81985 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
81986 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
81987 
operator VkSubmitInfo2KHR const&VULKAN_HPP_NAMESPACE::SubmitInfo2KHR81988     explicit operator VkSubmitInfo2KHR const &() const VULKAN_HPP_NOEXCEPT
81989     {
81990       return *reinterpret_cast<const VkSubmitInfo2KHR *>( this );
81991     }
81992 
operator VkSubmitInfo2KHR&VULKAN_HPP_NAMESPACE::SubmitInfo2KHR81993     explicit operator VkSubmitInfo2KHR &() VULKAN_HPP_NOEXCEPT
81994     {
81995       return *reinterpret_cast<VkSubmitInfo2KHR *>( this );
81996     }
81997 
81998 #if 14 <= VULKAN_HPP_CPP_VERSION
81999     auto
82000 #else
82001     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
82002                const void * const &,
82003                VULKAN_HPP_NAMESPACE::SubmitFlagsKHR const &,
82004                uint32_t const &,
82005                const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfoKHR * const &,
82006                uint32_t const &,
82007                const VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfoKHR * const &,
82008                uint32_t const &,
82009                const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfoKHR * const &>
82010 #endif
reflectVULKAN_HPP_NAMESPACE::SubmitInfo2KHR82011       reflect() const VULKAN_HPP_NOEXCEPT
82012     {
82013       return std::tie( sType,
82014                        pNext,
82015                        flags,
82016                        waitSemaphoreInfoCount,
82017                        pWaitSemaphoreInfos,
82018                        commandBufferInfoCount,
82019                        pCommandBufferInfos,
82020                        signalSemaphoreInfoCount,
82021                        pSignalSemaphoreInfos );
82022     }
82023 
82024 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
82025     auto operator<=>( SubmitInfo2KHR const & ) const = default;
82026 #else
operator ==VULKAN_HPP_NAMESPACE::SubmitInfo2KHR82027     bool operator==( SubmitInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
82028     {
82029       return this->reflect() == rhs.reflect();
82030     }
82031 
operator !=VULKAN_HPP_NAMESPACE::SubmitInfo2KHR82032     bool operator!=( SubmitInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
82033     {
82034       return this->reflect() != rhs.reflect();
82035     }
82036 #endif
82037 
82038   public:
82039     VULKAN_HPP_NAMESPACE::StructureType                      sType                    = StructureType::eSubmitInfo2KHR;
82040     const void *                                             pNext                    = {};
82041     VULKAN_HPP_NAMESPACE::SubmitFlagsKHR                     flags                    = {};
82042     uint32_t                                                 waitSemaphoreInfoCount   = {};
82043     const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfoKHR *     pWaitSemaphoreInfos      = {};
82044     uint32_t                                                 commandBufferInfoCount   = {};
82045     const VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfoKHR * pCommandBufferInfos      = {};
82046     uint32_t                                                 signalSemaphoreInfoCount = {};
82047     const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfoKHR *     pSignalSemaphoreInfos    = {};
82048   };
82049   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubmitInfo2KHR ) == sizeof( VkSubmitInfo2KHR ),
82050                             "struct and wrapper have different size!" );
82051   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SubmitInfo2KHR>::value,
82052                             "struct wrapper is not a standard layout!" );
82053   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SubmitInfo2KHR>::value,
82054                             "SubmitInfo2KHR is not nothrow_move_constructible!" );
82055 
82056   template <>
82057   struct CppType<StructureType, StructureType::eSubmitInfo2KHR>
82058   {
82059     using Type = SubmitInfo2KHR;
82060   };
82061 
82062   struct SubpassBeginInfo
82063   {
82064     using NativeType = VkSubpassBeginInfo;
82065 
82066     static const bool                                  allowDuplicate = false;
82067     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSubpassBeginInfo;
82068 
82069 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubpassBeginInfoVULKAN_HPP_NAMESPACE::SubpassBeginInfo82070     VULKAN_HPP_CONSTEXPR SubpassBeginInfo( VULKAN_HPP_NAMESPACE::SubpassContents contents_ =
82071                                              VULKAN_HPP_NAMESPACE::SubpassContents::eInline ) VULKAN_HPP_NOEXCEPT
82072       : contents( contents_ )
82073     {}
82074 
82075     VULKAN_HPP_CONSTEXPR SubpassBeginInfo( SubpassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82076 
SubpassBeginInfoVULKAN_HPP_NAMESPACE::SubpassBeginInfo82077     SubpassBeginInfo( VkSubpassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
82078       : SubpassBeginInfo( *reinterpret_cast<SubpassBeginInfo const *>( &rhs ) )
82079     {}
82080 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
82081 
82082     SubpassBeginInfo & operator=( SubpassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82083 
operator =VULKAN_HPP_NAMESPACE::SubpassBeginInfo82084     SubpassBeginInfo & operator=( VkSubpassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
82085     {
82086       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassBeginInfo const *>( &rhs );
82087       return *this;
82088     }
82089 
82090 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SubpassBeginInfo82091     VULKAN_HPP_CONSTEXPR_14 SubpassBeginInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
82092     {
82093       pNext = pNext_;
82094       return *this;
82095     }
82096 
82097     VULKAN_HPP_CONSTEXPR_14 SubpassBeginInfo &
setContentsVULKAN_HPP_NAMESPACE::SubpassBeginInfo82098                             setContents( VULKAN_HPP_NAMESPACE::SubpassContents contents_ ) VULKAN_HPP_NOEXCEPT
82099     {
82100       contents = contents_;
82101       return *this;
82102     }
82103 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
82104 
operator VkSubpassBeginInfo const&VULKAN_HPP_NAMESPACE::SubpassBeginInfo82105     explicit operator VkSubpassBeginInfo const &() const VULKAN_HPP_NOEXCEPT
82106     {
82107       return *reinterpret_cast<const VkSubpassBeginInfo *>( this );
82108     }
82109 
operator VkSubpassBeginInfo&VULKAN_HPP_NAMESPACE::SubpassBeginInfo82110     explicit operator VkSubpassBeginInfo &() VULKAN_HPP_NOEXCEPT
82111     {
82112       return *reinterpret_cast<VkSubpassBeginInfo *>( this );
82113     }
82114 
82115 #if 14 <= VULKAN_HPP_CPP_VERSION
82116     auto
82117 #else
82118     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
82119                const void * const &,
82120                VULKAN_HPP_NAMESPACE::SubpassContents const &>
82121 #endif
reflectVULKAN_HPP_NAMESPACE::SubpassBeginInfo82122       reflect() const VULKAN_HPP_NOEXCEPT
82123     {
82124       return std::tie( sType, pNext, contents );
82125     }
82126 
82127 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
82128     auto operator<=>( SubpassBeginInfo const & ) const = default;
82129 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassBeginInfo82130     bool operator==( SubpassBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
82131     {
82132       return this->reflect() == rhs.reflect();
82133     }
82134 
operator !=VULKAN_HPP_NAMESPACE::SubpassBeginInfo82135     bool operator!=( SubpassBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
82136     {
82137       return this->reflect() != rhs.reflect();
82138     }
82139 #endif
82140 
82141   public:
82142     VULKAN_HPP_NAMESPACE::StructureType   sType    = StructureType::eSubpassBeginInfo;
82143     const void *                          pNext    = {};
82144     VULKAN_HPP_NAMESPACE::SubpassContents contents = VULKAN_HPP_NAMESPACE::SubpassContents::eInline;
82145   };
82146   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubpassBeginInfo ) == sizeof( VkSubpassBeginInfo ),
82147                             "struct and wrapper have different size!" );
82148   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SubpassBeginInfo>::value,
82149                             "struct wrapper is not a standard layout!" );
82150   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SubpassBeginInfo>::value,
82151                             "SubpassBeginInfo is not nothrow_move_constructible!" );
82152 
82153   template <>
82154   struct CppType<StructureType, StructureType::eSubpassBeginInfo>
82155   {
82156     using Type = SubpassBeginInfo;
82157   };
82158   using SubpassBeginInfoKHR = SubpassBeginInfo;
82159 
82160   struct SubpassDescriptionDepthStencilResolve
82161   {
82162     using NativeType = VkSubpassDescriptionDepthStencilResolve;
82163 
82164     static const bool                                  allowDuplicate = false;
82165     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
82166       StructureType::eSubpassDescriptionDepthStencilResolve;
82167 
82168 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubpassDescriptionDepthStencilResolveVULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve82169     VULKAN_HPP_CONSTEXPR SubpassDescriptionDepthStencilResolve(
82170       VULKAN_HPP_NAMESPACE::ResolveModeFlagBits depthResolveMode_   = VULKAN_HPP_NAMESPACE::ResolveModeFlagBits::eNone,
82171       VULKAN_HPP_NAMESPACE::ResolveModeFlagBits stencilResolveMode_ = VULKAN_HPP_NAMESPACE::ResolveModeFlagBits::eNone,
82172       const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pDepthStencilResolveAttachment_ = {} ) VULKAN_HPP_NOEXCEPT
82173       : depthResolveMode( depthResolveMode_ )
82174       , stencilResolveMode( stencilResolveMode_ )
82175       , pDepthStencilResolveAttachment( pDepthStencilResolveAttachment_ )
82176     {}
82177 
82178     VULKAN_HPP_CONSTEXPR SubpassDescriptionDepthStencilResolve( SubpassDescriptionDepthStencilResolve const & rhs )
82179       VULKAN_HPP_NOEXCEPT = default;
82180 
SubpassDescriptionDepthStencilResolveVULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve82181     SubpassDescriptionDepthStencilResolve( VkSubpassDescriptionDepthStencilResolve const & rhs ) VULKAN_HPP_NOEXCEPT
82182       : SubpassDescriptionDepthStencilResolve(
82183           *reinterpret_cast<SubpassDescriptionDepthStencilResolve const *>( &rhs ) )
82184     {}
82185 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
82186 
82187     SubpassDescriptionDepthStencilResolve &
82188       operator=( SubpassDescriptionDepthStencilResolve const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82189 
82190     SubpassDescriptionDepthStencilResolve &
operator =VULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve82191       operator=( VkSubpassDescriptionDepthStencilResolve const & rhs ) VULKAN_HPP_NOEXCEPT
82192     {
82193       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve const *>( &rhs );
82194       return *this;
82195     }
82196 
82197 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve82198     VULKAN_HPP_CONSTEXPR_14 SubpassDescriptionDepthStencilResolve & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
82199     {
82200       pNext = pNext_;
82201       return *this;
82202     }
82203 
82204     VULKAN_HPP_CONSTEXPR_14 SubpassDescriptionDepthStencilResolve &
setDepthResolveModeVULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve82205       setDepthResolveMode( VULKAN_HPP_NAMESPACE::ResolveModeFlagBits depthResolveMode_ ) VULKAN_HPP_NOEXCEPT
82206     {
82207       depthResolveMode = depthResolveMode_;
82208       return *this;
82209     }
82210 
82211     VULKAN_HPP_CONSTEXPR_14 SubpassDescriptionDepthStencilResolve &
setStencilResolveModeVULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve82212       setStencilResolveMode( VULKAN_HPP_NAMESPACE::ResolveModeFlagBits stencilResolveMode_ ) VULKAN_HPP_NOEXCEPT
82213     {
82214       stencilResolveMode = stencilResolveMode_;
82215       return *this;
82216     }
82217 
setPDepthStencilResolveAttachmentVULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve82218     VULKAN_HPP_CONSTEXPR_14 SubpassDescriptionDepthStencilResolve & setPDepthStencilResolveAttachment(
82219       const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pDepthStencilResolveAttachment_ ) VULKAN_HPP_NOEXCEPT
82220     {
82221       pDepthStencilResolveAttachment = pDepthStencilResolveAttachment_;
82222       return *this;
82223     }
82224 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
82225 
operator VkSubpassDescriptionDepthStencilResolve const&VULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve82226     explicit operator VkSubpassDescriptionDepthStencilResolve const &() const VULKAN_HPP_NOEXCEPT
82227     {
82228       return *reinterpret_cast<const VkSubpassDescriptionDepthStencilResolve *>( this );
82229     }
82230 
operator VkSubpassDescriptionDepthStencilResolve&VULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve82231     explicit operator VkSubpassDescriptionDepthStencilResolve &() VULKAN_HPP_NOEXCEPT
82232     {
82233       return *reinterpret_cast<VkSubpassDescriptionDepthStencilResolve *>( this );
82234     }
82235 
82236 #if 14 <= VULKAN_HPP_CPP_VERSION
82237     auto
82238 #else
82239     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
82240                const void * const &,
82241                VULKAN_HPP_NAMESPACE::ResolveModeFlagBits const &,
82242                VULKAN_HPP_NAMESPACE::ResolveModeFlagBits const &,
82243                const VULKAN_HPP_NAMESPACE::AttachmentReference2 * const &>
82244 #endif
reflectVULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve82245       reflect() const VULKAN_HPP_NOEXCEPT
82246     {
82247       return std::tie( sType, pNext, depthResolveMode, stencilResolveMode, pDepthStencilResolveAttachment );
82248     }
82249 
82250 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
82251     auto operator<=>( SubpassDescriptionDepthStencilResolve const & ) const = default;
82252 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve82253     bool operator==( SubpassDescriptionDepthStencilResolve const & rhs ) const VULKAN_HPP_NOEXCEPT
82254     {
82255       return this->reflect() == rhs.reflect();
82256     }
82257 
operator !=VULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve82258     bool operator!=( SubpassDescriptionDepthStencilResolve const & rhs ) const VULKAN_HPP_NOEXCEPT
82259     {
82260       return this->reflect() != rhs.reflect();
82261     }
82262 #endif
82263 
82264   public:
82265     VULKAN_HPP_NAMESPACE::StructureType       sType            = StructureType::eSubpassDescriptionDepthStencilResolve;
82266     const void *                              pNext            = {};
82267     VULKAN_HPP_NAMESPACE::ResolveModeFlagBits depthResolveMode = VULKAN_HPP_NAMESPACE::ResolveModeFlagBits::eNone;
82268     VULKAN_HPP_NAMESPACE::ResolveModeFlagBits stencilResolveMode = VULKAN_HPP_NAMESPACE::ResolveModeFlagBits::eNone;
82269     const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pDepthStencilResolveAttachment = {};
82270   };
82271   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve ) ==
82272                               sizeof( VkSubpassDescriptionDepthStencilResolve ),
82273                             "struct and wrapper have different size!" );
82274   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve>::value,
82275                             "struct wrapper is not a standard layout!" );
82276   VULKAN_HPP_STATIC_ASSERT(
82277     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve>::value,
82278     "SubpassDescriptionDepthStencilResolve is not nothrow_move_constructible!" );
82279 
82280   template <>
82281   struct CppType<StructureType, StructureType::eSubpassDescriptionDepthStencilResolve>
82282   {
82283     using Type = SubpassDescriptionDepthStencilResolve;
82284   };
82285   using SubpassDescriptionDepthStencilResolveKHR = SubpassDescriptionDepthStencilResolve;
82286 
82287   struct SubpassEndInfo
82288   {
82289     using NativeType = VkSubpassEndInfo;
82290 
82291     static const bool                                  allowDuplicate = false;
82292     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSubpassEndInfo;
82293 
82294 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubpassEndInfoVULKAN_HPP_NAMESPACE::SubpassEndInfo82295     VULKAN_HPP_CONSTEXPR SubpassEndInfo() VULKAN_HPP_NOEXCEPT {}
82296 
82297     VULKAN_HPP_CONSTEXPR SubpassEndInfo( SubpassEndInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82298 
SubpassEndInfoVULKAN_HPP_NAMESPACE::SubpassEndInfo82299     SubpassEndInfo( VkSubpassEndInfo const & rhs ) VULKAN_HPP_NOEXCEPT
82300       : SubpassEndInfo( *reinterpret_cast<SubpassEndInfo const *>( &rhs ) )
82301     {}
82302 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
82303 
82304     SubpassEndInfo & operator=( SubpassEndInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82305 
operator =VULKAN_HPP_NAMESPACE::SubpassEndInfo82306     SubpassEndInfo & operator=( VkSubpassEndInfo const & rhs ) VULKAN_HPP_NOEXCEPT
82307     {
82308       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassEndInfo const *>( &rhs );
82309       return *this;
82310     }
82311 
82312 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SubpassEndInfo82313     VULKAN_HPP_CONSTEXPR_14 SubpassEndInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
82314     {
82315       pNext = pNext_;
82316       return *this;
82317     }
82318 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
82319 
operator VkSubpassEndInfo const&VULKAN_HPP_NAMESPACE::SubpassEndInfo82320     explicit operator VkSubpassEndInfo const &() const VULKAN_HPP_NOEXCEPT
82321     {
82322       return *reinterpret_cast<const VkSubpassEndInfo *>( this );
82323     }
82324 
operator VkSubpassEndInfo&VULKAN_HPP_NAMESPACE::SubpassEndInfo82325     explicit operator VkSubpassEndInfo &() VULKAN_HPP_NOEXCEPT
82326     {
82327       return *reinterpret_cast<VkSubpassEndInfo *>( this );
82328     }
82329 
82330 #if 14 <= VULKAN_HPP_CPP_VERSION
82331     auto
82332 #else
82333     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &>
82334 #endif
reflectVULKAN_HPP_NAMESPACE::SubpassEndInfo82335       reflect() const VULKAN_HPP_NOEXCEPT
82336     {
82337       return std::tie( sType, pNext );
82338     }
82339 
82340 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
82341     auto operator<=>( SubpassEndInfo const & ) const = default;
82342 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassEndInfo82343     bool operator==( SubpassEndInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
82344     {
82345       return this->reflect() == rhs.reflect();
82346     }
82347 
operator !=VULKAN_HPP_NAMESPACE::SubpassEndInfo82348     bool operator!=( SubpassEndInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
82349     {
82350       return this->reflect() != rhs.reflect();
82351     }
82352 #endif
82353 
82354   public:
82355     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubpassEndInfo;
82356     const void *                        pNext = {};
82357   };
82358   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubpassEndInfo ) == sizeof( VkSubpassEndInfo ),
82359                             "struct and wrapper have different size!" );
82360   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SubpassEndInfo>::value,
82361                             "struct wrapper is not a standard layout!" );
82362   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SubpassEndInfo>::value,
82363                             "SubpassEndInfo is not nothrow_move_constructible!" );
82364 
82365   template <>
82366   struct CppType<StructureType, StructureType::eSubpassEndInfo>
82367   {
82368     using Type = SubpassEndInfo;
82369   };
82370   using SubpassEndInfoKHR = SubpassEndInfo;
82371 
82372   struct SubpassFragmentDensityMapOffsetEndInfoQCOM
82373   {
82374     using NativeType = VkSubpassFragmentDensityMapOffsetEndInfoQCOM;
82375 
82376     static const bool                                  allowDuplicate = false;
82377     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
82378       StructureType::eSubpassFragmentDensityMapOffsetEndInfoQCOM;
82379 
82380 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubpassFragmentDensityMapOffsetEndInfoQCOMVULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM82381     VULKAN_HPP_CONSTEXPR SubpassFragmentDensityMapOffsetEndInfoQCOM(
82382       uint32_t                               fragmentDensityOffsetCount_ = {},
82383       const VULKAN_HPP_NAMESPACE::Offset2D * pFragmentDensityOffsets_    = {} ) VULKAN_HPP_NOEXCEPT
82384       : fragmentDensityOffsetCount( fragmentDensityOffsetCount_ )
82385       , pFragmentDensityOffsets( pFragmentDensityOffsets_ )
82386     {}
82387 
82388     VULKAN_HPP_CONSTEXPR SubpassFragmentDensityMapOffsetEndInfoQCOM(
82389       SubpassFragmentDensityMapOffsetEndInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82390 
SubpassFragmentDensityMapOffsetEndInfoQCOMVULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM82391     SubpassFragmentDensityMapOffsetEndInfoQCOM( VkSubpassFragmentDensityMapOffsetEndInfoQCOM const & rhs )
82392       VULKAN_HPP_NOEXCEPT
82393       : SubpassFragmentDensityMapOffsetEndInfoQCOM(
82394           *reinterpret_cast<SubpassFragmentDensityMapOffsetEndInfoQCOM const *>( &rhs ) )
82395     {}
82396 
82397 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SubpassFragmentDensityMapOffsetEndInfoQCOMVULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM82398     SubpassFragmentDensityMapOffsetEndInfoQCOM(
82399       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Offset2D> const &
82400         fragmentDensityOffsets_ )
82401       : fragmentDensityOffsetCount( static_cast<uint32_t>( fragmentDensityOffsets_.size() ) )
82402       , pFragmentDensityOffsets( fragmentDensityOffsets_.data() )
82403     {}
82404 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
82405 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
82406 
82407     SubpassFragmentDensityMapOffsetEndInfoQCOM &
82408       operator=( SubpassFragmentDensityMapOffsetEndInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82409 
82410     SubpassFragmentDensityMapOffsetEndInfoQCOM &
operator =VULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM82411       operator=( VkSubpassFragmentDensityMapOffsetEndInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
82412     {
82413       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM const *>( &rhs );
82414       return *this;
82415     }
82416 
82417 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
82418     VULKAN_HPP_CONSTEXPR_14 SubpassFragmentDensityMapOffsetEndInfoQCOM &
setPNextVULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM82419                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
82420     {
82421       pNext = pNext_;
82422       return *this;
82423     }
82424 
82425     VULKAN_HPP_CONSTEXPR_14 SubpassFragmentDensityMapOffsetEndInfoQCOM &
setFragmentDensityOffsetCountVULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM82426                             setFragmentDensityOffsetCount( uint32_t fragmentDensityOffsetCount_ ) VULKAN_HPP_NOEXCEPT
82427     {
82428       fragmentDensityOffsetCount = fragmentDensityOffsetCount_;
82429       return *this;
82430     }
82431 
82432     VULKAN_HPP_CONSTEXPR_14 SubpassFragmentDensityMapOffsetEndInfoQCOM &
setPFragmentDensityOffsetsVULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM82433       setPFragmentDensityOffsets( const VULKAN_HPP_NAMESPACE::Offset2D * pFragmentDensityOffsets_ ) VULKAN_HPP_NOEXCEPT
82434     {
82435       pFragmentDensityOffsets = pFragmentDensityOffsets_;
82436       return *this;
82437     }
82438 
82439 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setFragmentDensityOffsetsVULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM82440     SubpassFragmentDensityMapOffsetEndInfoQCOM & setFragmentDensityOffsets(
82441       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Offset2D> const &
82442         fragmentDensityOffsets_ ) VULKAN_HPP_NOEXCEPT
82443     {
82444       fragmentDensityOffsetCount = static_cast<uint32_t>( fragmentDensityOffsets_.size() );
82445       pFragmentDensityOffsets    = fragmentDensityOffsets_.data();
82446       return *this;
82447     }
82448 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
82449 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
82450 
operator VkSubpassFragmentDensityMapOffsetEndInfoQCOM const&VULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM82451     explicit operator VkSubpassFragmentDensityMapOffsetEndInfoQCOM const &() const VULKAN_HPP_NOEXCEPT
82452     {
82453       return *reinterpret_cast<const VkSubpassFragmentDensityMapOffsetEndInfoQCOM *>( this );
82454     }
82455 
operator VkSubpassFragmentDensityMapOffsetEndInfoQCOM&VULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM82456     explicit operator VkSubpassFragmentDensityMapOffsetEndInfoQCOM &() VULKAN_HPP_NOEXCEPT
82457     {
82458       return *reinterpret_cast<VkSubpassFragmentDensityMapOffsetEndInfoQCOM *>( this );
82459     }
82460 
82461 #if 14 <= VULKAN_HPP_CPP_VERSION
82462     auto
82463 #else
82464     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
82465                const void * const &,
82466                uint32_t const &,
82467                const VULKAN_HPP_NAMESPACE::Offset2D * const &>
82468 #endif
reflectVULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM82469       reflect() const VULKAN_HPP_NOEXCEPT
82470     {
82471       return std::tie( sType, pNext, fragmentDensityOffsetCount, pFragmentDensityOffsets );
82472     }
82473 
82474 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
82475     auto operator<=>( SubpassFragmentDensityMapOffsetEndInfoQCOM const & ) const = default;
82476 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM82477     bool operator==( SubpassFragmentDensityMapOffsetEndInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
82478     {
82479       return this->reflect() == rhs.reflect();
82480     }
82481 
operator !=VULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM82482     bool operator!=( SubpassFragmentDensityMapOffsetEndInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
82483     {
82484       return this->reflect() != rhs.reflect();
82485     }
82486 #endif
82487 
82488   public:
82489     VULKAN_HPP_NAMESPACE::StructureType    sType = StructureType::eSubpassFragmentDensityMapOffsetEndInfoQCOM;
82490     const void *                           pNext = {};
82491     uint32_t                               fragmentDensityOffsetCount = {};
82492     const VULKAN_HPP_NAMESPACE::Offset2D * pFragmentDensityOffsets    = {};
82493   };
82494   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM ) ==
82495                               sizeof( VkSubpassFragmentDensityMapOffsetEndInfoQCOM ),
82496                             "struct and wrapper have different size!" );
82497   VULKAN_HPP_STATIC_ASSERT(
82498     std::is_standard_layout<VULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM>::value,
82499     "struct wrapper is not a standard layout!" );
82500   VULKAN_HPP_STATIC_ASSERT(
82501     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM>::value,
82502     "SubpassFragmentDensityMapOffsetEndInfoQCOM is not nothrow_move_constructible!" );
82503 
82504   template <>
82505   struct CppType<StructureType, StructureType::eSubpassFragmentDensityMapOffsetEndInfoQCOM>
82506   {
82507     using Type = SubpassFragmentDensityMapOffsetEndInfoQCOM;
82508   };
82509 
82510   struct SubpassShadingPipelineCreateInfoHUAWEI
82511   {
82512     using NativeType = VkSubpassShadingPipelineCreateInfoHUAWEI;
82513 
82514     static const bool                                  allowDuplicate = false;
82515     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
82516       StructureType::eSubpassShadingPipelineCreateInfoHUAWEI;
82517 
82518 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubpassShadingPipelineCreateInfoHUAWEIVULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI82519     VULKAN_HPP_CONSTEXPR SubpassShadingPipelineCreateInfoHUAWEI( VULKAN_HPP_NAMESPACE::RenderPass renderPass_ = {},
82520                                                                  uint32_t subpass_ = {} ) VULKAN_HPP_NOEXCEPT
82521       : renderPass( renderPass_ )
82522       , subpass( subpass_ )
82523     {}
82524 
82525     VULKAN_HPP_CONSTEXPR SubpassShadingPipelineCreateInfoHUAWEI( SubpassShadingPipelineCreateInfoHUAWEI const & rhs )
82526       VULKAN_HPP_NOEXCEPT = default;
82527 
SubpassShadingPipelineCreateInfoHUAWEIVULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI82528     SubpassShadingPipelineCreateInfoHUAWEI( VkSubpassShadingPipelineCreateInfoHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT
82529       : SubpassShadingPipelineCreateInfoHUAWEI(
82530           *reinterpret_cast<SubpassShadingPipelineCreateInfoHUAWEI const *>( &rhs ) )
82531     {}
82532 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
82533 
82534     SubpassShadingPipelineCreateInfoHUAWEI &
82535       operator=( SubpassShadingPipelineCreateInfoHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82536 
82537     SubpassShadingPipelineCreateInfoHUAWEI &
operator =VULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI82538       operator=( VkSubpassShadingPipelineCreateInfoHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT
82539     {
82540       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI const *>( &rhs );
82541       return *this;
82542     }
82543 
operator VkSubpassShadingPipelineCreateInfoHUAWEI const&VULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI82544     explicit operator VkSubpassShadingPipelineCreateInfoHUAWEI const &() const VULKAN_HPP_NOEXCEPT
82545     {
82546       return *reinterpret_cast<const VkSubpassShadingPipelineCreateInfoHUAWEI *>( this );
82547     }
82548 
operator VkSubpassShadingPipelineCreateInfoHUAWEI&VULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI82549     explicit operator VkSubpassShadingPipelineCreateInfoHUAWEI &() VULKAN_HPP_NOEXCEPT
82550     {
82551       return *reinterpret_cast<VkSubpassShadingPipelineCreateInfoHUAWEI *>( this );
82552     }
82553 
82554 #if 14 <= VULKAN_HPP_CPP_VERSION
82555     auto
82556 #else
82557     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
82558                void * const &,
82559                VULKAN_HPP_NAMESPACE::RenderPass const &,
82560                uint32_t const &>
82561 #endif
reflectVULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI82562       reflect() const VULKAN_HPP_NOEXCEPT
82563     {
82564       return std::tie( sType, pNext, renderPass, subpass );
82565     }
82566 
82567 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
82568     auto operator<=>( SubpassShadingPipelineCreateInfoHUAWEI const & ) const = default;
82569 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI82570     bool operator==( SubpassShadingPipelineCreateInfoHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
82571     {
82572       return this->reflect() == rhs.reflect();
82573     }
82574 
operator !=VULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI82575     bool operator!=( SubpassShadingPipelineCreateInfoHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
82576     {
82577       return this->reflect() != rhs.reflect();
82578     }
82579 #endif
82580 
82581   public:
82582     VULKAN_HPP_NAMESPACE::StructureType sType      = StructureType::eSubpassShadingPipelineCreateInfoHUAWEI;
82583     void *                              pNext      = {};
82584     VULKAN_HPP_NAMESPACE::RenderPass    renderPass = {};
82585     uint32_t                            subpass    = {};
82586   };
82587   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI ) ==
82588                               sizeof( VkSubpassShadingPipelineCreateInfoHUAWEI ),
82589                             "struct and wrapper have different size!" );
82590   VULKAN_HPP_STATIC_ASSERT(
82591     std::is_standard_layout<VULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI>::value,
82592     "struct wrapper is not a standard layout!" );
82593   VULKAN_HPP_STATIC_ASSERT(
82594     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI>::value,
82595     "SubpassShadingPipelineCreateInfoHUAWEI is not nothrow_move_constructible!" );
82596 
82597   template <>
82598   struct CppType<StructureType, StructureType::eSubpassShadingPipelineCreateInfoHUAWEI>
82599   {
82600     using Type = SubpassShadingPipelineCreateInfoHUAWEI;
82601   };
82602 
82603   struct SurfaceCapabilities2EXT
82604   {
82605     using NativeType = VkSurfaceCapabilities2EXT;
82606 
82607     static const bool                                  allowDuplicate = false;
82608     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSurfaceCapabilities2EXT;
82609 
82610 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SurfaceCapabilities2EXTVULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT82611     VULKAN_HPP_CONSTEXPR SurfaceCapabilities2EXT(
82612       uint32_t                                          minImageCount_       = {},
82613       uint32_t                                          maxImageCount_       = {},
82614       VULKAN_HPP_NAMESPACE::Extent2D                    currentExtent_       = {},
82615       VULKAN_HPP_NAMESPACE::Extent2D                    minImageExtent_      = {},
82616       VULKAN_HPP_NAMESPACE::Extent2D                    maxImageExtent_      = {},
82617       uint32_t                                          maxImageArrayLayers_ = {},
82618       VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR    supportedTransforms_ = {},
82619       VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR currentTransform_ =
82620         VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity,
82621       VULKAN_HPP_NAMESPACE::CompositeAlphaFlagsKHR supportedCompositeAlpha_  = {},
82622       VULKAN_HPP_NAMESPACE::ImageUsageFlags        supportedUsageFlags_      = {},
82623       VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT supportedSurfaceCounters_ = {} ) VULKAN_HPP_NOEXCEPT
82624       : minImageCount( minImageCount_ )
82625       , maxImageCount( maxImageCount_ )
82626       , currentExtent( currentExtent_ )
82627       , minImageExtent( minImageExtent_ )
82628       , maxImageExtent( maxImageExtent_ )
82629       , maxImageArrayLayers( maxImageArrayLayers_ )
82630       , supportedTransforms( supportedTransforms_ )
82631       , currentTransform( currentTransform_ )
82632       , supportedCompositeAlpha( supportedCompositeAlpha_ )
82633       , supportedUsageFlags( supportedUsageFlags_ )
82634       , supportedSurfaceCounters( supportedSurfaceCounters_ )
82635     {}
82636 
82637     VULKAN_HPP_CONSTEXPR SurfaceCapabilities2EXT( SurfaceCapabilities2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82638 
SurfaceCapabilities2EXTVULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT82639     SurfaceCapabilities2EXT( VkSurfaceCapabilities2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
82640       : SurfaceCapabilities2EXT( *reinterpret_cast<SurfaceCapabilities2EXT const *>( &rhs ) )
82641     {}
82642 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
82643 
82644     SurfaceCapabilities2EXT & operator=( SurfaceCapabilities2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82645 
operator =VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT82646     SurfaceCapabilities2EXT & operator=( VkSurfaceCapabilities2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
82647     {
82648       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT const *>( &rhs );
82649       return *this;
82650     }
82651 
operator VkSurfaceCapabilities2EXT const&VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT82652     explicit operator VkSurfaceCapabilities2EXT const &() const VULKAN_HPP_NOEXCEPT
82653     {
82654       return *reinterpret_cast<const VkSurfaceCapabilities2EXT *>( this );
82655     }
82656 
operator VkSurfaceCapabilities2EXT&VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT82657     explicit operator VkSurfaceCapabilities2EXT &() VULKAN_HPP_NOEXCEPT
82658     {
82659       return *reinterpret_cast<VkSurfaceCapabilities2EXT *>( this );
82660     }
82661 
82662 #if 14 <= VULKAN_HPP_CPP_VERSION
82663     auto
82664 #else
82665     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
82666                void * const &,
82667                uint32_t const &,
82668                uint32_t const &,
82669                VULKAN_HPP_NAMESPACE::Extent2D const &,
82670                VULKAN_HPP_NAMESPACE::Extent2D const &,
82671                VULKAN_HPP_NAMESPACE::Extent2D const &,
82672                uint32_t const &,
82673                VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR const &,
82674                VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR const &,
82675                VULKAN_HPP_NAMESPACE::CompositeAlphaFlagsKHR const &,
82676                VULKAN_HPP_NAMESPACE::ImageUsageFlags const &,
82677                VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT const &>
82678 #endif
reflectVULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT82679       reflect() const VULKAN_HPP_NOEXCEPT
82680     {
82681       return std::tie( sType,
82682                        pNext,
82683                        minImageCount,
82684                        maxImageCount,
82685                        currentExtent,
82686                        minImageExtent,
82687                        maxImageExtent,
82688                        maxImageArrayLayers,
82689                        supportedTransforms,
82690                        currentTransform,
82691                        supportedCompositeAlpha,
82692                        supportedUsageFlags,
82693                        supportedSurfaceCounters );
82694     }
82695 
82696 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
82697     auto operator<=>( SurfaceCapabilities2EXT const & ) const = default;
82698 #else
operator ==VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT82699     bool operator==( SurfaceCapabilities2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
82700     {
82701       return this->reflect() == rhs.reflect();
82702     }
82703 
operator !=VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT82704     bool operator!=( SurfaceCapabilities2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
82705     {
82706       return this->reflect() != rhs.reflect();
82707     }
82708 #endif
82709 
82710   public:
82711     VULKAN_HPP_NAMESPACE::StructureType               sType               = StructureType::eSurfaceCapabilities2EXT;
82712     void *                                            pNext               = {};
82713     uint32_t                                          minImageCount       = {};
82714     uint32_t                                          maxImageCount       = {};
82715     VULKAN_HPP_NAMESPACE::Extent2D                    currentExtent       = {};
82716     VULKAN_HPP_NAMESPACE::Extent2D                    minImageExtent      = {};
82717     VULKAN_HPP_NAMESPACE::Extent2D                    maxImageExtent      = {};
82718     uint32_t                                          maxImageArrayLayers = {};
82719     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR    supportedTransforms = {};
82720     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR currentTransform =
82721       VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity;
82722     VULKAN_HPP_NAMESPACE::CompositeAlphaFlagsKHR supportedCompositeAlpha  = {};
82723     VULKAN_HPP_NAMESPACE::ImageUsageFlags        supportedUsageFlags      = {};
82724     VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT supportedSurfaceCounters = {};
82725   };
82726   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT ) ==
82727                               sizeof( VkSurfaceCapabilities2EXT ),
82728                             "struct and wrapper have different size!" );
82729   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT>::value,
82730                             "struct wrapper is not a standard layout!" );
82731   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT>::value,
82732                             "SurfaceCapabilities2EXT is not nothrow_move_constructible!" );
82733 
82734   template <>
82735   struct CppType<StructureType, StructureType::eSurfaceCapabilities2EXT>
82736   {
82737     using Type = SurfaceCapabilities2EXT;
82738   };
82739 
82740   struct SurfaceCapabilitiesKHR
82741   {
82742     using NativeType = VkSurfaceCapabilitiesKHR;
82743 
82744 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
82745     VULKAN_HPP_CONSTEXPR
SurfaceCapabilitiesKHRVULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR82746       SurfaceCapabilitiesKHR( uint32_t                                          minImageCount_       = {},
82747                               uint32_t                                          maxImageCount_       = {},
82748                               VULKAN_HPP_NAMESPACE::Extent2D                    currentExtent_       = {},
82749                               VULKAN_HPP_NAMESPACE::Extent2D                    minImageExtent_      = {},
82750                               VULKAN_HPP_NAMESPACE::Extent2D                    maxImageExtent_      = {},
82751                               uint32_t                                          maxImageArrayLayers_ = {},
82752                               VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR    supportedTransforms_ = {},
82753                               VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR currentTransform_ =
82754                                 VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity,
82755                               VULKAN_HPP_NAMESPACE::CompositeAlphaFlagsKHR supportedCompositeAlpha_ = {},
82756                               VULKAN_HPP_NAMESPACE::ImageUsageFlags supportedUsageFlags_ = {} ) VULKAN_HPP_NOEXCEPT
82757       : minImageCount( minImageCount_ )
82758       , maxImageCount( maxImageCount_ )
82759       , currentExtent( currentExtent_ )
82760       , minImageExtent( minImageExtent_ )
82761       , maxImageExtent( maxImageExtent_ )
82762       , maxImageArrayLayers( maxImageArrayLayers_ )
82763       , supportedTransforms( supportedTransforms_ )
82764       , currentTransform( currentTransform_ )
82765       , supportedCompositeAlpha( supportedCompositeAlpha_ )
82766       , supportedUsageFlags( supportedUsageFlags_ )
82767     {}
82768 
82769     VULKAN_HPP_CONSTEXPR SurfaceCapabilitiesKHR( SurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82770 
SurfaceCapabilitiesKHRVULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR82771     SurfaceCapabilitiesKHR( VkSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
82772       : SurfaceCapabilitiesKHR( *reinterpret_cast<SurfaceCapabilitiesKHR const *>( &rhs ) )
82773     {}
82774 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
82775 
82776     SurfaceCapabilitiesKHR & operator=( SurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82777 
operator =VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR82778     SurfaceCapabilitiesKHR & operator=( VkSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
82779     {
82780       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR const *>( &rhs );
82781       return *this;
82782     }
82783 
operator VkSurfaceCapabilitiesKHR const&VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR82784     explicit operator VkSurfaceCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT
82785     {
82786       return *reinterpret_cast<const VkSurfaceCapabilitiesKHR *>( this );
82787     }
82788 
operator VkSurfaceCapabilitiesKHR&VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR82789     explicit operator VkSurfaceCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT
82790     {
82791       return *reinterpret_cast<VkSurfaceCapabilitiesKHR *>( this );
82792     }
82793 
82794 #if 14 <= VULKAN_HPP_CPP_VERSION
82795     auto
82796 #else
82797     std::tuple<uint32_t const &,
82798                uint32_t const &,
82799                VULKAN_HPP_NAMESPACE::Extent2D const &,
82800                VULKAN_HPP_NAMESPACE::Extent2D const &,
82801                VULKAN_HPP_NAMESPACE::Extent2D const &,
82802                uint32_t const &,
82803                VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR const &,
82804                VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR const &,
82805                VULKAN_HPP_NAMESPACE::CompositeAlphaFlagsKHR const &,
82806                VULKAN_HPP_NAMESPACE::ImageUsageFlags const &>
82807 #endif
reflectVULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR82808       reflect() const VULKAN_HPP_NOEXCEPT
82809     {
82810       return std::tie( minImageCount,
82811                        maxImageCount,
82812                        currentExtent,
82813                        minImageExtent,
82814                        maxImageExtent,
82815                        maxImageArrayLayers,
82816                        supportedTransforms,
82817                        currentTransform,
82818                        supportedCompositeAlpha,
82819                        supportedUsageFlags );
82820     }
82821 
82822 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
82823     auto operator<=>( SurfaceCapabilitiesKHR const & ) const = default;
82824 #else
operator ==VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR82825     bool operator==( SurfaceCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
82826     {
82827       return this->reflect() == rhs.reflect();
82828     }
82829 
operator !=VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR82830     bool operator!=( SurfaceCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
82831     {
82832       return this->reflect() != rhs.reflect();
82833     }
82834 #endif
82835 
82836   public:
82837     uint32_t                                          minImageCount       = {};
82838     uint32_t                                          maxImageCount       = {};
82839     VULKAN_HPP_NAMESPACE::Extent2D                    currentExtent       = {};
82840     VULKAN_HPP_NAMESPACE::Extent2D                    minImageExtent      = {};
82841     VULKAN_HPP_NAMESPACE::Extent2D                    maxImageExtent      = {};
82842     uint32_t                                          maxImageArrayLayers = {};
82843     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR    supportedTransforms = {};
82844     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR currentTransform =
82845       VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity;
82846     VULKAN_HPP_NAMESPACE::CompositeAlphaFlagsKHR supportedCompositeAlpha = {};
82847     VULKAN_HPP_NAMESPACE::ImageUsageFlags        supportedUsageFlags     = {};
82848   };
82849   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR ) ==
82850                               sizeof( VkSurfaceCapabilitiesKHR ),
82851                             "struct and wrapper have different size!" );
82852   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR>::value,
82853                             "struct wrapper is not a standard layout!" );
82854   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR>::value,
82855                             "SurfaceCapabilitiesKHR is not nothrow_move_constructible!" );
82856 
82857   struct SurfaceCapabilities2KHR
82858   {
82859     using NativeType = VkSurfaceCapabilities2KHR;
82860 
82861     static const bool                                  allowDuplicate = false;
82862     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSurfaceCapabilities2KHR;
82863 
82864 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SurfaceCapabilities2KHRVULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR82865     VULKAN_HPP_CONSTEXPR SurfaceCapabilities2KHR(
82866       VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR surfaceCapabilities_ = {} ) VULKAN_HPP_NOEXCEPT
82867       : surfaceCapabilities( surfaceCapabilities_ )
82868     {}
82869 
82870     VULKAN_HPP_CONSTEXPR SurfaceCapabilities2KHR( SurfaceCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82871 
SurfaceCapabilities2KHRVULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR82872     SurfaceCapabilities2KHR( VkSurfaceCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
82873       : SurfaceCapabilities2KHR( *reinterpret_cast<SurfaceCapabilities2KHR const *>( &rhs ) )
82874     {}
82875 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
82876 
82877     SurfaceCapabilities2KHR & operator=( SurfaceCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82878 
operator =VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR82879     SurfaceCapabilities2KHR & operator=( VkSurfaceCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
82880     {
82881       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR const *>( &rhs );
82882       return *this;
82883     }
82884 
operator VkSurfaceCapabilities2KHR const&VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR82885     explicit operator VkSurfaceCapabilities2KHR const &() const VULKAN_HPP_NOEXCEPT
82886     {
82887       return *reinterpret_cast<const VkSurfaceCapabilities2KHR *>( this );
82888     }
82889 
operator VkSurfaceCapabilities2KHR&VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR82890     explicit operator VkSurfaceCapabilities2KHR &() VULKAN_HPP_NOEXCEPT
82891     {
82892       return *reinterpret_cast<VkSurfaceCapabilities2KHR *>( this );
82893     }
82894 
82895 #if 14 <= VULKAN_HPP_CPP_VERSION
82896     auto
82897 #else
82898     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
82899                void * const &,
82900                VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR const &>
82901 #endif
reflectVULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR82902       reflect() const VULKAN_HPP_NOEXCEPT
82903     {
82904       return std::tie( sType, pNext, surfaceCapabilities );
82905     }
82906 
82907 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
82908     auto operator<=>( SurfaceCapabilities2KHR const & ) const = default;
82909 #else
operator ==VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR82910     bool operator==( SurfaceCapabilities2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
82911     {
82912       return this->reflect() == rhs.reflect();
82913     }
82914 
operator !=VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR82915     bool operator!=( SurfaceCapabilities2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
82916     {
82917       return this->reflect() != rhs.reflect();
82918     }
82919 #endif
82920 
82921   public:
82922     VULKAN_HPP_NAMESPACE::StructureType          sType               = StructureType::eSurfaceCapabilities2KHR;
82923     void *                                       pNext               = {};
82924     VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR surfaceCapabilities = {};
82925   };
82926   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR ) ==
82927                               sizeof( VkSurfaceCapabilities2KHR ),
82928                             "struct and wrapper have different size!" );
82929   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR>::value,
82930                             "struct wrapper is not a standard layout!" );
82931   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR>::value,
82932                             "SurfaceCapabilities2KHR is not nothrow_move_constructible!" );
82933 
82934   template <>
82935   struct CppType<StructureType, StructureType::eSurfaceCapabilities2KHR>
82936   {
82937     using Type = SurfaceCapabilities2KHR;
82938   };
82939 
82940 #if defined( VK_USE_PLATFORM_WIN32_KHR )
82941   struct SurfaceCapabilitiesFullScreenExclusiveEXT
82942   {
82943     using NativeType = VkSurfaceCapabilitiesFullScreenExclusiveEXT;
82944 
82945     static const bool                                  allowDuplicate = false;
82946     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
82947       StructureType::eSurfaceCapabilitiesFullScreenExclusiveEXT;
82948 
82949 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SurfaceCapabilitiesFullScreenExclusiveEXTVULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT82950     VULKAN_HPP_CONSTEXPR SurfaceCapabilitiesFullScreenExclusiveEXT(
82951       VULKAN_HPP_NAMESPACE::Bool32 fullScreenExclusiveSupported_ = {} ) VULKAN_HPP_NOEXCEPT
82952       : fullScreenExclusiveSupported( fullScreenExclusiveSupported_ )
82953     {}
82954 
82955     VULKAN_HPP_CONSTEXPR SurfaceCapabilitiesFullScreenExclusiveEXT(
82956       SurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82957 
SurfaceCapabilitiesFullScreenExclusiveEXTVULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT82958     SurfaceCapabilitiesFullScreenExclusiveEXT( VkSurfaceCapabilitiesFullScreenExclusiveEXT const & rhs )
82959       VULKAN_HPP_NOEXCEPT
82960       : SurfaceCapabilitiesFullScreenExclusiveEXT(
82961           *reinterpret_cast<SurfaceCapabilitiesFullScreenExclusiveEXT const *>( &rhs ) )
82962     {}
82963 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
82964 
82965     SurfaceCapabilitiesFullScreenExclusiveEXT &
82966       operator=( SurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82967 
82968     SurfaceCapabilitiesFullScreenExclusiveEXT &
operator =VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT82969       operator=( VkSurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) VULKAN_HPP_NOEXCEPT
82970     {
82971       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT const *>( &rhs );
82972       return *this;
82973     }
82974 
82975 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT82976     VULKAN_HPP_CONSTEXPR_14 SurfaceCapabilitiesFullScreenExclusiveEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
82977     {
82978       pNext = pNext_;
82979       return *this;
82980     }
82981 
82982     VULKAN_HPP_CONSTEXPR_14 SurfaceCapabilitiesFullScreenExclusiveEXT &
setFullScreenExclusiveSupportedVULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT82983       setFullScreenExclusiveSupported( VULKAN_HPP_NAMESPACE::Bool32 fullScreenExclusiveSupported_ ) VULKAN_HPP_NOEXCEPT
82984     {
82985       fullScreenExclusiveSupported = fullScreenExclusiveSupported_;
82986       return *this;
82987     }
82988 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
82989 
operator VkSurfaceCapabilitiesFullScreenExclusiveEXT const&VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT82990     explicit operator VkSurfaceCapabilitiesFullScreenExclusiveEXT const &() const VULKAN_HPP_NOEXCEPT
82991     {
82992       return *reinterpret_cast<const VkSurfaceCapabilitiesFullScreenExclusiveEXT *>( this );
82993     }
82994 
operator VkSurfaceCapabilitiesFullScreenExclusiveEXT&VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT82995     explicit operator VkSurfaceCapabilitiesFullScreenExclusiveEXT &() VULKAN_HPP_NOEXCEPT
82996     {
82997       return *reinterpret_cast<VkSurfaceCapabilitiesFullScreenExclusiveEXT *>( this );
82998     }
82999 
83000 #  if 14 <= VULKAN_HPP_CPP_VERSION
83001     auto
83002 #  else
83003     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
83004 #  endif
reflectVULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT83005       reflect() const VULKAN_HPP_NOEXCEPT
83006     {
83007       return std::tie( sType, pNext, fullScreenExclusiveSupported );
83008     }
83009 
83010 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
83011     auto operator<=>( SurfaceCapabilitiesFullScreenExclusiveEXT const & ) const = default;
83012 #  else
operator ==VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT83013     bool operator==( SurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
83014     {
83015       return this->reflect() == rhs.reflect();
83016     }
83017 
operator !=VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT83018     bool operator!=( SurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
83019     {
83020       return this->reflect() != rhs.reflect();
83021     }
83022 #  endif
83023 
83024   public:
83025     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSurfaceCapabilitiesFullScreenExclusiveEXT;
83026     void *                              pNext = {};
83027     VULKAN_HPP_NAMESPACE::Bool32        fullScreenExclusiveSupported = {};
83028   };
83029   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT ) ==
83030                               sizeof( VkSurfaceCapabilitiesFullScreenExclusiveEXT ),
83031                             "struct and wrapper have different size!" );
83032   VULKAN_HPP_STATIC_ASSERT(
83033     std::is_standard_layout<VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT>::value,
83034     "struct wrapper is not a standard layout!" );
83035   VULKAN_HPP_STATIC_ASSERT(
83036     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT>::value,
83037     "SurfaceCapabilitiesFullScreenExclusiveEXT is not nothrow_move_constructible!" );
83038 
83039   template <>
83040   struct CppType<StructureType, StructureType::eSurfaceCapabilitiesFullScreenExclusiveEXT>
83041   {
83042     using Type = SurfaceCapabilitiesFullScreenExclusiveEXT;
83043   };
83044 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
83045 
83046   struct SurfaceFormatKHR
83047   {
83048     using NativeType = VkSurfaceFormatKHR;
83049 
83050 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
83051     VULKAN_HPP_CONSTEXPR
SurfaceFormatKHRVULKAN_HPP_NAMESPACE::SurfaceFormatKHR83052       SurfaceFormatKHR( VULKAN_HPP_NAMESPACE::Format        format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined,
83053                         VULKAN_HPP_NAMESPACE::ColorSpaceKHR colorSpace_ =
83054                           VULKAN_HPP_NAMESPACE::ColorSpaceKHR::eSrgbNonlinear ) VULKAN_HPP_NOEXCEPT
83055       : format( format_ )
83056       , colorSpace( colorSpace_ )
83057     {}
83058 
83059     VULKAN_HPP_CONSTEXPR SurfaceFormatKHR( SurfaceFormatKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83060 
SurfaceFormatKHRVULKAN_HPP_NAMESPACE::SurfaceFormatKHR83061     SurfaceFormatKHR( VkSurfaceFormatKHR const & rhs ) VULKAN_HPP_NOEXCEPT
83062       : SurfaceFormatKHR( *reinterpret_cast<SurfaceFormatKHR const *>( &rhs ) )
83063     {}
83064 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
83065 
83066     SurfaceFormatKHR & operator=( SurfaceFormatKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83067 
operator =VULKAN_HPP_NAMESPACE::SurfaceFormatKHR83068     SurfaceFormatKHR & operator=( VkSurfaceFormatKHR const & rhs ) VULKAN_HPP_NOEXCEPT
83069     {
83070       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceFormatKHR const *>( &rhs );
83071       return *this;
83072     }
83073 
operator VkSurfaceFormatKHR const&VULKAN_HPP_NAMESPACE::SurfaceFormatKHR83074     explicit operator VkSurfaceFormatKHR const &() const VULKAN_HPP_NOEXCEPT
83075     {
83076       return *reinterpret_cast<const VkSurfaceFormatKHR *>( this );
83077     }
83078 
operator VkSurfaceFormatKHR&VULKAN_HPP_NAMESPACE::SurfaceFormatKHR83079     explicit operator VkSurfaceFormatKHR &() VULKAN_HPP_NOEXCEPT
83080     {
83081       return *reinterpret_cast<VkSurfaceFormatKHR *>( this );
83082     }
83083 
83084 #if 14 <= VULKAN_HPP_CPP_VERSION
83085     auto
83086 #else
83087     std::tuple<VULKAN_HPP_NAMESPACE::Format const &, VULKAN_HPP_NAMESPACE::ColorSpaceKHR const &>
83088 #endif
reflectVULKAN_HPP_NAMESPACE::SurfaceFormatKHR83089       reflect() const VULKAN_HPP_NOEXCEPT
83090     {
83091       return std::tie( format, colorSpace );
83092     }
83093 
83094 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
83095     auto operator<=>( SurfaceFormatKHR const & ) const = default;
83096 #else
operator ==VULKAN_HPP_NAMESPACE::SurfaceFormatKHR83097     bool operator==( SurfaceFormatKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
83098     {
83099       return this->reflect() == rhs.reflect();
83100     }
83101 
operator !=VULKAN_HPP_NAMESPACE::SurfaceFormatKHR83102     bool operator!=( SurfaceFormatKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
83103     {
83104       return this->reflect() != rhs.reflect();
83105     }
83106 #endif
83107 
83108   public:
83109     VULKAN_HPP_NAMESPACE::Format        format     = VULKAN_HPP_NAMESPACE::Format::eUndefined;
83110     VULKAN_HPP_NAMESPACE::ColorSpaceKHR colorSpace = VULKAN_HPP_NAMESPACE::ColorSpaceKHR::eSrgbNonlinear;
83111   };
83112   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SurfaceFormatKHR ) == sizeof( VkSurfaceFormatKHR ),
83113                             "struct and wrapper have different size!" );
83114   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SurfaceFormatKHR>::value,
83115                             "struct wrapper is not a standard layout!" );
83116   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SurfaceFormatKHR>::value,
83117                             "SurfaceFormatKHR is not nothrow_move_constructible!" );
83118 
83119   struct SurfaceFormat2KHR
83120   {
83121     using NativeType = VkSurfaceFormat2KHR;
83122 
83123     static const bool                                  allowDuplicate = false;
83124     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSurfaceFormat2KHR;
83125 
83126 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
83127     VULKAN_HPP_CONSTEXPR
SurfaceFormat2KHRVULKAN_HPP_NAMESPACE::SurfaceFormat2KHR83128       SurfaceFormat2KHR( VULKAN_HPP_NAMESPACE::SurfaceFormatKHR surfaceFormat_ = {} ) VULKAN_HPP_NOEXCEPT
83129       : surfaceFormat( surfaceFormat_ )
83130     {}
83131 
83132     VULKAN_HPP_CONSTEXPR SurfaceFormat2KHR( SurfaceFormat2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83133 
SurfaceFormat2KHRVULKAN_HPP_NAMESPACE::SurfaceFormat2KHR83134     SurfaceFormat2KHR( VkSurfaceFormat2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
83135       : SurfaceFormat2KHR( *reinterpret_cast<SurfaceFormat2KHR const *>( &rhs ) )
83136     {}
83137 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
83138 
83139     SurfaceFormat2KHR & operator=( SurfaceFormat2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83140 
operator =VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR83141     SurfaceFormat2KHR & operator=( VkSurfaceFormat2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
83142     {
83143       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR const *>( &rhs );
83144       return *this;
83145     }
83146 
operator VkSurfaceFormat2KHR const&VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR83147     explicit operator VkSurfaceFormat2KHR const &() const VULKAN_HPP_NOEXCEPT
83148     {
83149       return *reinterpret_cast<const VkSurfaceFormat2KHR *>( this );
83150     }
83151 
operator VkSurfaceFormat2KHR&VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR83152     explicit operator VkSurfaceFormat2KHR &() VULKAN_HPP_NOEXCEPT
83153     {
83154       return *reinterpret_cast<VkSurfaceFormat2KHR *>( this );
83155     }
83156 
83157 #if 14 <= VULKAN_HPP_CPP_VERSION
83158     auto
83159 #else
83160     std::
83161       tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::SurfaceFormatKHR const &>
83162 #endif
reflectVULKAN_HPP_NAMESPACE::SurfaceFormat2KHR83163       reflect() const VULKAN_HPP_NOEXCEPT
83164     {
83165       return std::tie( sType, pNext, surfaceFormat );
83166     }
83167 
83168 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
83169     auto operator<=>( SurfaceFormat2KHR const & ) const = default;
83170 #else
operator ==VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR83171     bool operator==( SurfaceFormat2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
83172     {
83173       return this->reflect() == rhs.reflect();
83174     }
83175 
operator !=VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR83176     bool operator!=( SurfaceFormat2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
83177     {
83178       return this->reflect() != rhs.reflect();
83179     }
83180 #endif
83181 
83182   public:
83183     VULKAN_HPP_NAMESPACE::StructureType    sType         = StructureType::eSurfaceFormat2KHR;
83184     void *                                 pNext         = {};
83185     VULKAN_HPP_NAMESPACE::SurfaceFormatKHR surfaceFormat = {};
83186   };
83187   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR ) == sizeof( VkSurfaceFormat2KHR ),
83188                             "struct and wrapper have different size!" );
83189   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR>::value,
83190                             "struct wrapper is not a standard layout!" );
83191   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR>::value,
83192                             "SurfaceFormat2KHR is not nothrow_move_constructible!" );
83193 
83194   template <>
83195   struct CppType<StructureType, StructureType::eSurfaceFormat2KHR>
83196   {
83197     using Type = SurfaceFormat2KHR;
83198   };
83199 
83200 #if defined( VK_USE_PLATFORM_WIN32_KHR )
83201   struct SurfaceFullScreenExclusiveInfoEXT
83202   {
83203     using NativeType = VkSurfaceFullScreenExclusiveInfoEXT;
83204 
83205     static const bool                                  allowDuplicate = false;
83206     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
83207       StructureType::eSurfaceFullScreenExclusiveInfoEXT;
83208 
83209 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
83210     VULKAN_HPP_CONSTEXPR
SurfaceFullScreenExclusiveInfoEXTVULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT83211       SurfaceFullScreenExclusiveInfoEXT( VULKAN_HPP_NAMESPACE::FullScreenExclusiveEXT fullScreenExclusive_ =
83212                                            VULKAN_HPP_NAMESPACE::FullScreenExclusiveEXT::eDefault ) VULKAN_HPP_NOEXCEPT
83213       : fullScreenExclusive( fullScreenExclusive_ )
83214     {}
83215 
83216     VULKAN_HPP_CONSTEXPR
83217       SurfaceFullScreenExclusiveInfoEXT( SurfaceFullScreenExclusiveInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83218 
SurfaceFullScreenExclusiveInfoEXTVULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT83219     SurfaceFullScreenExclusiveInfoEXT( VkSurfaceFullScreenExclusiveInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
83220       : SurfaceFullScreenExclusiveInfoEXT( *reinterpret_cast<SurfaceFullScreenExclusiveInfoEXT const *>( &rhs ) )
83221     {}
83222 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
83223 
83224     SurfaceFullScreenExclusiveInfoEXT &
83225       operator=( SurfaceFullScreenExclusiveInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83226 
operator =VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT83227     SurfaceFullScreenExclusiveInfoEXT & operator=( VkSurfaceFullScreenExclusiveInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
83228     {
83229       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT const *>( &rhs );
83230       return *this;
83231     }
83232 
83233 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT83234     VULKAN_HPP_CONSTEXPR_14 SurfaceFullScreenExclusiveInfoEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
83235     {
83236       pNext = pNext_;
83237       return *this;
83238     }
83239 
83240     VULKAN_HPP_CONSTEXPR_14 SurfaceFullScreenExclusiveInfoEXT &
setFullScreenExclusiveVULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT83241       setFullScreenExclusive( VULKAN_HPP_NAMESPACE::FullScreenExclusiveEXT fullScreenExclusive_ ) VULKAN_HPP_NOEXCEPT
83242     {
83243       fullScreenExclusive = fullScreenExclusive_;
83244       return *this;
83245     }
83246 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
83247 
operator VkSurfaceFullScreenExclusiveInfoEXT const&VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT83248     explicit operator VkSurfaceFullScreenExclusiveInfoEXT const &() const VULKAN_HPP_NOEXCEPT
83249     {
83250       return *reinterpret_cast<const VkSurfaceFullScreenExclusiveInfoEXT *>( this );
83251     }
83252 
operator VkSurfaceFullScreenExclusiveInfoEXT&VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT83253     explicit operator VkSurfaceFullScreenExclusiveInfoEXT &() VULKAN_HPP_NOEXCEPT
83254     {
83255       return *reinterpret_cast<VkSurfaceFullScreenExclusiveInfoEXT *>( this );
83256     }
83257 
83258 #  if 14 <= VULKAN_HPP_CPP_VERSION
83259     auto
83260 #  else
83261     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
83262                void * const &,
83263                VULKAN_HPP_NAMESPACE::FullScreenExclusiveEXT const &>
83264 #  endif
reflectVULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT83265       reflect() const VULKAN_HPP_NOEXCEPT
83266     {
83267       return std::tie( sType, pNext, fullScreenExclusive );
83268     }
83269 
83270 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
83271     auto operator<=>( SurfaceFullScreenExclusiveInfoEXT const & ) const = default;
83272 #  else
operator ==VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT83273     bool operator==( SurfaceFullScreenExclusiveInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
83274     {
83275       return this->reflect() == rhs.reflect();
83276     }
83277 
operator !=VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT83278     bool operator!=( SurfaceFullScreenExclusiveInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
83279     {
83280       return this->reflect() != rhs.reflect();
83281     }
83282 #  endif
83283 
83284   public:
83285     VULKAN_HPP_NAMESPACE::StructureType          sType = StructureType::eSurfaceFullScreenExclusiveInfoEXT;
83286     void *                                       pNext = {};
83287     VULKAN_HPP_NAMESPACE::FullScreenExclusiveEXT fullScreenExclusive =
83288       VULKAN_HPP_NAMESPACE::FullScreenExclusiveEXT::eDefault;
83289   };
83290   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT ) ==
83291                               sizeof( VkSurfaceFullScreenExclusiveInfoEXT ),
83292                             "struct and wrapper have different size!" );
83293   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT>::value,
83294                             "struct wrapper is not a standard layout!" );
83295   VULKAN_HPP_STATIC_ASSERT(
83296     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT>::value,
83297     "SurfaceFullScreenExclusiveInfoEXT is not nothrow_move_constructible!" );
83298 
83299   template <>
83300   struct CppType<StructureType, StructureType::eSurfaceFullScreenExclusiveInfoEXT>
83301   {
83302     using Type = SurfaceFullScreenExclusiveInfoEXT;
83303   };
83304 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
83305 
83306 #if defined( VK_USE_PLATFORM_WIN32_KHR )
83307   struct SurfaceFullScreenExclusiveWin32InfoEXT
83308   {
83309     using NativeType = VkSurfaceFullScreenExclusiveWin32InfoEXT;
83310 
83311     static const bool                                  allowDuplicate = false;
83312     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
83313       StructureType::eSurfaceFullScreenExclusiveWin32InfoEXT;
83314 
83315 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SurfaceFullScreenExclusiveWin32InfoEXTVULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT83316     VULKAN_HPP_CONSTEXPR SurfaceFullScreenExclusiveWin32InfoEXT( HMONITOR hmonitor_ = {} ) VULKAN_HPP_NOEXCEPT
83317       : hmonitor( hmonitor_ )
83318     {}
83319 
83320     VULKAN_HPP_CONSTEXPR SurfaceFullScreenExclusiveWin32InfoEXT( SurfaceFullScreenExclusiveWin32InfoEXT const & rhs )
83321       VULKAN_HPP_NOEXCEPT = default;
83322 
SurfaceFullScreenExclusiveWin32InfoEXTVULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT83323     SurfaceFullScreenExclusiveWin32InfoEXT( VkSurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
83324       : SurfaceFullScreenExclusiveWin32InfoEXT(
83325           *reinterpret_cast<SurfaceFullScreenExclusiveWin32InfoEXT const *>( &rhs ) )
83326     {}
83327 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
83328 
83329     SurfaceFullScreenExclusiveWin32InfoEXT &
83330       operator=( SurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83331 
83332     SurfaceFullScreenExclusiveWin32InfoEXT &
operator =VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT83333       operator=( VkSurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
83334     {
83335       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT const *>( &rhs );
83336       return *this;
83337     }
83338 
83339 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT83340     VULKAN_HPP_CONSTEXPR_14 SurfaceFullScreenExclusiveWin32InfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
83341     {
83342       pNext = pNext_;
83343       return *this;
83344     }
83345 
83346     VULKAN_HPP_CONSTEXPR_14 SurfaceFullScreenExclusiveWin32InfoEXT &
setHmonitorVULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT83347                             setHmonitor( HMONITOR hmonitor_ ) VULKAN_HPP_NOEXCEPT
83348     {
83349       hmonitor = hmonitor_;
83350       return *this;
83351     }
83352 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
83353 
operator VkSurfaceFullScreenExclusiveWin32InfoEXT const&VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT83354     explicit operator VkSurfaceFullScreenExclusiveWin32InfoEXT const &() const VULKAN_HPP_NOEXCEPT
83355     {
83356       return *reinterpret_cast<const VkSurfaceFullScreenExclusiveWin32InfoEXT *>( this );
83357     }
83358 
operator VkSurfaceFullScreenExclusiveWin32InfoEXT&VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT83359     explicit operator VkSurfaceFullScreenExclusiveWin32InfoEXT &() VULKAN_HPP_NOEXCEPT
83360     {
83361       return *reinterpret_cast<VkSurfaceFullScreenExclusiveWin32InfoEXT *>( this );
83362     }
83363 
83364 #  if 14 <= VULKAN_HPP_CPP_VERSION
83365     auto
83366 #  else
83367     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, HMONITOR const &>
83368 #  endif
reflectVULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT83369       reflect() const VULKAN_HPP_NOEXCEPT
83370     {
83371       return std::tie( sType, pNext, hmonitor );
83372     }
83373 
83374 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
83375     auto operator<=>( SurfaceFullScreenExclusiveWin32InfoEXT const & ) const = default;
83376 #  else
operator ==VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT83377     bool operator==( SurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
83378     {
83379       return this->reflect() == rhs.reflect();
83380     }
83381 
operator !=VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT83382     bool operator!=( SurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
83383     {
83384       return this->reflect() != rhs.reflect();
83385     }
83386 #  endif
83387 
83388   public:
83389     VULKAN_HPP_NAMESPACE::StructureType sType    = StructureType::eSurfaceFullScreenExclusiveWin32InfoEXT;
83390     const void *                        pNext    = {};
83391     HMONITOR                            hmonitor = {};
83392   };
83393   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT ) ==
83394                               sizeof( VkSurfaceFullScreenExclusiveWin32InfoEXT ),
83395                             "struct and wrapper have different size!" );
83396   VULKAN_HPP_STATIC_ASSERT(
83397     std::is_standard_layout<VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT>::value,
83398     "struct wrapper is not a standard layout!" );
83399   VULKAN_HPP_STATIC_ASSERT(
83400     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT>::value,
83401     "SurfaceFullScreenExclusiveWin32InfoEXT is not nothrow_move_constructible!" );
83402 
83403   template <>
83404   struct CppType<StructureType, StructureType::eSurfaceFullScreenExclusiveWin32InfoEXT>
83405   {
83406     using Type = SurfaceFullScreenExclusiveWin32InfoEXT;
83407   };
83408 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
83409 
83410   struct SurfaceProtectedCapabilitiesKHR
83411   {
83412     using NativeType = VkSurfaceProtectedCapabilitiesKHR;
83413 
83414     static const bool                                  allowDuplicate = false;
83415     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSurfaceProtectedCapabilitiesKHR;
83416 
83417 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
83418     VULKAN_HPP_CONSTEXPR
SurfaceProtectedCapabilitiesKHRVULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR83419       SurfaceProtectedCapabilitiesKHR( VULKAN_HPP_NAMESPACE::Bool32 supportsProtected_ = {} ) VULKAN_HPP_NOEXCEPT
83420       : supportsProtected( supportsProtected_ )
83421     {}
83422 
83423     VULKAN_HPP_CONSTEXPR
83424       SurfaceProtectedCapabilitiesKHR( SurfaceProtectedCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83425 
SurfaceProtectedCapabilitiesKHRVULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR83426     SurfaceProtectedCapabilitiesKHR( VkSurfaceProtectedCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
83427       : SurfaceProtectedCapabilitiesKHR( *reinterpret_cast<SurfaceProtectedCapabilitiesKHR const *>( &rhs ) )
83428     {}
83429 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
83430 
83431     SurfaceProtectedCapabilitiesKHR &
83432       operator=( SurfaceProtectedCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83433 
operator =VULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR83434     SurfaceProtectedCapabilitiesKHR & operator=( VkSurfaceProtectedCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
83435     {
83436       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR const *>( &rhs );
83437       return *this;
83438     }
83439 
83440 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR83441     VULKAN_HPP_CONSTEXPR_14 SurfaceProtectedCapabilitiesKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
83442     {
83443       pNext = pNext_;
83444       return *this;
83445     }
83446 
83447     VULKAN_HPP_CONSTEXPR_14 SurfaceProtectedCapabilitiesKHR &
setSupportsProtectedVULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR83448                             setSupportsProtected( VULKAN_HPP_NAMESPACE::Bool32 supportsProtected_ ) VULKAN_HPP_NOEXCEPT
83449     {
83450       supportsProtected = supportsProtected_;
83451       return *this;
83452     }
83453 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
83454 
operator VkSurfaceProtectedCapabilitiesKHR const&VULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR83455     explicit operator VkSurfaceProtectedCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT
83456     {
83457       return *reinterpret_cast<const VkSurfaceProtectedCapabilitiesKHR *>( this );
83458     }
83459 
operator VkSurfaceProtectedCapabilitiesKHR&VULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR83460     explicit operator VkSurfaceProtectedCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT
83461     {
83462       return *reinterpret_cast<VkSurfaceProtectedCapabilitiesKHR *>( this );
83463     }
83464 
83465 #if 14 <= VULKAN_HPP_CPP_VERSION
83466     auto
83467 #else
83468     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
83469 #endif
reflectVULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR83470       reflect() const VULKAN_HPP_NOEXCEPT
83471     {
83472       return std::tie( sType, pNext, supportsProtected );
83473     }
83474 
83475 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
83476     auto operator<=>( SurfaceProtectedCapabilitiesKHR const & ) const = default;
83477 #else
operator ==VULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR83478     bool operator==( SurfaceProtectedCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
83479     {
83480       return this->reflect() == rhs.reflect();
83481     }
83482 
operator !=VULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR83483     bool operator!=( SurfaceProtectedCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
83484     {
83485       return this->reflect() != rhs.reflect();
83486     }
83487 #endif
83488 
83489   public:
83490     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::eSurfaceProtectedCapabilitiesKHR;
83491     const void *                        pNext             = {};
83492     VULKAN_HPP_NAMESPACE::Bool32        supportsProtected = {};
83493   };
83494   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR ) ==
83495                               sizeof( VkSurfaceProtectedCapabilitiesKHR ),
83496                             "struct and wrapper have different size!" );
83497   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR>::value,
83498                             "struct wrapper is not a standard layout!" );
83499   VULKAN_HPP_STATIC_ASSERT(
83500     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR>::value,
83501     "SurfaceProtectedCapabilitiesKHR is not nothrow_move_constructible!" );
83502 
83503   template <>
83504   struct CppType<StructureType, StructureType::eSurfaceProtectedCapabilitiesKHR>
83505   {
83506     using Type = SurfaceProtectedCapabilitiesKHR;
83507   };
83508 
83509   struct SwapchainCounterCreateInfoEXT
83510   {
83511     using NativeType = VkSwapchainCounterCreateInfoEXT;
83512 
83513     static const bool                                  allowDuplicate = false;
83514     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSwapchainCounterCreateInfoEXT;
83515 
83516 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SwapchainCounterCreateInfoEXTVULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT83517     VULKAN_HPP_CONSTEXPR SwapchainCounterCreateInfoEXT(
83518       VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT surfaceCounters_ = {} ) VULKAN_HPP_NOEXCEPT
83519       : surfaceCounters( surfaceCounters_ )
83520     {}
83521 
83522     VULKAN_HPP_CONSTEXPR
83523       SwapchainCounterCreateInfoEXT( SwapchainCounterCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83524 
SwapchainCounterCreateInfoEXTVULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT83525     SwapchainCounterCreateInfoEXT( VkSwapchainCounterCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
83526       : SwapchainCounterCreateInfoEXT( *reinterpret_cast<SwapchainCounterCreateInfoEXT const *>( &rhs ) )
83527     {}
83528 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
83529 
83530     SwapchainCounterCreateInfoEXT &
83531       operator=( SwapchainCounterCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83532 
operator =VULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT83533     SwapchainCounterCreateInfoEXT & operator=( VkSwapchainCounterCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
83534     {
83535       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT const *>( &rhs );
83536       return *this;
83537     }
83538 
83539 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT83540     VULKAN_HPP_CONSTEXPR_14 SwapchainCounterCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
83541     {
83542       pNext = pNext_;
83543       return *this;
83544     }
83545 
83546     VULKAN_HPP_CONSTEXPR_14 SwapchainCounterCreateInfoEXT &
setSurfaceCountersVULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT83547       setSurfaceCounters( VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT surfaceCounters_ ) VULKAN_HPP_NOEXCEPT
83548     {
83549       surfaceCounters = surfaceCounters_;
83550       return *this;
83551     }
83552 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
83553 
operator VkSwapchainCounterCreateInfoEXT const&VULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT83554     explicit operator VkSwapchainCounterCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
83555     {
83556       return *reinterpret_cast<const VkSwapchainCounterCreateInfoEXT *>( this );
83557     }
83558 
operator VkSwapchainCounterCreateInfoEXT&VULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT83559     explicit operator VkSwapchainCounterCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
83560     {
83561       return *reinterpret_cast<VkSwapchainCounterCreateInfoEXT *>( this );
83562     }
83563 
83564 #if 14 <= VULKAN_HPP_CPP_VERSION
83565     auto
83566 #else
83567     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
83568                const void * const &,
83569                VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT const &>
83570 #endif
reflectVULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT83571       reflect() const VULKAN_HPP_NOEXCEPT
83572     {
83573       return std::tie( sType, pNext, surfaceCounters );
83574     }
83575 
83576 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
83577     auto operator<=>( SwapchainCounterCreateInfoEXT const & ) const = default;
83578 #else
operator ==VULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT83579     bool operator==( SwapchainCounterCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
83580     {
83581       return this->reflect() == rhs.reflect();
83582     }
83583 
operator !=VULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT83584     bool operator!=( SwapchainCounterCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
83585     {
83586       return this->reflect() != rhs.reflect();
83587     }
83588 #endif
83589 
83590   public:
83591     VULKAN_HPP_NAMESPACE::StructureType          sType           = StructureType::eSwapchainCounterCreateInfoEXT;
83592     const void *                                 pNext           = {};
83593     VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT surfaceCounters = {};
83594   };
83595   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT ) ==
83596                               sizeof( VkSwapchainCounterCreateInfoEXT ),
83597                             "struct and wrapper have different size!" );
83598   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT>::value,
83599                             "struct wrapper is not a standard layout!" );
83600   VULKAN_HPP_STATIC_ASSERT(
83601     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT>::value,
83602     "SwapchainCounterCreateInfoEXT is not nothrow_move_constructible!" );
83603 
83604   template <>
83605   struct CppType<StructureType, StructureType::eSwapchainCounterCreateInfoEXT>
83606   {
83607     using Type = SwapchainCounterCreateInfoEXT;
83608   };
83609 
83610   struct SwapchainCreateInfoKHR
83611   {
83612     using NativeType = VkSwapchainCreateInfoKHR;
83613 
83614     static const bool                                  allowDuplicate = false;
83615     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSwapchainCreateInfoKHR;
83616 
83617 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SwapchainCreateInfoKHRVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR83618     VULKAN_HPP_CONSTEXPR SwapchainCreateInfoKHR(
83619       VULKAN_HPP_NAMESPACE::SwapchainCreateFlagsKHR flags_         = {},
83620       VULKAN_HPP_NAMESPACE::SurfaceKHR              surface_       = {},
83621       uint32_t                                      minImageCount_ = {},
83622       VULKAN_HPP_NAMESPACE::Format                  imageFormat_   = VULKAN_HPP_NAMESPACE::Format::eUndefined,
83623       VULKAN_HPP_NAMESPACE::ColorSpaceKHR   imageColorSpace_  = VULKAN_HPP_NAMESPACE::ColorSpaceKHR::eSrgbNonlinear,
83624       VULKAN_HPP_NAMESPACE::Extent2D        imageExtent_      = {},
83625       uint32_t                              imageArrayLayers_ = {},
83626       VULKAN_HPP_NAMESPACE::ImageUsageFlags imageUsage_       = {},
83627       VULKAN_HPP_NAMESPACE::SharingMode     imageSharingMode_ = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive,
83628       uint32_t                              queueFamilyIndexCount_ = {},
83629       const uint32_t *                      pQueueFamilyIndices_   = {},
83630       VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR preTransform_ =
83631         VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity,
83632       VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR compositeAlpha_ =
83633         VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR::eOpaque,
83634       VULKAN_HPP_NAMESPACE::PresentModeKHR presentMode_  = VULKAN_HPP_NAMESPACE::PresentModeKHR::eImmediate,
83635       VULKAN_HPP_NAMESPACE::Bool32         clipped_      = {},
83636       VULKAN_HPP_NAMESPACE::SwapchainKHR   oldSwapchain_ = {} ) VULKAN_HPP_NOEXCEPT
83637       : flags( flags_ )
83638       , surface( surface_ )
83639       , minImageCount( minImageCount_ )
83640       , imageFormat( imageFormat_ )
83641       , imageColorSpace( imageColorSpace_ )
83642       , imageExtent( imageExtent_ )
83643       , imageArrayLayers( imageArrayLayers_ )
83644       , imageUsage( imageUsage_ )
83645       , imageSharingMode( imageSharingMode_ )
83646       , queueFamilyIndexCount( queueFamilyIndexCount_ )
83647       , pQueueFamilyIndices( pQueueFamilyIndices_ )
83648       , preTransform( preTransform_ )
83649       , compositeAlpha( compositeAlpha_ )
83650       , presentMode( presentMode_ )
83651       , clipped( clipped_ )
83652       , oldSwapchain( oldSwapchain_ )
83653     {}
83654 
83655     VULKAN_HPP_CONSTEXPR SwapchainCreateInfoKHR( SwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83656 
SwapchainCreateInfoKHRVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR83657     SwapchainCreateInfoKHR( VkSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
83658       : SwapchainCreateInfoKHR( *reinterpret_cast<SwapchainCreateInfoKHR const *>( &rhs ) )
83659     {}
83660 
83661 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SwapchainCreateInfoKHRVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR83662     SwapchainCreateInfoKHR(
83663       VULKAN_HPP_NAMESPACE::SwapchainCreateFlagsKHR                         flags_,
83664       VULKAN_HPP_NAMESPACE::SurfaceKHR                                      surface_,
83665       uint32_t                                                              minImageCount_,
83666       VULKAN_HPP_NAMESPACE::Format                                          imageFormat_,
83667       VULKAN_HPP_NAMESPACE::ColorSpaceKHR                                   imageColorSpace_,
83668       VULKAN_HPP_NAMESPACE::Extent2D                                        imageExtent_,
83669       uint32_t                                                              imageArrayLayers_,
83670       VULKAN_HPP_NAMESPACE::ImageUsageFlags                                 imageUsage_,
83671       VULKAN_HPP_NAMESPACE::SharingMode                                     imageSharingMode_,
83672       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & queueFamilyIndices_,
83673       VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR                     preTransform_ =
83674         VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity,
83675       VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR compositeAlpha_ =
83676         VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR::eOpaque,
83677       VULKAN_HPP_NAMESPACE::PresentModeKHR presentMode_  = VULKAN_HPP_NAMESPACE::PresentModeKHR::eImmediate,
83678       VULKAN_HPP_NAMESPACE::Bool32         clipped_      = {},
83679       VULKAN_HPP_NAMESPACE::SwapchainKHR   oldSwapchain_ = {} )
83680       : flags( flags_ )
83681       , surface( surface_ )
83682       , minImageCount( minImageCount_ )
83683       , imageFormat( imageFormat_ )
83684       , imageColorSpace( imageColorSpace_ )
83685       , imageExtent( imageExtent_ )
83686       , imageArrayLayers( imageArrayLayers_ )
83687       , imageUsage( imageUsage_ )
83688       , imageSharingMode( imageSharingMode_ )
83689       , queueFamilyIndexCount( static_cast<uint32_t>( queueFamilyIndices_.size() ) )
83690       , pQueueFamilyIndices( queueFamilyIndices_.data() )
83691       , preTransform( preTransform_ )
83692       , compositeAlpha( compositeAlpha_ )
83693       , presentMode( presentMode_ )
83694       , clipped( clipped_ )
83695       , oldSwapchain( oldSwapchain_ )
83696     {}
83697 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
83698 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
83699 
83700     SwapchainCreateInfoKHR & operator=( SwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83701 
operator =VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR83702     SwapchainCreateInfoKHR & operator=( VkSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
83703     {
83704       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR const *>( &rhs );
83705       return *this;
83706     }
83707 
83708 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR83709     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
83710     {
83711       pNext = pNext_;
83712       return *this;
83713     }
83714 
83715     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR &
setFlagsVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR83716                             setFlags( VULKAN_HPP_NAMESPACE::SwapchainCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
83717     {
83718       flags = flags_;
83719       return *this;
83720     }
83721 
83722     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR &
setSurfaceVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR83723                             setSurface( VULKAN_HPP_NAMESPACE::SurfaceKHR surface_ ) VULKAN_HPP_NOEXCEPT
83724     {
83725       surface = surface_;
83726       return *this;
83727     }
83728 
setMinImageCountVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR83729     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setMinImageCount( uint32_t minImageCount_ ) VULKAN_HPP_NOEXCEPT
83730     {
83731       minImageCount = minImageCount_;
83732       return *this;
83733     }
83734 
83735     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR &
setImageFormatVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR83736                             setImageFormat( VULKAN_HPP_NAMESPACE::Format imageFormat_ ) VULKAN_HPP_NOEXCEPT
83737     {
83738       imageFormat = imageFormat_;
83739       return *this;
83740     }
83741 
83742     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR &
setImageColorSpaceVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR83743       setImageColorSpace( VULKAN_HPP_NAMESPACE::ColorSpaceKHR imageColorSpace_ ) VULKAN_HPP_NOEXCEPT
83744     {
83745       imageColorSpace = imageColorSpace_;
83746       return *this;
83747     }
83748 
83749     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR &
setImageExtentVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR83750                             setImageExtent( VULKAN_HPP_NAMESPACE::Extent2D const & imageExtent_ ) VULKAN_HPP_NOEXCEPT
83751     {
83752       imageExtent = imageExtent_;
83753       return *this;
83754     }
83755 
83756     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR &
setImageArrayLayersVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR83757                             setImageArrayLayers( uint32_t imageArrayLayers_ ) VULKAN_HPP_NOEXCEPT
83758     {
83759       imageArrayLayers = imageArrayLayers_;
83760       return *this;
83761     }
83762 
83763     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR &
setImageUsageVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR83764                             setImageUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags imageUsage_ ) VULKAN_HPP_NOEXCEPT
83765     {
83766       imageUsage = imageUsage_;
83767       return *this;
83768     }
83769 
83770     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR &
setImageSharingModeVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR83771       setImageSharingMode( VULKAN_HPP_NAMESPACE::SharingMode imageSharingMode_ ) VULKAN_HPP_NOEXCEPT
83772     {
83773       imageSharingMode = imageSharingMode_;
83774       return *this;
83775     }
83776 
83777     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR &
setQueueFamilyIndexCountVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR83778                             setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) VULKAN_HPP_NOEXCEPT
83779     {
83780       queueFamilyIndexCount = queueFamilyIndexCount_;
83781       return *this;
83782     }
83783 
83784     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR &
setPQueueFamilyIndicesVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR83785                             setPQueueFamilyIndices( const uint32_t * pQueueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT
83786     {
83787       pQueueFamilyIndices = pQueueFamilyIndices_;
83788       return *this;
83789     }
83790 
83791 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setQueueFamilyIndicesVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR83792     SwapchainCreateInfoKHR & setQueueFamilyIndices(
83793       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & queueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT
83794     {
83795       queueFamilyIndexCount = static_cast<uint32_t>( queueFamilyIndices_.size() );
83796       pQueueFamilyIndices   = queueFamilyIndices_.data();
83797       return *this;
83798     }
83799 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
83800 
83801     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR &
setPreTransformVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR83802       setPreTransform( VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR preTransform_ ) VULKAN_HPP_NOEXCEPT
83803     {
83804       preTransform = preTransform_;
83805       return *this;
83806     }
83807 
83808     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR &
setCompositeAlphaVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR83809       setCompositeAlpha( VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR compositeAlpha_ ) VULKAN_HPP_NOEXCEPT
83810     {
83811       compositeAlpha = compositeAlpha_;
83812       return *this;
83813     }
83814 
83815     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR &
setPresentModeVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR83816                             setPresentMode( VULKAN_HPP_NAMESPACE::PresentModeKHR presentMode_ ) VULKAN_HPP_NOEXCEPT
83817     {
83818       presentMode = presentMode_;
83819       return *this;
83820     }
83821 
83822     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR &
setClippedVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR83823                             setClipped( VULKAN_HPP_NAMESPACE::Bool32 clipped_ ) VULKAN_HPP_NOEXCEPT
83824     {
83825       clipped = clipped_;
83826       return *this;
83827     }
83828 
83829     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR &
setOldSwapchainVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR83830                             setOldSwapchain( VULKAN_HPP_NAMESPACE::SwapchainKHR oldSwapchain_ ) VULKAN_HPP_NOEXCEPT
83831     {
83832       oldSwapchain = oldSwapchain_;
83833       return *this;
83834     }
83835 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
83836 
operator VkSwapchainCreateInfoKHR const&VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR83837     explicit operator VkSwapchainCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
83838     {
83839       return *reinterpret_cast<const VkSwapchainCreateInfoKHR *>( this );
83840     }
83841 
operator VkSwapchainCreateInfoKHR&VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR83842     explicit operator VkSwapchainCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
83843     {
83844       return *reinterpret_cast<VkSwapchainCreateInfoKHR *>( this );
83845     }
83846 
83847 #if 14 <= VULKAN_HPP_CPP_VERSION
83848     auto
83849 #else
83850     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
83851                const void * const &,
83852                VULKAN_HPP_NAMESPACE::SwapchainCreateFlagsKHR const &,
83853                VULKAN_HPP_NAMESPACE::SurfaceKHR const &,
83854                uint32_t const &,
83855                VULKAN_HPP_NAMESPACE::Format const &,
83856                VULKAN_HPP_NAMESPACE::ColorSpaceKHR const &,
83857                VULKAN_HPP_NAMESPACE::Extent2D const &,
83858                uint32_t const &,
83859                VULKAN_HPP_NAMESPACE::ImageUsageFlags const &,
83860                VULKAN_HPP_NAMESPACE::SharingMode const &,
83861                uint32_t const &,
83862                const uint32_t * const &,
83863                VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR const &,
83864                VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR const &,
83865                VULKAN_HPP_NAMESPACE::PresentModeKHR const &,
83866                VULKAN_HPP_NAMESPACE::Bool32 const &,
83867                VULKAN_HPP_NAMESPACE::SwapchainKHR const &>
83868 #endif
reflectVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR83869       reflect() const VULKAN_HPP_NOEXCEPT
83870     {
83871       return std::tie( sType,
83872                        pNext,
83873                        flags,
83874                        surface,
83875                        minImageCount,
83876                        imageFormat,
83877                        imageColorSpace,
83878                        imageExtent,
83879                        imageArrayLayers,
83880                        imageUsage,
83881                        imageSharingMode,
83882                        queueFamilyIndexCount,
83883                        pQueueFamilyIndices,
83884                        preTransform,
83885                        compositeAlpha,
83886                        presentMode,
83887                        clipped,
83888                        oldSwapchain );
83889     }
83890 
83891 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
83892     auto operator<=>( SwapchainCreateInfoKHR const & ) const = default;
83893 #else
operator ==VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR83894     bool operator==( SwapchainCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
83895     {
83896       return this->reflect() == rhs.reflect();
83897     }
83898 
operator !=VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR83899     bool operator!=( SwapchainCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
83900     {
83901       return this->reflect() != rhs.reflect();
83902     }
83903 #endif
83904 
83905   public:
83906     VULKAN_HPP_NAMESPACE::StructureType           sType           = StructureType::eSwapchainCreateInfoKHR;
83907     const void *                                  pNext           = {};
83908     VULKAN_HPP_NAMESPACE::SwapchainCreateFlagsKHR flags           = {};
83909     VULKAN_HPP_NAMESPACE::SurfaceKHR              surface         = {};
83910     uint32_t                                      minImageCount   = {};
83911     VULKAN_HPP_NAMESPACE::Format                  imageFormat     = VULKAN_HPP_NAMESPACE::Format::eUndefined;
83912     VULKAN_HPP_NAMESPACE::ColorSpaceKHR           imageColorSpace = VULKAN_HPP_NAMESPACE::ColorSpaceKHR::eSrgbNonlinear;
83913     VULKAN_HPP_NAMESPACE::Extent2D                imageExtent     = {};
83914     uint32_t                                      imageArrayLayers      = {};
83915     VULKAN_HPP_NAMESPACE::ImageUsageFlags         imageUsage            = {};
83916     VULKAN_HPP_NAMESPACE::SharingMode             imageSharingMode      = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive;
83917     uint32_t                                      queueFamilyIndexCount = {};
83918     const uint32_t *                              pQueueFamilyIndices   = {};
83919     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR preTransform =
83920       VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity;
83921     VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR compositeAlpha =
83922       VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR::eOpaque;
83923     VULKAN_HPP_NAMESPACE::PresentModeKHR presentMode  = VULKAN_HPP_NAMESPACE::PresentModeKHR::eImmediate;
83924     VULKAN_HPP_NAMESPACE::Bool32         clipped      = {};
83925     VULKAN_HPP_NAMESPACE::SwapchainKHR   oldSwapchain = {};
83926   };
83927   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR ) ==
83928                               sizeof( VkSwapchainCreateInfoKHR ),
83929                             "struct and wrapper have different size!" );
83930   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR>::value,
83931                             "struct wrapper is not a standard layout!" );
83932   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR>::value,
83933                             "SwapchainCreateInfoKHR is not nothrow_move_constructible!" );
83934 
83935   template <>
83936   struct CppType<StructureType, StructureType::eSwapchainCreateInfoKHR>
83937   {
83938     using Type = SwapchainCreateInfoKHR;
83939   };
83940 
83941   struct SwapchainDisplayNativeHdrCreateInfoAMD
83942   {
83943     using NativeType = VkSwapchainDisplayNativeHdrCreateInfoAMD;
83944 
83945     static const bool                                  allowDuplicate = false;
83946     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
83947       StructureType::eSwapchainDisplayNativeHdrCreateInfoAMD;
83948 
83949 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SwapchainDisplayNativeHdrCreateInfoAMDVULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD83950     VULKAN_HPP_CONSTEXPR SwapchainDisplayNativeHdrCreateInfoAMD( VULKAN_HPP_NAMESPACE::Bool32 localDimmingEnable_ = {} )
83951       VULKAN_HPP_NOEXCEPT : localDimmingEnable( localDimmingEnable_ )
83952     {}
83953 
83954     VULKAN_HPP_CONSTEXPR SwapchainDisplayNativeHdrCreateInfoAMD( SwapchainDisplayNativeHdrCreateInfoAMD const & rhs )
83955       VULKAN_HPP_NOEXCEPT = default;
83956 
SwapchainDisplayNativeHdrCreateInfoAMDVULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD83957     SwapchainDisplayNativeHdrCreateInfoAMD( VkSwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
83958       : SwapchainDisplayNativeHdrCreateInfoAMD(
83959           *reinterpret_cast<SwapchainDisplayNativeHdrCreateInfoAMD const *>( &rhs ) )
83960     {}
83961 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
83962 
83963     SwapchainDisplayNativeHdrCreateInfoAMD &
83964       operator=( SwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83965 
83966     SwapchainDisplayNativeHdrCreateInfoAMD &
operator =VULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD83967       operator=( VkSwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
83968     {
83969       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD const *>( &rhs );
83970       return *this;
83971     }
83972 
83973 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD83974     VULKAN_HPP_CONSTEXPR_14 SwapchainDisplayNativeHdrCreateInfoAMD & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
83975     {
83976       pNext = pNext_;
83977       return *this;
83978     }
83979 
83980     VULKAN_HPP_CONSTEXPR_14 SwapchainDisplayNativeHdrCreateInfoAMD &
setLocalDimmingEnableVULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD83981       setLocalDimmingEnable( VULKAN_HPP_NAMESPACE::Bool32 localDimmingEnable_ ) VULKAN_HPP_NOEXCEPT
83982     {
83983       localDimmingEnable = localDimmingEnable_;
83984       return *this;
83985     }
83986 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
83987 
operator VkSwapchainDisplayNativeHdrCreateInfoAMD const&VULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD83988     explicit operator VkSwapchainDisplayNativeHdrCreateInfoAMD const &() const VULKAN_HPP_NOEXCEPT
83989     {
83990       return *reinterpret_cast<const VkSwapchainDisplayNativeHdrCreateInfoAMD *>( this );
83991     }
83992 
operator VkSwapchainDisplayNativeHdrCreateInfoAMD&VULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD83993     explicit operator VkSwapchainDisplayNativeHdrCreateInfoAMD &() VULKAN_HPP_NOEXCEPT
83994     {
83995       return *reinterpret_cast<VkSwapchainDisplayNativeHdrCreateInfoAMD *>( this );
83996     }
83997 
83998 #if 14 <= VULKAN_HPP_CPP_VERSION
83999     auto
84000 #else
84001     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
84002 #endif
reflectVULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD84003       reflect() const VULKAN_HPP_NOEXCEPT
84004     {
84005       return std::tie( sType, pNext, localDimmingEnable );
84006     }
84007 
84008 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
84009     auto operator<=>( SwapchainDisplayNativeHdrCreateInfoAMD const & ) const = default;
84010 #else
operator ==VULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD84011     bool operator==( SwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
84012     {
84013       return this->reflect() == rhs.reflect();
84014     }
84015 
operator !=VULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD84016     bool operator!=( SwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
84017     {
84018       return this->reflect() != rhs.reflect();
84019     }
84020 #endif
84021 
84022   public:
84023     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::eSwapchainDisplayNativeHdrCreateInfoAMD;
84024     const void *                        pNext              = {};
84025     VULKAN_HPP_NAMESPACE::Bool32        localDimmingEnable = {};
84026   };
84027   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD ) ==
84028                               sizeof( VkSwapchainDisplayNativeHdrCreateInfoAMD ),
84029                             "struct and wrapper have different size!" );
84030   VULKAN_HPP_STATIC_ASSERT(
84031     std::is_standard_layout<VULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD>::value,
84032     "struct wrapper is not a standard layout!" );
84033   VULKAN_HPP_STATIC_ASSERT(
84034     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD>::value,
84035     "SwapchainDisplayNativeHdrCreateInfoAMD is not nothrow_move_constructible!" );
84036 
84037   template <>
84038   struct CppType<StructureType, StructureType::eSwapchainDisplayNativeHdrCreateInfoAMD>
84039   {
84040     using Type = SwapchainDisplayNativeHdrCreateInfoAMD;
84041   };
84042 
84043   struct TextureLODGatherFormatPropertiesAMD
84044   {
84045     using NativeType = VkTextureLODGatherFormatPropertiesAMD;
84046 
84047     static const bool                                  allowDuplicate = false;
84048     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
84049       StructureType::eTextureLodGatherFormatPropertiesAMD;
84050 
84051 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
TextureLODGatherFormatPropertiesAMDVULKAN_HPP_NAMESPACE::TextureLODGatherFormatPropertiesAMD84052     VULKAN_HPP_CONSTEXPR TextureLODGatherFormatPropertiesAMD(
84053       VULKAN_HPP_NAMESPACE::Bool32 supportsTextureGatherLODBiasAMD_ = {} ) VULKAN_HPP_NOEXCEPT
84054       : supportsTextureGatherLODBiasAMD( supportsTextureGatherLODBiasAMD_ )
84055     {}
84056 
84057     VULKAN_HPP_CONSTEXPR TextureLODGatherFormatPropertiesAMD( TextureLODGatherFormatPropertiesAMD const & rhs )
84058       VULKAN_HPP_NOEXCEPT = default;
84059 
TextureLODGatherFormatPropertiesAMDVULKAN_HPP_NAMESPACE::TextureLODGatherFormatPropertiesAMD84060     TextureLODGatherFormatPropertiesAMD( VkTextureLODGatherFormatPropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
84061       : TextureLODGatherFormatPropertiesAMD( *reinterpret_cast<TextureLODGatherFormatPropertiesAMD const *>( &rhs ) )
84062     {}
84063 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
84064 
84065     TextureLODGatherFormatPropertiesAMD &
84066       operator=( TextureLODGatherFormatPropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84067 
84068     TextureLODGatherFormatPropertiesAMD &
operator =VULKAN_HPP_NAMESPACE::TextureLODGatherFormatPropertiesAMD84069       operator=( VkTextureLODGatherFormatPropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
84070     {
84071       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::TextureLODGatherFormatPropertiesAMD const *>( &rhs );
84072       return *this;
84073     }
84074 
operator VkTextureLODGatherFormatPropertiesAMD const&VULKAN_HPP_NAMESPACE::TextureLODGatherFormatPropertiesAMD84075     explicit operator VkTextureLODGatherFormatPropertiesAMD const &() const VULKAN_HPP_NOEXCEPT
84076     {
84077       return *reinterpret_cast<const VkTextureLODGatherFormatPropertiesAMD *>( this );
84078     }
84079 
operator VkTextureLODGatherFormatPropertiesAMD&VULKAN_HPP_NAMESPACE::TextureLODGatherFormatPropertiesAMD84080     explicit operator VkTextureLODGatherFormatPropertiesAMD &() VULKAN_HPP_NOEXCEPT
84081     {
84082       return *reinterpret_cast<VkTextureLODGatherFormatPropertiesAMD *>( this );
84083     }
84084 
84085 #if 14 <= VULKAN_HPP_CPP_VERSION
84086     auto
84087 #else
84088     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
84089 #endif
reflectVULKAN_HPP_NAMESPACE::TextureLODGatherFormatPropertiesAMD84090       reflect() const VULKAN_HPP_NOEXCEPT
84091     {
84092       return std::tie( sType, pNext, supportsTextureGatherLODBiasAMD );
84093     }
84094 
84095 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
84096     auto operator<=>( TextureLODGatherFormatPropertiesAMD const & ) const = default;
84097 #else
operator ==VULKAN_HPP_NAMESPACE::TextureLODGatherFormatPropertiesAMD84098     bool operator==( TextureLODGatherFormatPropertiesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
84099     {
84100       return this->reflect() == rhs.reflect();
84101     }
84102 
operator !=VULKAN_HPP_NAMESPACE::TextureLODGatherFormatPropertiesAMD84103     bool operator!=( TextureLODGatherFormatPropertiesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
84104     {
84105       return this->reflect() != rhs.reflect();
84106     }
84107 #endif
84108 
84109   public:
84110     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eTextureLodGatherFormatPropertiesAMD;
84111     void *                              pNext = {};
84112     VULKAN_HPP_NAMESPACE::Bool32        supportsTextureGatherLODBiasAMD = {};
84113   };
84114   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::TextureLODGatherFormatPropertiesAMD ) ==
84115                               sizeof( VkTextureLODGatherFormatPropertiesAMD ),
84116                             "struct and wrapper have different size!" );
84117   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::TextureLODGatherFormatPropertiesAMD>::value,
84118                             "struct wrapper is not a standard layout!" );
84119   VULKAN_HPP_STATIC_ASSERT(
84120     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::TextureLODGatherFormatPropertiesAMD>::value,
84121     "TextureLODGatherFormatPropertiesAMD is not nothrow_move_constructible!" );
84122 
84123   template <>
84124   struct CppType<StructureType, StructureType::eTextureLodGatherFormatPropertiesAMD>
84125   {
84126     using Type = TextureLODGatherFormatPropertiesAMD;
84127   };
84128 
84129   struct TimelineSemaphoreSubmitInfo
84130   {
84131     using NativeType = VkTimelineSemaphoreSubmitInfo;
84132 
84133     static const bool                                  allowDuplicate = false;
84134     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eTimelineSemaphoreSubmitInfo;
84135 
84136 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
84137     VULKAN_HPP_CONSTEXPR
TimelineSemaphoreSubmitInfoVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo84138       TimelineSemaphoreSubmitInfo( uint32_t         waitSemaphoreValueCount_   = {},
84139                                    const uint64_t * pWaitSemaphoreValues_      = {},
84140                                    uint32_t         signalSemaphoreValueCount_ = {},
84141                                    const uint64_t * pSignalSemaphoreValues_    = {} ) VULKAN_HPP_NOEXCEPT
84142       : waitSemaphoreValueCount( waitSemaphoreValueCount_ )
84143       , pWaitSemaphoreValues( pWaitSemaphoreValues_ )
84144       , signalSemaphoreValueCount( signalSemaphoreValueCount_ )
84145       , pSignalSemaphoreValues( pSignalSemaphoreValues_ )
84146     {}
84147 
84148     VULKAN_HPP_CONSTEXPR
84149       TimelineSemaphoreSubmitInfo( TimelineSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84150 
TimelineSemaphoreSubmitInfoVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo84151     TimelineSemaphoreSubmitInfo( VkTimelineSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
84152       : TimelineSemaphoreSubmitInfo( *reinterpret_cast<TimelineSemaphoreSubmitInfo const *>( &rhs ) )
84153     {}
84154 
84155 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
TimelineSemaphoreSubmitInfoVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo84156     TimelineSemaphoreSubmitInfo(
84157       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & waitSemaphoreValues_,
84158       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & signalSemaphoreValues_ = {} )
84159       : waitSemaphoreValueCount( static_cast<uint32_t>( waitSemaphoreValues_.size() ) )
84160       , pWaitSemaphoreValues( waitSemaphoreValues_.data() )
84161       , signalSemaphoreValueCount( static_cast<uint32_t>( signalSemaphoreValues_.size() ) )
84162       , pSignalSemaphoreValues( signalSemaphoreValues_.data() )
84163     {}
84164 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
84165 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
84166 
84167     TimelineSemaphoreSubmitInfo & operator=( TimelineSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84168 
operator =VULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo84169     TimelineSemaphoreSubmitInfo & operator=( VkTimelineSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
84170     {
84171       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo const *>( &rhs );
84172       return *this;
84173     }
84174 
84175 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo84176     VULKAN_HPP_CONSTEXPR_14 TimelineSemaphoreSubmitInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
84177     {
84178       pNext = pNext_;
84179       return *this;
84180     }
84181 
84182     VULKAN_HPP_CONSTEXPR_14 TimelineSemaphoreSubmitInfo &
setWaitSemaphoreValueCountVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo84183                             setWaitSemaphoreValueCount( uint32_t waitSemaphoreValueCount_ ) VULKAN_HPP_NOEXCEPT
84184     {
84185       waitSemaphoreValueCount = waitSemaphoreValueCount_;
84186       return *this;
84187     }
84188 
84189     VULKAN_HPP_CONSTEXPR_14 TimelineSemaphoreSubmitInfo &
setPWaitSemaphoreValuesVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo84190                             setPWaitSemaphoreValues( const uint64_t * pWaitSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT
84191     {
84192       pWaitSemaphoreValues = pWaitSemaphoreValues_;
84193       return *this;
84194     }
84195 
84196 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setWaitSemaphoreValuesVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo84197     TimelineSemaphoreSubmitInfo & setWaitSemaphoreValues(
84198       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & waitSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT
84199     {
84200       waitSemaphoreValueCount = static_cast<uint32_t>( waitSemaphoreValues_.size() );
84201       pWaitSemaphoreValues    = waitSemaphoreValues_.data();
84202       return *this;
84203     }
84204 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
84205 
84206     VULKAN_HPP_CONSTEXPR_14 TimelineSemaphoreSubmitInfo &
setSignalSemaphoreValueCountVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo84207                             setSignalSemaphoreValueCount( uint32_t signalSemaphoreValueCount_ ) VULKAN_HPP_NOEXCEPT
84208     {
84209       signalSemaphoreValueCount = signalSemaphoreValueCount_;
84210       return *this;
84211     }
84212 
84213     VULKAN_HPP_CONSTEXPR_14 TimelineSemaphoreSubmitInfo &
setPSignalSemaphoreValuesVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo84214                             setPSignalSemaphoreValues( const uint64_t * pSignalSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT
84215     {
84216       pSignalSemaphoreValues = pSignalSemaphoreValues_;
84217       return *this;
84218     }
84219 
84220 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSignalSemaphoreValuesVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo84221     TimelineSemaphoreSubmitInfo & setSignalSemaphoreValues(
84222       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & signalSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT
84223     {
84224       signalSemaphoreValueCount = static_cast<uint32_t>( signalSemaphoreValues_.size() );
84225       pSignalSemaphoreValues    = signalSemaphoreValues_.data();
84226       return *this;
84227     }
84228 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
84229 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
84230 
operator VkTimelineSemaphoreSubmitInfo const&VULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo84231     explicit operator VkTimelineSemaphoreSubmitInfo const &() const VULKAN_HPP_NOEXCEPT
84232     {
84233       return *reinterpret_cast<const VkTimelineSemaphoreSubmitInfo *>( this );
84234     }
84235 
operator VkTimelineSemaphoreSubmitInfo&VULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo84236     explicit operator VkTimelineSemaphoreSubmitInfo &() VULKAN_HPP_NOEXCEPT
84237     {
84238       return *reinterpret_cast<VkTimelineSemaphoreSubmitInfo *>( this );
84239     }
84240 
84241 #if 14 <= VULKAN_HPP_CPP_VERSION
84242     auto
84243 #else
84244     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
84245                const void * const &,
84246                uint32_t const &,
84247                const uint64_t * const &,
84248                uint32_t const &,
84249                const uint64_t * const &>
84250 #endif
reflectVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo84251       reflect() const VULKAN_HPP_NOEXCEPT
84252     {
84253       return std::tie( sType,
84254                        pNext,
84255                        waitSemaphoreValueCount,
84256                        pWaitSemaphoreValues,
84257                        signalSemaphoreValueCount,
84258                        pSignalSemaphoreValues );
84259     }
84260 
84261 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
84262     auto operator<=>( TimelineSemaphoreSubmitInfo const & ) const = default;
84263 #else
operator ==VULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo84264     bool operator==( TimelineSemaphoreSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
84265     {
84266       return this->reflect() == rhs.reflect();
84267     }
84268 
operator !=VULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo84269     bool operator!=( TimelineSemaphoreSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
84270     {
84271       return this->reflect() != rhs.reflect();
84272     }
84273 #endif
84274 
84275   public:
84276     VULKAN_HPP_NAMESPACE::StructureType sType                     = StructureType::eTimelineSemaphoreSubmitInfo;
84277     const void *                        pNext                     = {};
84278     uint32_t                            waitSemaphoreValueCount   = {};
84279     const uint64_t *                    pWaitSemaphoreValues      = {};
84280     uint32_t                            signalSemaphoreValueCount = {};
84281     const uint64_t *                    pSignalSemaphoreValues    = {};
84282   };
84283   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo ) ==
84284                               sizeof( VkTimelineSemaphoreSubmitInfo ),
84285                             "struct and wrapper have different size!" );
84286   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo>::value,
84287                             "struct wrapper is not a standard layout!" );
84288   VULKAN_HPP_STATIC_ASSERT(
84289     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo>::value,
84290     "TimelineSemaphoreSubmitInfo is not nothrow_move_constructible!" );
84291 
84292   template <>
84293   struct CppType<StructureType, StructureType::eTimelineSemaphoreSubmitInfo>
84294   {
84295     using Type = TimelineSemaphoreSubmitInfo;
84296   };
84297   using TimelineSemaphoreSubmitInfoKHR = TimelineSemaphoreSubmitInfo;
84298 
84299   struct TraceRaysIndirectCommandKHR
84300   {
84301     using NativeType = VkTraceRaysIndirectCommandKHR;
84302 
84303 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
TraceRaysIndirectCommandKHRVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR84304     VULKAN_HPP_CONSTEXPR TraceRaysIndirectCommandKHR( uint32_t width_  = {},
84305                                                       uint32_t height_ = {},
84306                                                       uint32_t depth_  = {} ) VULKAN_HPP_NOEXCEPT
84307       : width( width_ )
84308       , height( height_ )
84309       , depth( depth_ )
84310     {}
84311 
84312     VULKAN_HPP_CONSTEXPR
84313       TraceRaysIndirectCommandKHR( TraceRaysIndirectCommandKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84314 
TraceRaysIndirectCommandKHRVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR84315     TraceRaysIndirectCommandKHR( VkTraceRaysIndirectCommandKHR const & rhs ) VULKAN_HPP_NOEXCEPT
84316       : TraceRaysIndirectCommandKHR( *reinterpret_cast<TraceRaysIndirectCommandKHR const *>( &rhs ) )
84317     {}
84318 
TraceRaysIndirectCommandKHRVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR84319     explicit TraceRaysIndirectCommandKHR( Extent2D const & extent2D, uint32_t depth_ = {} )
84320       : width( extent2D.width ), height( extent2D.height ), depth( depth_ )
84321     {}
84322 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
84323 
84324     TraceRaysIndirectCommandKHR & operator=( TraceRaysIndirectCommandKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84325 
operator =VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR84326     TraceRaysIndirectCommandKHR & operator=( VkTraceRaysIndirectCommandKHR const & rhs ) VULKAN_HPP_NOEXCEPT
84327     {
84328       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR const *>( &rhs );
84329       return *this;
84330     }
84331 
84332 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setWidthVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR84333     VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommandKHR & setWidth( uint32_t width_ ) VULKAN_HPP_NOEXCEPT
84334     {
84335       width = width_;
84336       return *this;
84337     }
84338 
setHeightVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR84339     VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommandKHR & setHeight( uint32_t height_ ) VULKAN_HPP_NOEXCEPT
84340     {
84341       height = height_;
84342       return *this;
84343     }
84344 
setDepthVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR84345     VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommandKHR & setDepth( uint32_t depth_ ) VULKAN_HPP_NOEXCEPT
84346     {
84347       depth = depth_;
84348       return *this;
84349     }
84350 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
84351 
operator VkTraceRaysIndirectCommandKHR const&VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR84352     explicit operator VkTraceRaysIndirectCommandKHR const &() const VULKAN_HPP_NOEXCEPT
84353     {
84354       return *reinterpret_cast<const VkTraceRaysIndirectCommandKHR *>( this );
84355     }
84356 
operator VkTraceRaysIndirectCommandKHR&VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR84357     explicit operator VkTraceRaysIndirectCommandKHR &() VULKAN_HPP_NOEXCEPT
84358     {
84359       return *reinterpret_cast<VkTraceRaysIndirectCommandKHR *>( this );
84360     }
84361 
84362 #if 14 <= VULKAN_HPP_CPP_VERSION
84363     auto
84364 #else
84365     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &>
84366 #endif
reflectVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR84367       reflect() const VULKAN_HPP_NOEXCEPT
84368     {
84369       return std::tie( width, height, depth );
84370     }
84371 
84372 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
84373     auto operator<=>( TraceRaysIndirectCommandKHR const & ) const = default;
84374 #else
operator ==VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR84375     bool operator==( TraceRaysIndirectCommandKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
84376     {
84377       return this->reflect() == rhs.reflect();
84378     }
84379 
operator !=VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR84380     bool operator!=( TraceRaysIndirectCommandKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
84381     {
84382       return this->reflect() != rhs.reflect();
84383     }
84384 #endif
84385 
84386   public:
84387     uint32_t width  = {};
84388     uint32_t height = {};
84389     uint32_t depth  = {};
84390   };
84391   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR ) ==
84392                               sizeof( VkTraceRaysIndirectCommandKHR ),
84393                             "struct and wrapper have different size!" );
84394   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR>::value,
84395                             "struct wrapper is not a standard layout!" );
84396   VULKAN_HPP_STATIC_ASSERT(
84397     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR>::value,
84398     "TraceRaysIndirectCommandKHR is not nothrow_move_constructible!" );
84399 
84400   struct ValidationCacheCreateInfoEXT
84401   {
84402     using NativeType = VkValidationCacheCreateInfoEXT;
84403 
84404     static const bool                                  allowDuplicate = false;
84405     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eValidationCacheCreateInfoEXT;
84406 
84407 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ValidationCacheCreateInfoEXTVULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT84408     VULKAN_HPP_CONSTEXPR ValidationCacheCreateInfoEXT( VULKAN_HPP_NAMESPACE::ValidationCacheCreateFlagsEXT flags_ = {},
84409                                                        size_t       initialDataSize_                              = {},
84410                                                        const void * pInitialData_ = {} ) VULKAN_HPP_NOEXCEPT
84411       : flags( flags_ )
84412       , initialDataSize( initialDataSize_ )
84413       , pInitialData( pInitialData_ )
84414     {}
84415 
84416     VULKAN_HPP_CONSTEXPR
84417       ValidationCacheCreateInfoEXT( ValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84418 
ValidationCacheCreateInfoEXTVULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT84419     ValidationCacheCreateInfoEXT( VkValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
84420       : ValidationCacheCreateInfoEXT( *reinterpret_cast<ValidationCacheCreateInfoEXT const *>( &rhs ) )
84421     {}
84422 
84423 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
84424     template <typename T>
ValidationCacheCreateInfoEXTVULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT84425     ValidationCacheCreateInfoEXT( VULKAN_HPP_NAMESPACE::ValidationCacheCreateFlagsEXT            flags_,
84426                                   VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & initialData_ )
84427       : flags( flags_ ), initialDataSize( initialData_.size() * sizeof( T ) ), pInitialData( initialData_.data() )
84428     {}
84429 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
84430 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
84431 
84432     ValidationCacheCreateInfoEXT & operator=( ValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84433 
operator =VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT84434     ValidationCacheCreateInfoEXT & operator=( VkValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
84435     {
84436       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT const *>( &rhs );
84437       return *this;
84438     }
84439 
84440 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT84441     VULKAN_HPP_CONSTEXPR_14 ValidationCacheCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
84442     {
84443       pNext = pNext_;
84444       return *this;
84445     }
84446 
84447     VULKAN_HPP_CONSTEXPR_14 ValidationCacheCreateInfoEXT &
setFlagsVULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT84448                             setFlags( VULKAN_HPP_NAMESPACE::ValidationCacheCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
84449     {
84450       flags = flags_;
84451       return *this;
84452     }
84453 
84454     VULKAN_HPP_CONSTEXPR_14 ValidationCacheCreateInfoEXT &
setInitialDataSizeVULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT84455                             setInitialDataSize( size_t initialDataSize_ ) VULKAN_HPP_NOEXCEPT
84456     {
84457       initialDataSize = initialDataSize_;
84458       return *this;
84459     }
84460 
84461     VULKAN_HPP_CONSTEXPR_14 ValidationCacheCreateInfoEXT &
setPInitialDataVULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT84462                             setPInitialData( const void * pInitialData_ ) VULKAN_HPP_NOEXCEPT
84463     {
84464       pInitialData = pInitialData_;
84465       return *this;
84466     }
84467 
84468 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
84469     template <typename T>
84470     ValidationCacheCreateInfoEXT &
setInitialDataVULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT84471       setInitialData( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & initialData_ ) VULKAN_HPP_NOEXCEPT
84472     {
84473       initialDataSize = initialData_.size() * sizeof( T );
84474       pInitialData    = initialData_.data();
84475       return *this;
84476     }
84477 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
84478 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
84479 
operator VkValidationCacheCreateInfoEXT const&VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT84480     explicit operator VkValidationCacheCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
84481     {
84482       return *reinterpret_cast<const VkValidationCacheCreateInfoEXT *>( this );
84483     }
84484 
operator VkValidationCacheCreateInfoEXT&VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT84485     explicit operator VkValidationCacheCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
84486     {
84487       return *reinterpret_cast<VkValidationCacheCreateInfoEXT *>( this );
84488     }
84489 
84490 #if 14 <= VULKAN_HPP_CPP_VERSION
84491     auto
84492 #else
84493     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
84494                const void * const &,
84495                VULKAN_HPP_NAMESPACE::ValidationCacheCreateFlagsEXT const &,
84496                size_t const &,
84497                const void * const &>
84498 #endif
reflectVULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT84499       reflect() const VULKAN_HPP_NOEXCEPT
84500     {
84501       return std::tie( sType, pNext, flags, initialDataSize, pInitialData );
84502     }
84503 
84504 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
84505     auto operator<=>( ValidationCacheCreateInfoEXT const & ) const = default;
84506 #else
operator ==VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT84507     bool operator==( ValidationCacheCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
84508     {
84509       return this->reflect() == rhs.reflect();
84510     }
84511 
operator !=VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT84512     bool operator!=( ValidationCacheCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
84513     {
84514       return this->reflect() != rhs.reflect();
84515     }
84516 #endif
84517 
84518   public:
84519     VULKAN_HPP_NAMESPACE::StructureType                 sType           = StructureType::eValidationCacheCreateInfoEXT;
84520     const void *                                        pNext           = {};
84521     VULKAN_HPP_NAMESPACE::ValidationCacheCreateFlagsEXT flags           = {};
84522     size_t                                              initialDataSize = {};
84523     const void *                                        pInitialData    = {};
84524   };
84525   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT ) ==
84526                               sizeof( VkValidationCacheCreateInfoEXT ),
84527                             "struct and wrapper have different size!" );
84528   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT>::value,
84529                             "struct wrapper is not a standard layout!" );
84530   VULKAN_HPP_STATIC_ASSERT(
84531     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT>::value,
84532     "ValidationCacheCreateInfoEXT is not nothrow_move_constructible!" );
84533 
84534   template <>
84535   struct CppType<StructureType, StructureType::eValidationCacheCreateInfoEXT>
84536   {
84537     using Type = ValidationCacheCreateInfoEXT;
84538   };
84539 
84540   struct ValidationFeaturesEXT
84541   {
84542     using NativeType = VkValidationFeaturesEXT;
84543 
84544     static const bool                                  allowDuplicate = false;
84545     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eValidationFeaturesEXT;
84546 
84547 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ValidationFeaturesEXTVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT84548     VULKAN_HPP_CONSTEXPR ValidationFeaturesEXT(
84549       uint32_t                                                  enabledValidationFeatureCount_  = {},
84550       const VULKAN_HPP_NAMESPACE::ValidationFeatureEnableEXT *  pEnabledValidationFeatures_     = {},
84551       uint32_t                                                  disabledValidationFeatureCount_ = {},
84552       const VULKAN_HPP_NAMESPACE::ValidationFeatureDisableEXT * pDisabledValidationFeatures_ = {} ) VULKAN_HPP_NOEXCEPT
84553       : enabledValidationFeatureCount( enabledValidationFeatureCount_ )
84554       , pEnabledValidationFeatures( pEnabledValidationFeatures_ )
84555       , disabledValidationFeatureCount( disabledValidationFeatureCount_ )
84556       , pDisabledValidationFeatures( pDisabledValidationFeatures_ )
84557     {}
84558 
84559     VULKAN_HPP_CONSTEXPR ValidationFeaturesEXT( ValidationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84560 
ValidationFeaturesEXTVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT84561     ValidationFeaturesEXT( VkValidationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
84562       : ValidationFeaturesEXT( *reinterpret_cast<ValidationFeaturesEXT const *>( &rhs ) )
84563     {}
84564 
84565 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ValidationFeaturesEXTVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT84566     ValidationFeaturesEXT(
84567       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ValidationFeatureEnableEXT> const &
84568         enabledValidationFeatures_,
84569       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ValidationFeatureDisableEXT> const &
84570         disabledValidationFeatures_ = {} )
84571       : enabledValidationFeatureCount( static_cast<uint32_t>( enabledValidationFeatures_.size() ) )
84572       , pEnabledValidationFeatures( enabledValidationFeatures_.data() )
84573       , disabledValidationFeatureCount( static_cast<uint32_t>( disabledValidationFeatures_.size() ) )
84574       , pDisabledValidationFeatures( disabledValidationFeatures_.data() )
84575     {}
84576 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
84577 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
84578 
84579     ValidationFeaturesEXT & operator=( ValidationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84580 
operator =VULKAN_HPP_NAMESPACE::ValidationFeaturesEXT84581     ValidationFeaturesEXT & operator=( VkValidationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
84582     {
84583       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ValidationFeaturesEXT const *>( &rhs );
84584       return *this;
84585     }
84586 
84587 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT84588     VULKAN_HPP_CONSTEXPR_14 ValidationFeaturesEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
84589     {
84590       pNext = pNext_;
84591       return *this;
84592     }
84593 
84594     VULKAN_HPP_CONSTEXPR_14 ValidationFeaturesEXT &
setEnabledValidationFeatureCountVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT84595       setEnabledValidationFeatureCount( uint32_t enabledValidationFeatureCount_ ) VULKAN_HPP_NOEXCEPT
84596     {
84597       enabledValidationFeatureCount = enabledValidationFeatureCount_;
84598       return *this;
84599     }
84600 
setPEnabledValidationFeaturesVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT84601     VULKAN_HPP_CONSTEXPR_14 ValidationFeaturesEXT & setPEnabledValidationFeatures(
84602       const VULKAN_HPP_NAMESPACE::ValidationFeatureEnableEXT * pEnabledValidationFeatures_ ) VULKAN_HPP_NOEXCEPT
84603     {
84604       pEnabledValidationFeatures = pEnabledValidationFeatures_;
84605       return *this;
84606     }
84607 
84608 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setEnabledValidationFeaturesVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT84609     ValidationFeaturesEXT & setEnabledValidationFeatures(
84610       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ValidationFeatureEnableEXT> const &
84611         enabledValidationFeatures_ ) VULKAN_HPP_NOEXCEPT
84612     {
84613       enabledValidationFeatureCount = static_cast<uint32_t>( enabledValidationFeatures_.size() );
84614       pEnabledValidationFeatures    = enabledValidationFeatures_.data();
84615       return *this;
84616     }
84617 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
84618 
84619     VULKAN_HPP_CONSTEXPR_14 ValidationFeaturesEXT &
setDisabledValidationFeatureCountVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT84620       setDisabledValidationFeatureCount( uint32_t disabledValidationFeatureCount_ ) VULKAN_HPP_NOEXCEPT
84621     {
84622       disabledValidationFeatureCount = disabledValidationFeatureCount_;
84623       return *this;
84624     }
84625 
setPDisabledValidationFeaturesVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT84626     VULKAN_HPP_CONSTEXPR_14 ValidationFeaturesEXT & setPDisabledValidationFeatures(
84627       const VULKAN_HPP_NAMESPACE::ValidationFeatureDisableEXT * pDisabledValidationFeatures_ ) VULKAN_HPP_NOEXCEPT
84628     {
84629       pDisabledValidationFeatures = pDisabledValidationFeatures_;
84630       return *this;
84631     }
84632 
84633 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDisabledValidationFeaturesVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT84634     ValidationFeaturesEXT & setDisabledValidationFeatures(
84635       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ValidationFeatureDisableEXT> const &
84636         disabledValidationFeatures_ ) VULKAN_HPP_NOEXCEPT
84637     {
84638       disabledValidationFeatureCount = static_cast<uint32_t>( disabledValidationFeatures_.size() );
84639       pDisabledValidationFeatures    = disabledValidationFeatures_.data();
84640       return *this;
84641     }
84642 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
84643 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
84644 
operator VkValidationFeaturesEXT const&VULKAN_HPP_NAMESPACE::ValidationFeaturesEXT84645     explicit operator VkValidationFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
84646     {
84647       return *reinterpret_cast<const VkValidationFeaturesEXT *>( this );
84648     }
84649 
operator VkValidationFeaturesEXT&VULKAN_HPP_NAMESPACE::ValidationFeaturesEXT84650     explicit operator VkValidationFeaturesEXT &() VULKAN_HPP_NOEXCEPT
84651     {
84652       return *reinterpret_cast<VkValidationFeaturesEXT *>( this );
84653     }
84654 
84655 #if 14 <= VULKAN_HPP_CPP_VERSION
84656     auto
84657 #else
84658     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
84659                const void * const &,
84660                uint32_t const &,
84661                const VULKAN_HPP_NAMESPACE::ValidationFeatureEnableEXT * const &,
84662                uint32_t const &,
84663                const VULKAN_HPP_NAMESPACE::ValidationFeatureDisableEXT * const &>
84664 #endif
reflectVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT84665       reflect() const VULKAN_HPP_NOEXCEPT
84666     {
84667       return std::tie( sType,
84668                        pNext,
84669                        enabledValidationFeatureCount,
84670                        pEnabledValidationFeatures,
84671                        disabledValidationFeatureCount,
84672                        pDisabledValidationFeatures );
84673     }
84674 
84675 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
84676     auto operator<=>( ValidationFeaturesEXT const & ) const = default;
84677 #else
operator ==VULKAN_HPP_NAMESPACE::ValidationFeaturesEXT84678     bool operator==( ValidationFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
84679     {
84680       return this->reflect() == rhs.reflect();
84681     }
84682 
operator !=VULKAN_HPP_NAMESPACE::ValidationFeaturesEXT84683     bool operator!=( ValidationFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
84684     {
84685       return this->reflect() != rhs.reflect();
84686     }
84687 #endif
84688 
84689   public:
84690     VULKAN_HPP_NAMESPACE::StructureType                       sType = StructureType::eValidationFeaturesEXT;
84691     const void *                                              pNext = {};
84692     uint32_t                                                  enabledValidationFeatureCount  = {};
84693     const VULKAN_HPP_NAMESPACE::ValidationFeatureEnableEXT *  pEnabledValidationFeatures     = {};
84694     uint32_t                                                  disabledValidationFeatureCount = {};
84695     const VULKAN_HPP_NAMESPACE::ValidationFeatureDisableEXT * pDisabledValidationFeatures    = {};
84696   };
84697   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ValidationFeaturesEXT ) == sizeof( VkValidationFeaturesEXT ),
84698                             "struct and wrapper have different size!" );
84699   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ValidationFeaturesEXT>::value,
84700                             "struct wrapper is not a standard layout!" );
84701   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ValidationFeaturesEXT>::value,
84702                             "ValidationFeaturesEXT is not nothrow_move_constructible!" );
84703 
84704   template <>
84705   struct CppType<StructureType, StructureType::eValidationFeaturesEXT>
84706   {
84707     using Type = ValidationFeaturesEXT;
84708   };
84709 
84710   struct ValidationFlagsEXT
84711   {
84712     using NativeType = VkValidationFlagsEXT;
84713 
84714     static const bool                                  allowDuplicate = false;
84715     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eValidationFlagsEXT;
84716 
84717 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ValidationFlagsEXTVULKAN_HPP_NAMESPACE::ValidationFlagsEXT84718     VULKAN_HPP_CONSTEXPR ValidationFlagsEXT(
84719       uint32_t                                         disabledValidationCheckCount_ = {},
84720       const VULKAN_HPP_NAMESPACE::ValidationCheckEXT * pDisabledValidationChecks_    = {} ) VULKAN_HPP_NOEXCEPT
84721       : disabledValidationCheckCount( disabledValidationCheckCount_ )
84722       , pDisabledValidationChecks( pDisabledValidationChecks_ )
84723     {}
84724 
84725     VULKAN_HPP_CONSTEXPR ValidationFlagsEXT( ValidationFlagsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84726 
ValidationFlagsEXTVULKAN_HPP_NAMESPACE::ValidationFlagsEXT84727     ValidationFlagsEXT( VkValidationFlagsEXT const & rhs ) VULKAN_HPP_NOEXCEPT
84728       : ValidationFlagsEXT( *reinterpret_cast<ValidationFlagsEXT const *>( &rhs ) )
84729     {}
84730 
84731 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ValidationFlagsEXTVULKAN_HPP_NAMESPACE::ValidationFlagsEXT84732     ValidationFlagsEXT(
84733       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ValidationCheckEXT> const &
84734         disabledValidationChecks_ )
84735       : disabledValidationCheckCount( static_cast<uint32_t>( disabledValidationChecks_.size() ) )
84736       , pDisabledValidationChecks( disabledValidationChecks_.data() )
84737     {}
84738 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
84739 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
84740 
84741     ValidationFlagsEXT & operator=( ValidationFlagsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84742 
operator =VULKAN_HPP_NAMESPACE::ValidationFlagsEXT84743     ValidationFlagsEXT & operator=( VkValidationFlagsEXT const & rhs ) VULKAN_HPP_NOEXCEPT
84744     {
84745       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ValidationFlagsEXT const *>( &rhs );
84746       return *this;
84747     }
84748 
84749 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ValidationFlagsEXT84750     VULKAN_HPP_CONSTEXPR_14 ValidationFlagsEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
84751     {
84752       pNext = pNext_;
84753       return *this;
84754     }
84755 
84756     VULKAN_HPP_CONSTEXPR_14 ValidationFlagsEXT &
setDisabledValidationCheckCountVULKAN_HPP_NAMESPACE::ValidationFlagsEXT84757       setDisabledValidationCheckCount( uint32_t disabledValidationCheckCount_ ) VULKAN_HPP_NOEXCEPT
84758     {
84759       disabledValidationCheckCount = disabledValidationCheckCount_;
84760       return *this;
84761     }
84762 
setPDisabledValidationChecksVULKAN_HPP_NAMESPACE::ValidationFlagsEXT84763     VULKAN_HPP_CONSTEXPR_14 ValidationFlagsEXT & setPDisabledValidationChecks(
84764       const VULKAN_HPP_NAMESPACE::ValidationCheckEXT * pDisabledValidationChecks_ ) VULKAN_HPP_NOEXCEPT
84765     {
84766       pDisabledValidationChecks = pDisabledValidationChecks_;
84767       return *this;
84768     }
84769 
84770 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDisabledValidationChecksVULKAN_HPP_NAMESPACE::ValidationFlagsEXT84771     ValidationFlagsEXT & setDisabledValidationChecks(
84772       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ValidationCheckEXT> const &
84773         disabledValidationChecks_ ) VULKAN_HPP_NOEXCEPT
84774     {
84775       disabledValidationCheckCount = static_cast<uint32_t>( disabledValidationChecks_.size() );
84776       pDisabledValidationChecks    = disabledValidationChecks_.data();
84777       return *this;
84778     }
84779 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
84780 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
84781 
operator VkValidationFlagsEXT const&VULKAN_HPP_NAMESPACE::ValidationFlagsEXT84782     explicit operator VkValidationFlagsEXT const &() const VULKAN_HPP_NOEXCEPT
84783     {
84784       return *reinterpret_cast<const VkValidationFlagsEXT *>( this );
84785     }
84786 
operator VkValidationFlagsEXT&VULKAN_HPP_NAMESPACE::ValidationFlagsEXT84787     explicit operator VkValidationFlagsEXT &() VULKAN_HPP_NOEXCEPT
84788     {
84789       return *reinterpret_cast<VkValidationFlagsEXT *>( this );
84790     }
84791 
84792 #if 14 <= VULKAN_HPP_CPP_VERSION
84793     auto
84794 #else
84795     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
84796                const void * const &,
84797                uint32_t const &,
84798                const VULKAN_HPP_NAMESPACE::ValidationCheckEXT * const &>
84799 #endif
reflectVULKAN_HPP_NAMESPACE::ValidationFlagsEXT84800       reflect() const VULKAN_HPP_NOEXCEPT
84801     {
84802       return std::tie( sType, pNext, disabledValidationCheckCount, pDisabledValidationChecks );
84803     }
84804 
84805 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
84806     auto operator<=>( ValidationFlagsEXT const & ) const = default;
84807 #else
operator ==VULKAN_HPP_NAMESPACE::ValidationFlagsEXT84808     bool operator==( ValidationFlagsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
84809     {
84810       return this->reflect() == rhs.reflect();
84811     }
84812 
operator !=VULKAN_HPP_NAMESPACE::ValidationFlagsEXT84813     bool operator!=( ValidationFlagsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
84814     {
84815       return this->reflect() != rhs.reflect();
84816     }
84817 #endif
84818 
84819   public:
84820     VULKAN_HPP_NAMESPACE::StructureType              sType                        = StructureType::eValidationFlagsEXT;
84821     const void *                                     pNext                        = {};
84822     uint32_t                                         disabledValidationCheckCount = {};
84823     const VULKAN_HPP_NAMESPACE::ValidationCheckEXT * pDisabledValidationChecks    = {};
84824   };
84825   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ValidationFlagsEXT ) == sizeof( VkValidationFlagsEXT ),
84826                             "struct and wrapper have different size!" );
84827   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ValidationFlagsEXT>::value,
84828                             "struct wrapper is not a standard layout!" );
84829   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ValidationFlagsEXT>::value,
84830                             "ValidationFlagsEXT is not nothrow_move_constructible!" );
84831 
84832   template <>
84833   struct CppType<StructureType, StructureType::eValidationFlagsEXT>
84834   {
84835     using Type = ValidationFlagsEXT;
84836   };
84837 
84838   struct VertexInputAttributeDescription2EXT
84839   {
84840     using NativeType = VkVertexInputAttributeDescription2EXT;
84841 
84842     static const bool                                  allowDuplicate = false;
84843     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
84844       StructureType::eVertexInputAttributeDescription2EXT;
84845 
84846 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VertexInputAttributeDescription2EXTVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT84847     VULKAN_HPP_CONSTEXPR VertexInputAttributeDescription2EXT(
84848       uint32_t                     location_ = {},
84849       uint32_t                     binding_  = {},
84850       VULKAN_HPP_NAMESPACE::Format format_   = VULKAN_HPP_NAMESPACE::Format::eUndefined,
84851       uint32_t                     offset_   = {} ) VULKAN_HPP_NOEXCEPT
84852       : location( location_ )
84853       , binding( binding_ )
84854       , format( format_ )
84855       , offset( offset_ )
84856     {}
84857 
84858     VULKAN_HPP_CONSTEXPR VertexInputAttributeDescription2EXT( VertexInputAttributeDescription2EXT const & rhs )
84859       VULKAN_HPP_NOEXCEPT = default;
84860 
VertexInputAttributeDescription2EXTVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT84861     VertexInputAttributeDescription2EXT( VkVertexInputAttributeDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
84862       : VertexInputAttributeDescription2EXT( *reinterpret_cast<VertexInputAttributeDescription2EXT const *>( &rhs ) )
84863     {}
84864 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
84865 
84866     VertexInputAttributeDescription2EXT &
84867       operator=( VertexInputAttributeDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84868 
84869     VertexInputAttributeDescription2EXT &
operator =VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT84870       operator=( VkVertexInputAttributeDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
84871     {
84872       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT const *>( &rhs );
84873       return *this;
84874     }
84875 
84876 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT84877     VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription2EXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
84878     {
84879       pNext = pNext_;
84880       return *this;
84881     }
84882 
setLocationVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT84883     VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription2EXT & setLocation( uint32_t location_ ) VULKAN_HPP_NOEXCEPT
84884     {
84885       location = location_;
84886       return *this;
84887     }
84888 
setBindingVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT84889     VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription2EXT & setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT
84890     {
84891       binding = binding_;
84892       return *this;
84893     }
84894 
84895     VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription2EXT &
setFormatVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT84896                             setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
84897     {
84898       format = format_;
84899       return *this;
84900     }
84901 
setOffsetVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT84902     VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription2EXT & setOffset( uint32_t offset_ ) VULKAN_HPP_NOEXCEPT
84903     {
84904       offset = offset_;
84905       return *this;
84906     }
84907 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
84908 
operator VkVertexInputAttributeDescription2EXT const&VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT84909     explicit operator VkVertexInputAttributeDescription2EXT const &() const VULKAN_HPP_NOEXCEPT
84910     {
84911       return *reinterpret_cast<const VkVertexInputAttributeDescription2EXT *>( this );
84912     }
84913 
operator VkVertexInputAttributeDescription2EXT&VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT84914     explicit operator VkVertexInputAttributeDescription2EXT &() VULKAN_HPP_NOEXCEPT
84915     {
84916       return *reinterpret_cast<VkVertexInputAttributeDescription2EXT *>( this );
84917     }
84918 
84919 #if 14 <= VULKAN_HPP_CPP_VERSION
84920     auto
84921 #else
84922     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
84923                void * const &,
84924                uint32_t const &,
84925                uint32_t const &,
84926                VULKAN_HPP_NAMESPACE::Format const &,
84927                uint32_t const &>
84928 #endif
reflectVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT84929       reflect() const VULKAN_HPP_NOEXCEPT
84930     {
84931       return std::tie( sType, pNext, location, binding, format, offset );
84932     }
84933 
84934 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
84935     auto operator<=>( VertexInputAttributeDescription2EXT const & ) const = default;
84936 #else
operator ==VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT84937     bool operator==( VertexInputAttributeDescription2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
84938     {
84939       return this->reflect() == rhs.reflect();
84940     }
84941 
operator !=VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT84942     bool operator!=( VertexInputAttributeDescription2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
84943     {
84944       return this->reflect() != rhs.reflect();
84945     }
84946 #endif
84947 
84948   public:
84949     VULKAN_HPP_NAMESPACE::StructureType sType    = StructureType::eVertexInputAttributeDescription2EXT;
84950     void *                              pNext    = {};
84951     uint32_t                            location = {};
84952     uint32_t                            binding  = {};
84953     VULKAN_HPP_NAMESPACE::Format        format   = VULKAN_HPP_NAMESPACE::Format::eUndefined;
84954     uint32_t                            offset   = {};
84955   };
84956   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT ) ==
84957                               sizeof( VkVertexInputAttributeDescription2EXT ),
84958                             "struct and wrapper have different size!" );
84959   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT>::value,
84960                             "struct wrapper is not a standard layout!" );
84961   VULKAN_HPP_STATIC_ASSERT(
84962     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT>::value,
84963     "VertexInputAttributeDescription2EXT is not nothrow_move_constructible!" );
84964 
84965   template <>
84966   struct CppType<StructureType, StructureType::eVertexInputAttributeDescription2EXT>
84967   {
84968     using Type = VertexInputAttributeDescription2EXT;
84969   };
84970 
84971   struct VertexInputBindingDescription2EXT
84972   {
84973     using NativeType = VkVertexInputBindingDescription2EXT;
84974 
84975     static const bool                                  allowDuplicate = false;
84976     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
84977       StructureType::eVertexInputBindingDescription2EXT;
84978 
84979 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VertexInputBindingDescription2EXTVULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT84980     VULKAN_HPP_CONSTEXPR VertexInputBindingDescription2EXT(
84981       uint32_t                              binding_   = {},
84982       uint32_t                              stride_    = {},
84983       VULKAN_HPP_NAMESPACE::VertexInputRate inputRate_ = VULKAN_HPP_NAMESPACE::VertexInputRate::eVertex,
84984       uint32_t                              divisor_   = {} ) VULKAN_HPP_NOEXCEPT
84985       : binding( binding_ )
84986       , stride( stride_ )
84987       , inputRate( inputRate_ )
84988       , divisor( divisor_ )
84989     {}
84990 
84991     VULKAN_HPP_CONSTEXPR
84992       VertexInputBindingDescription2EXT( VertexInputBindingDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84993 
VertexInputBindingDescription2EXTVULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT84994     VertexInputBindingDescription2EXT( VkVertexInputBindingDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
84995       : VertexInputBindingDescription2EXT( *reinterpret_cast<VertexInputBindingDescription2EXT const *>( &rhs ) )
84996     {}
84997 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
84998 
84999     VertexInputBindingDescription2EXT &
85000       operator=( VertexInputBindingDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85001 
operator =VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT85002     VertexInputBindingDescription2EXT & operator=( VkVertexInputBindingDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
85003     {
85004       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT const *>( &rhs );
85005       return *this;
85006     }
85007 
85008 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT85009     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription2EXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
85010     {
85011       pNext = pNext_;
85012       return *this;
85013     }
85014 
setBindingVULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT85015     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription2EXT & setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT
85016     {
85017       binding = binding_;
85018       return *this;
85019     }
85020 
setStrideVULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT85021     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription2EXT & setStride( uint32_t stride_ ) VULKAN_HPP_NOEXCEPT
85022     {
85023       stride = stride_;
85024       return *this;
85025     }
85026 
85027     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription2EXT &
setInputRateVULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT85028                             setInputRate( VULKAN_HPP_NAMESPACE::VertexInputRate inputRate_ ) VULKAN_HPP_NOEXCEPT
85029     {
85030       inputRate = inputRate_;
85031       return *this;
85032     }
85033 
setDivisorVULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT85034     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription2EXT & setDivisor( uint32_t divisor_ ) VULKAN_HPP_NOEXCEPT
85035     {
85036       divisor = divisor_;
85037       return *this;
85038     }
85039 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
85040 
operator VkVertexInputBindingDescription2EXT const&VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT85041     explicit operator VkVertexInputBindingDescription2EXT const &() const VULKAN_HPP_NOEXCEPT
85042     {
85043       return *reinterpret_cast<const VkVertexInputBindingDescription2EXT *>( this );
85044     }
85045 
operator VkVertexInputBindingDescription2EXT&VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT85046     explicit operator VkVertexInputBindingDescription2EXT &() VULKAN_HPP_NOEXCEPT
85047     {
85048       return *reinterpret_cast<VkVertexInputBindingDescription2EXT *>( this );
85049     }
85050 
85051 #if 14 <= VULKAN_HPP_CPP_VERSION
85052     auto
85053 #else
85054     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
85055                void * const &,
85056                uint32_t const &,
85057                uint32_t const &,
85058                VULKAN_HPP_NAMESPACE::VertexInputRate const &,
85059                uint32_t const &>
85060 #endif
reflectVULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT85061       reflect() const VULKAN_HPP_NOEXCEPT
85062     {
85063       return std::tie( sType, pNext, binding, stride, inputRate, divisor );
85064     }
85065 
85066 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
85067     auto operator<=>( VertexInputBindingDescription2EXT const & ) const = default;
85068 #else
operator ==VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT85069     bool operator==( VertexInputBindingDescription2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
85070     {
85071       return this->reflect() == rhs.reflect();
85072     }
85073 
operator !=VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT85074     bool operator!=( VertexInputBindingDescription2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
85075     {
85076       return this->reflect() != rhs.reflect();
85077     }
85078 #endif
85079 
85080   public:
85081     VULKAN_HPP_NAMESPACE::StructureType   sType     = StructureType::eVertexInputBindingDescription2EXT;
85082     void *                                pNext     = {};
85083     uint32_t                              binding   = {};
85084     uint32_t                              stride    = {};
85085     VULKAN_HPP_NAMESPACE::VertexInputRate inputRate = VULKAN_HPP_NAMESPACE::VertexInputRate::eVertex;
85086     uint32_t                              divisor   = {};
85087   };
85088   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT ) ==
85089                               sizeof( VkVertexInputBindingDescription2EXT ),
85090                             "struct and wrapper have different size!" );
85091   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT>::value,
85092                             "struct wrapper is not a standard layout!" );
85093   VULKAN_HPP_STATIC_ASSERT(
85094     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT>::value,
85095     "VertexInputBindingDescription2EXT is not nothrow_move_constructible!" );
85096 
85097   template <>
85098   struct CppType<StructureType, StructureType::eVertexInputBindingDescription2EXT>
85099   {
85100     using Type = VertexInputBindingDescription2EXT;
85101   };
85102 
85103 #if defined( VK_USE_PLATFORM_VI_NN )
85104   struct ViSurfaceCreateInfoNN
85105   {
85106     using NativeType = VkViSurfaceCreateInfoNN;
85107 
85108     static const bool                                  allowDuplicate = false;
85109     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eViSurfaceCreateInfoNN;
85110 
85111 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ViSurfaceCreateInfoNNVULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN85112     VULKAN_HPP_CONSTEXPR ViSurfaceCreateInfoNN( VULKAN_HPP_NAMESPACE::ViSurfaceCreateFlagsNN flags_ = {},
85113                                                 void * window_ = {} ) VULKAN_HPP_NOEXCEPT
85114       : flags( flags_ )
85115       , window( window_ )
85116     {}
85117 
85118     VULKAN_HPP_CONSTEXPR ViSurfaceCreateInfoNN( ViSurfaceCreateInfoNN const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85119 
ViSurfaceCreateInfoNNVULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN85120     ViSurfaceCreateInfoNN( VkViSurfaceCreateInfoNN const & rhs ) VULKAN_HPP_NOEXCEPT
85121       : ViSurfaceCreateInfoNN( *reinterpret_cast<ViSurfaceCreateInfoNN const *>( &rhs ) )
85122     {}
85123 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
85124 
85125     ViSurfaceCreateInfoNN & operator=( ViSurfaceCreateInfoNN const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85126 
operator =VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN85127     ViSurfaceCreateInfoNN & operator=( VkViSurfaceCreateInfoNN const & rhs ) VULKAN_HPP_NOEXCEPT
85128     {
85129       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN const *>( &rhs );
85130       return *this;
85131     }
85132 
85133 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN85134     VULKAN_HPP_CONSTEXPR_14 ViSurfaceCreateInfoNN & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
85135     {
85136       pNext = pNext_;
85137       return *this;
85138     }
85139 
85140     VULKAN_HPP_CONSTEXPR_14 ViSurfaceCreateInfoNN &
setFlagsVULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN85141                             setFlags( VULKAN_HPP_NAMESPACE::ViSurfaceCreateFlagsNN flags_ ) VULKAN_HPP_NOEXCEPT
85142     {
85143       flags = flags_;
85144       return *this;
85145     }
85146 
setWindowVULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN85147     VULKAN_HPP_CONSTEXPR_14 ViSurfaceCreateInfoNN & setWindow( void * window_ ) VULKAN_HPP_NOEXCEPT
85148     {
85149       window = window_;
85150       return *this;
85151     }
85152 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
85153 
operator VkViSurfaceCreateInfoNN const&VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN85154     explicit operator VkViSurfaceCreateInfoNN const &() const VULKAN_HPP_NOEXCEPT
85155     {
85156       return *reinterpret_cast<const VkViSurfaceCreateInfoNN *>( this );
85157     }
85158 
operator VkViSurfaceCreateInfoNN&VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN85159     explicit operator VkViSurfaceCreateInfoNN &() VULKAN_HPP_NOEXCEPT
85160     {
85161       return *reinterpret_cast<VkViSurfaceCreateInfoNN *>( this );
85162     }
85163 
85164 #  if 14 <= VULKAN_HPP_CPP_VERSION
85165     auto
85166 #  else
85167     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
85168                const void * const &,
85169                VULKAN_HPP_NAMESPACE::ViSurfaceCreateFlagsNN const &,
85170                void * const &>
85171 #  endif
reflectVULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN85172       reflect() const VULKAN_HPP_NOEXCEPT
85173     {
85174       return std::tie( sType, pNext, flags, window );
85175     }
85176 
85177 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
85178     auto operator<=>( ViSurfaceCreateInfoNN const & ) const = default;
85179 #  else
operator ==VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN85180     bool operator==( ViSurfaceCreateInfoNN const & rhs ) const VULKAN_HPP_NOEXCEPT
85181     {
85182       return this->reflect() == rhs.reflect();
85183     }
85184 
operator !=VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN85185     bool operator!=( ViSurfaceCreateInfoNN const & rhs ) const VULKAN_HPP_NOEXCEPT
85186     {
85187       return this->reflect() != rhs.reflect();
85188     }
85189 #  endif
85190 
85191   public:
85192     VULKAN_HPP_NAMESPACE::StructureType          sType  = StructureType::eViSurfaceCreateInfoNN;
85193     const void *                                 pNext  = {};
85194     VULKAN_HPP_NAMESPACE::ViSurfaceCreateFlagsNN flags  = {};
85195     void *                                       window = {};
85196   };
85197   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN ) == sizeof( VkViSurfaceCreateInfoNN ),
85198                             "struct and wrapper have different size!" );
85199   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN>::value,
85200                             "struct wrapper is not a standard layout!" );
85201   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN>::value,
85202                             "ViSurfaceCreateInfoNN is not nothrow_move_constructible!" );
85203 
85204   template <>
85205   struct CppType<StructureType, StructureType::eViSurfaceCreateInfoNN>
85206   {
85207     using Type = ViSurfaceCreateInfoNN;
85208   };
85209 #endif /*VK_USE_PLATFORM_VI_NN*/
85210 
85211 #if defined( VK_ENABLE_BETA_EXTENSIONS )
85212   struct VideoPictureResourceKHR
85213   {
85214     using NativeType = VkVideoPictureResourceKHR;
85215 
85216     static const bool                                  allowDuplicate = false;
85217     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoPictureResourceKHR;
85218 
85219 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
85220     VULKAN_HPP_CONSTEXPR
VideoPictureResourceKHRVULKAN_HPP_NAMESPACE::VideoPictureResourceKHR85221       VideoPictureResourceKHR( VULKAN_HPP_NAMESPACE::Offset2D  codedOffset_      = {},
85222                                VULKAN_HPP_NAMESPACE::Extent2D  codedExtent_      = {},
85223                                uint32_t                        baseArrayLayer_   = {},
85224                                VULKAN_HPP_NAMESPACE::ImageView imageViewBinding_ = {} ) VULKAN_HPP_NOEXCEPT
85225       : codedOffset( codedOffset_ )
85226       , codedExtent( codedExtent_ )
85227       , baseArrayLayer( baseArrayLayer_ )
85228       , imageViewBinding( imageViewBinding_ )
85229     {}
85230 
85231     VULKAN_HPP_CONSTEXPR VideoPictureResourceKHR( VideoPictureResourceKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85232 
VideoPictureResourceKHRVULKAN_HPP_NAMESPACE::VideoPictureResourceKHR85233     VideoPictureResourceKHR( VkVideoPictureResourceKHR const & rhs ) VULKAN_HPP_NOEXCEPT
85234       : VideoPictureResourceKHR( *reinterpret_cast<VideoPictureResourceKHR const *>( &rhs ) )
85235     {}
85236 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
85237 
85238     VideoPictureResourceKHR & operator=( VideoPictureResourceKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85239 
operator =VULKAN_HPP_NAMESPACE::VideoPictureResourceKHR85240     VideoPictureResourceKHR & operator=( VkVideoPictureResourceKHR const & rhs ) VULKAN_HPP_NOEXCEPT
85241     {
85242       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoPictureResourceKHR const *>( &rhs );
85243       return *this;
85244     }
85245 
85246 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoPictureResourceKHR85247     VULKAN_HPP_CONSTEXPR_14 VideoPictureResourceKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
85248     {
85249       pNext = pNext_;
85250       return *this;
85251     }
85252 
85253     VULKAN_HPP_CONSTEXPR_14 VideoPictureResourceKHR &
setCodedOffsetVULKAN_HPP_NAMESPACE::VideoPictureResourceKHR85254                             setCodedOffset( VULKAN_HPP_NAMESPACE::Offset2D const & codedOffset_ ) VULKAN_HPP_NOEXCEPT
85255     {
85256       codedOffset = codedOffset_;
85257       return *this;
85258     }
85259 
85260     VULKAN_HPP_CONSTEXPR_14 VideoPictureResourceKHR &
setCodedExtentVULKAN_HPP_NAMESPACE::VideoPictureResourceKHR85261                             setCodedExtent( VULKAN_HPP_NAMESPACE::Extent2D const & codedExtent_ ) VULKAN_HPP_NOEXCEPT
85262     {
85263       codedExtent = codedExtent_;
85264       return *this;
85265     }
85266 
setBaseArrayLayerVULKAN_HPP_NAMESPACE::VideoPictureResourceKHR85267     VULKAN_HPP_CONSTEXPR_14 VideoPictureResourceKHR & setBaseArrayLayer( uint32_t baseArrayLayer_ ) VULKAN_HPP_NOEXCEPT
85268     {
85269       baseArrayLayer = baseArrayLayer_;
85270       return *this;
85271     }
85272 
85273     VULKAN_HPP_CONSTEXPR_14 VideoPictureResourceKHR &
setImageViewBindingVULKAN_HPP_NAMESPACE::VideoPictureResourceKHR85274                             setImageViewBinding( VULKAN_HPP_NAMESPACE::ImageView imageViewBinding_ ) VULKAN_HPP_NOEXCEPT
85275     {
85276       imageViewBinding = imageViewBinding_;
85277       return *this;
85278     }
85279 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
85280 
operator VkVideoPictureResourceKHR const&VULKAN_HPP_NAMESPACE::VideoPictureResourceKHR85281     explicit operator VkVideoPictureResourceKHR const &() const VULKAN_HPP_NOEXCEPT
85282     {
85283       return *reinterpret_cast<const VkVideoPictureResourceKHR *>( this );
85284     }
85285 
operator VkVideoPictureResourceKHR&VULKAN_HPP_NAMESPACE::VideoPictureResourceKHR85286     explicit operator VkVideoPictureResourceKHR &() VULKAN_HPP_NOEXCEPT
85287     {
85288       return *reinterpret_cast<VkVideoPictureResourceKHR *>( this );
85289     }
85290 
85291 #  if 14 <= VULKAN_HPP_CPP_VERSION
85292     auto
85293 #  else
85294     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
85295                const void * const &,
85296                VULKAN_HPP_NAMESPACE::Offset2D const &,
85297                VULKAN_HPP_NAMESPACE::Extent2D const &,
85298                uint32_t const &,
85299                VULKAN_HPP_NAMESPACE::ImageView const &>
85300 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoPictureResourceKHR85301       reflect() const VULKAN_HPP_NOEXCEPT
85302     {
85303       return std::tie( sType, pNext, codedOffset, codedExtent, baseArrayLayer, imageViewBinding );
85304     }
85305 
85306 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
85307     auto operator<=>( VideoPictureResourceKHR const & ) const = default;
85308 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoPictureResourceKHR85309     bool operator==( VideoPictureResourceKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
85310     {
85311       return this->reflect() == rhs.reflect();
85312     }
85313 
operator !=VULKAN_HPP_NAMESPACE::VideoPictureResourceKHR85314     bool operator!=( VideoPictureResourceKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
85315     {
85316       return this->reflect() != rhs.reflect();
85317     }
85318 #  endif
85319 
85320   public:
85321     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::eVideoPictureResourceKHR;
85322     const void *                        pNext            = {};
85323     VULKAN_HPP_NAMESPACE::Offset2D      codedOffset      = {};
85324     VULKAN_HPP_NAMESPACE::Extent2D      codedExtent      = {};
85325     uint32_t                            baseArrayLayer   = {};
85326     VULKAN_HPP_NAMESPACE::ImageView     imageViewBinding = {};
85327   };
85328   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoPictureResourceKHR ) ==
85329                               sizeof( VkVideoPictureResourceKHR ),
85330                             "struct and wrapper have different size!" );
85331   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoPictureResourceKHR>::value,
85332                             "struct wrapper is not a standard layout!" );
85333   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoPictureResourceKHR>::value,
85334                             "VideoPictureResourceKHR is not nothrow_move_constructible!" );
85335 
85336   template <>
85337   struct CppType<StructureType, StructureType::eVideoPictureResourceKHR>
85338   {
85339     using Type = VideoPictureResourceKHR;
85340   };
85341 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
85342 
85343 #if defined( VK_ENABLE_BETA_EXTENSIONS )
85344   struct VideoReferenceSlotKHR
85345   {
85346     using NativeType = VkVideoReferenceSlotKHR;
85347 
85348     static const bool                                  allowDuplicate = false;
85349     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoReferenceSlotKHR;
85350 
85351 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoReferenceSlotKHRVULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR85352     VULKAN_HPP_CONSTEXPR VideoReferenceSlotKHR(
85353       int8_t                                                slotIndex_        = {},
85354       const VULKAN_HPP_NAMESPACE::VideoPictureResourceKHR * pPictureResource_ = {} ) VULKAN_HPP_NOEXCEPT
85355       : slotIndex( slotIndex_ )
85356       , pPictureResource( pPictureResource_ )
85357     {}
85358 
85359     VULKAN_HPP_CONSTEXPR VideoReferenceSlotKHR( VideoReferenceSlotKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85360 
VideoReferenceSlotKHRVULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR85361     VideoReferenceSlotKHR( VkVideoReferenceSlotKHR const & rhs ) VULKAN_HPP_NOEXCEPT
85362       : VideoReferenceSlotKHR( *reinterpret_cast<VideoReferenceSlotKHR const *>( &rhs ) )
85363     {}
85364 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
85365 
85366     VideoReferenceSlotKHR & operator=( VideoReferenceSlotKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85367 
operator =VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR85368     VideoReferenceSlotKHR & operator=( VkVideoReferenceSlotKHR const & rhs ) VULKAN_HPP_NOEXCEPT
85369     {
85370       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR const *>( &rhs );
85371       return *this;
85372     }
85373 
85374 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR85375     VULKAN_HPP_CONSTEXPR_14 VideoReferenceSlotKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
85376     {
85377       pNext = pNext_;
85378       return *this;
85379     }
85380 
setSlotIndexVULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR85381     VULKAN_HPP_CONSTEXPR_14 VideoReferenceSlotKHR & setSlotIndex( int8_t slotIndex_ ) VULKAN_HPP_NOEXCEPT
85382     {
85383       slotIndex = slotIndex_;
85384       return *this;
85385     }
85386 
85387     VULKAN_HPP_CONSTEXPR_14 VideoReferenceSlotKHR &
setPPictureResourceVULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR85388       setPPictureResource( const VULKAN_HPP_NAMESPACE::VideoPictureResourceKHR * pPictureResource_ ) VULKAN_HPP_NOEXCEPT
85389     {
85390       pPictureResource = pPictureResource_;
85391       return *this;
85392     }
85393 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
85394 
operator VkVideoReferenceSlotKHR const&VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR85395     explicit operator VkVideoReferenceSlotKHR const &() const VULKAN_HPP_NOEXCEPT
85396     {
85397       return *reinterpret_cast<const VkVideoReferenceSlotKHR *>( this );
85398     }
85399 
operator VkVideoReferenceSlotKHR&VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR85400     explicit operator VkVideoReferenceSlotKHR &() VULKAN_HPP_NOEXCEPT
85401     {
85402       return *reinterpret_cast<VkVideoReferenceSlotKHR *>( this );
85403     }
85404 
85405 #  if 14 <= VULKAN_HPP_CPP_VERSION
85406     auto
85407 #  else
85408     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
85409                const void * const &,
85410                int8_t const &,
85411                const VULKAN_HPP_NAMESPACE::VideoPictureResourceKHR * const &>
85412 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR85413       reflect() const VULKAN_HPP_NOEXCEPT
85414     {
85415       return std::tie( sType, pNext, slotIndex, pPictureResource );
85416     }
85417 
85418 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
85419     auto operator<=>( VideoReferenceSlotKHR const & ) const = default;
85420 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR85421     bool operator==( VideoReferenceSlotKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
85422     {
85423       return this->reflect() == rhs.reflect();
85424     }
85425 
operator !=VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR85426     bool operator!=( VideoReferenceSlotKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
85427     {
85428       return this->reflect() != rhs.reflect();
85429     }
85430 #  endif
85431 
85432   public:
85433     VULKAN_HPP_NAMESPACE::StructureType                   sType            = StructureType::eVideoReferenceSlotKHR;
85434     const void *                                          pNext            = {};
85435     int8_t                                                slotIndex        = {};
85436     const VULKAN_HPP_NAMESPACE::VideoPictureResourceKHR * pPictureResource = {};
85437   };
85438   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR ) == sizeof( VkVideoReferenceSlotKHR ),
85439                             "struct and wrapper have different size!" );
85440   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR>::value,
85441                             "struct wrapper is not a standard layout!" );
85442   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR>::value,
85443                             "VideoReferenceSlotKHR is not nothrow_move_constructible!" );
85444 
85445   template <>
85446   struct CppType<StructureType, StructureType::eVideoReferenceSlotKHR>
85447   {
85448     using Type = VideoReferenceSlotKHR;
85449   };
85450 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
85451 
85452 #if defined( VK_ENABLE_BETA_EXTENSIONS )
85453   struct VideoBeginCodingInfoKHR
85454   {
85455     using NativeType = VkVideoBeginCodingInfoKHR;
85456 
85457     static const bool                                  allowDuplicate = false;
85458     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoBeginCodingInfoKHR;
85459 
85460 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoBeginCodingInfoKHRVULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR85461     VULKAN_HPP_CONSTEXPR VideoBeginCodingInfoKHR(
85462       VULKAN_HPP_NAMESPACE::VideoBeginCodingFlagsKHR         flags_                  = {},
85463       VULKAN_HPP_NAMESPACE::VideoCodingQualityPresetFlagsKHR codecQualityPreset_     = {},
85464       VULKAN_HPP_NAMESPACE::VideoSessionKHR                  videoSession_           = {},
85465       VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR        videoSessionParameters_ = {},
85466       uint32_t                                               referenceSlotCount_     = {},
85467       const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR *    pReferenceSlots_        = {} ) VULKAN_HPP_NOEXCEPT
85468       : flags( flags_ )
85469       , codecQualityPreset( codecQualityPreset_ )
85470       , videoSession( videoSession_ )
85471       , videoSessionParameters( videoSessionParameters_ )
85472       , referenceSlotCount( referenceSlotCount_ )
85473       , pReferenceSlots( pReferenceSlots_ )
85474     {}
85475 
85476     VULKAN_HPP_CONSTEXPR VideoBeginCodingInfoKHR( VideoBeginCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85477 
VideoBeginCodingInfoKHRVULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR85478     VideoBeginCodingInfoKHR( VkVideoBeginCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
85479       : VideoBeginCodingInfoKHR( *reinterpret_cast<VideoBeginCodingInfoKHR const *>( &rhs ) )
85480     {}
85481 
85482 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoBeginCodingInfoKHRVULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR85483     VideoBeginCodingInfoKHR(
85484       VULKAN_HPP_NAMESPACE::VideoBeginCodingFlagsKHR         flags_,
85485       VULKAN_HPP_NAMESPACE::VideoCodingQualityPresetFlagsKHR codecQualityPreset_,
85486       VULKAN_HPP_NAMESPACE::VideoSessionKHR                  videoSession_,
85487       VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR        videoSessionParameters_,
85488       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR> const &
85489         referenceSlots_ )
85490       : flags( flags_ )
85491       , codecQualityPreset( codecQualityPreset_ )
85492       , videoSession( videoSession_ )
85493       , videoSessionParameters( videoSessionParameters_ )
85494       , referenceSlotCount( static_cast<uint32_t>( referenceSlots_.size() ) )
85495       , pReferenceSlots( referenceSlots_.data() )
85496     {}
85497 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
85498 #  endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
85499 
85500     VideoBeginCodingInfoKHR & operator=( VideoBeginCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85501 
operator =VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR85502     VideoBeginCodingInfoKHR & operator=( VkVideoBeginCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
85503     {
85504       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR const *>( &rhs );
85505       return *this;
85506     }
85507 
85508 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR85509     VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
85510     {
85511       pNext = pNext_;
85512       return *this;
85513     }
85514 
85515     VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR &
setFlagsVULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR85516                             setFlags( VULKAN_HPP_NAMESPACE::VideoBeginCodingFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
85517     {
85518       flags = flags_;
85519       return *this;
85520     }
85521 
setCodecQualityPresetVULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR85522     VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR & setCodecQualityPreset(
85523       VULKAN_HPP_NAMESPACE::VideoCodingQualityPresetFlagsKHR codecQualityPreset_ ) VULKAN_HPP_NOEXCEPT
85524     {
85525       codecQualityPreset = codecQualityPreset_;
85526       return *this;
85527     }
85528 
85529     VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR &
setVideoSessionVULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR85530                             setVideoSession( VULKAN_HPP_NAMESPACE::VideoSessionKHR videoSession_ ) VULKAN_HPP_NOEXCEPT
85531     {
85532       videoSession = videoSession_;
85533       return *this;
85534     }
85535 
setVideoSessionParametersVULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR85536     VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR & setVideoSessionParameters(
85537       VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParameters_ ) VULKAN_HPP_NOEXCEPT
85538     {
85539       videoSessionParameters = videoSessionParameters_;
85540       return *this;
85541     }
85542 
85543     VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR &
setReferenceSlotCountVULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR85544                             setReferenceSlotCount( uint32_t referenceSlotCount_ ) VULKAN_HPP_NOEXCEPT
85545     {
85546       referenceSlotCount = referenceSlotCount_;
85547       return *this;
85548     }
85549 
85550     VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR &
setPReferenceSlotsVULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR85551       setPReferenceSlots( const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR * pReferenceSlots_ ) VULKAN_HPP_NOEXCEPT
85552     {
85553       pReferenceSlots = pReferenceSlots_;
85554       return *this;
85555     }
85556 
85557 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setReferenceSlotsVULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR85558     VideoBeginCodingInfoKHR & setReferenceSlots(
85559       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR> const &
85560         referenceSlots_ ) VULKAN_HPP_NOEXCEPT
85561     {
85562       referenceSlotCount = static_cast<uint32_t>( referenceSlots_.size() );
85563       pReferenceSlots    = referenceSlots_.data();
85564       return *this;
85565     }
85566 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
85567 #  endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
85568 
operator VkVideoBeginCodingInfoKHR const&VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR85569     explicit operator VkVideoBeginCodingInfoKHR const &() const VULKAN_HPP_NOEXCEPT
85570     {
85571       return *reinterpret_cast<const VkVideoBeginCodingInfoKHR *>( this );
85572     }
85573 
operator VkVideoBeginCodingInfoKHR&VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR85574     explicit operator VkVideoBeginCodingInfoKHR &() VULKAN_HPP_NOEXCEPT
85575     {
85576       return *reinterpret_cast<VkVideoBeginCodingInfoKHR *>( this );
85577     }
85578 
85579 #  if 14 <= VULKAN_HPP_CPP_VERSION
85580     auto
85581 #  else
85582     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
85583                const void * const &,
85584                VULKAN_HPP_NAMESPACE::VideoBeginCodingFlagsKHR const &,
85585                VULKAN_HPP_NAMESPACE::VideoCodingQualityPresetFlagsKHR const &,
85586                VULKAN_HPP_NAMESPACE::VideoSessionKHR const &,
85587                VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR const &,
85588                uint32_t const &,
85589                const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR * const &>
85590 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR85591       reflect() const VULKAN_HPP_NOEXCEPT
85592     {
85593       return std::tie( sType,
85594                        pNext,
85595                        flags,
85596                        codecQualityPreset,
85597                        videoSession,
85598                        videoSessionParameters,
85599                        referenceSlotCount,
85600                        pReferenceSlots );
85601     }
85602 
85603 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
85604     auto operator<=>( VideoBeginCodingInfoKHR const & ) const = default;
85605 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR85606     bool operator==( VideoBeginCodingInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
85607     {
85608       return this->reflect() == rhs.reflect();
85609     }
85610 
operator !=VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR85611     bool operator!=( VideoBeginCodingInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
85612     {
85613       return this->reflect() != rhs.reflect();
85614     }
85615 #  endif
85616 
85617   public:
85618     VULKAN_HPP_NAMESPACE::StructureType                    sType              = StructureType::eVideoBeginCodingInfoKHR;
85619     const void *                                           pNext              = {};
85620     VULKAN_HPP_NAMESPACE::VideoBeginCodingFlagsKHR         flags              = {};
85621     VULKAN_HPP_NAMESPACE::VideoCodingQualityPresetFlagsKHR codecQualityPreset = {};
85622     VULKAN_HPP_NAMESPACE::VideoSessionKHR                  videoSession       = {};
85623     VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR        videoSessionParameters = {};
85624     uint32_t                                               referenceSlotCount     = {};
85625     const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR *    pReferenceSlots        = {};
85626   };
85627   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR ) ==
85628                               sizeof( VkVideoBeginCodingInfoKHR ),
85629                             "struct and wrapper have different size!" );
85630   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR>::value,
85631                             "struct wrapper is not a standard layout!" );
85632   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR>::value,
85633                             "VideoBeginCodingInfoKHR is not nothrow_move_constructible!" );
85634 
85635   template <>
85636   struct CppType<StructureType, StructureType::eVideoBeginCodingInfoKHR>
85637   {
85638     using Type = VideoBeginCodingInfoKHR;
85639   };
85640 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
85641 
85642 #if defined( VK_ENABLE_BETA_EXTENSIONS )
85643   struct VideoBindMemoryKHR
85644   {
85645     using NativeType = VkVideoBindMemoryKHR;
85646 
85647     static const bool                                  allowDuplicate = false;
85648     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoBindMemoryKHR;
85649 
85650 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoBindMemoryKHRVULKAN_HPP_NAMESPACE::VideoBindMemoryKHR85651     VULKAN_HPP_CONSTEXPR VideoBindMemoryKHR( uint32_t                           memoryBindIndex_ = {},
85652                                              VULKAN_HPP_NAMESPACE::DeviceMemory memory_          = {},
85653                                              VULKAN_HPP_NAMESPACE::DeviceSize   memoryOffset_    = {},
85654                                              VULKAN_HPP_NAMESPACE::DeviceSize   memorySize_ = {} ) VULKAN_HPP_NOEXCEPT
85655       : memoryBindIndex( memoryBindIndex_ )
85656       , memory( memory_ )
85657       , memoryOffset( memoryOffset_ )
85658       , memorySize( memorySize_ )
85659     {}
85660 
85661     VULKAN_HPP_CONSTEXPR VideoBindMemoryKHR( VideoBindMemoryKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85662 
VideoBindMemoryKHRVULKAN_HPP_NAMESPACE::VideoBindMemoryKHR85663     VideoBindMemoryKHR( VkVideoBindMemoryKHR const & rhs ) VULKAN_HPP_NOEXCEPT
85664       : VideoBindMemoryKHR( *reinterpret_cast<VideoBindMemoryKHR const *>( &rhs ) )
85665     {}
85666 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
85667 
85668     VideoBindMemoryKHR & operator=( VideoBindMemoryKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85669 
operator =VULKAN_HPP_NAMESPACE::VideoBindMemoryKHR85670     VideoBindMemoryKHR & operator=( VkVideoBindMemoryKHR const & rhs ) VULKAN_HPP_NOEXCEPT
85671     {
85672       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoBindMemoryKHR const *>( &rhs );
85673       return *this;
85674     }
85675 
85676 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoBindMemoryKHR85677     VULKAN_HPP_CONSTEXPR_14 VideoBindMemoryKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
85678     {
85679       pNext = pNext_;
85680       return *this;
85681     }
85682 
setMemoryBindIndexVULKAN_HPP_NAMESPACE::VideoBindMemoryKHR85683     VULKAN_HPP_CONSTEXPR_14 VideoBindMemoryKHR & setMemoryBindIndex( uint32_t memoryBindIndex_ ) VULKAN_HPP_NOEXCEPT
85684     {
85685       memoryBindIndex = memoryBindIndex_;
85686       return *this;
85687     }
85688 
85689     VULKAN_HPP_CONSTEXPR_14 VideoBindMemoryKHR &
setMemoryVULKAN_HPP_NAMESPACE::VideoBindMemoryKHR85690                             setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
85691     {
85692       memory = memory_;
85693       return *this;
85694     }
85695 
85696     VULKAN_HPP_CONSTEXPR_14 VideoBindMemoryKHR &
setMemoryOffsetVULKAN_HPP_NAMESPACE::VideoBindMemoryKHR85697                             setMemoryOffset( VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ ) VULKAN_HPP_NOEXCEPT
85698     {
85699       memoryOffset = memoryOffset_;
85700       return *this;
85701     }
85702 
85703     VULKAN_HPP_CONSTEXPR_14 VideoBindMemoryKHR &
setMemorySizeVULKAN_HPP_NAMESPACE::VideoBindMemoryKHR85704                             setMemorySize( VULKAN_HPP_NAMESPACE::DeviceSize memorySize_ ) VULKAN_HPP_NOEXCEPT
85705     {
85706       memorySize = memorySize_;
85707       return *this;
85708     }
85709 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
85710 
operator VkVideoBindMemoryKHR const&VULKAN_HPP_NAMESPACE::VideoBindMemoryKHR85711     explicit operator VkVideoBindMemoryKHR const &() const VULKAN_HPP_NOEXCEPT
85712     {
85713       return *reinterpret_cast<const VkVideoBindMemoryKHR *>( this );
85714     }
85715 
operator VkVideoBindMemoryKHR&VULKAN_HPP_NAMESPACE::VideoBindMemoryKHR85716     explicit operator VkVideoBindMemoryKHR &() VULKAN_HPP_NOEXCEPT
85717     {
85718       return *reinterpret_cast<VkVideoBindMemoryKHR *>( this );
85719     }
85720 
85721 #  if 14 <= VULKAN_HPP_CPP_VERSION
85722     auto
85723 #  else
85724     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
85725                const void * const &,
85726                uint32_t const &,
85727                VULKAN_HPP_NAMESPACE::DeviceMemory const &,
85728                VULKAN_HPP_NAMESPACE::DeviceSize const &,
85729                VULKAN_HPP_NAMESPACE::DeviceSize const &>
85730 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoBindMemoryKHR85731       reflect() const VULKAN_HPP_NOEXCEPT
85732     {
85733       return std::tie( sType, pNext, memoryBindIndex, memory, memoryOffset, memorySize );
85734     }
85735 
85736 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
85737     auto operator<=>( VideoBindMemoryKHR const & ) const = default;
85738 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoBindMemoryKHR85739     bool operator==( VideoBindMemoryKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
85740     {
85741       return this->reflect() == rhs.reflect();
85742     }
85743 
operator !=VULKAN_HPP_NAMESPACE::VideoBindMemoryKHR85744     bool operator!=( VideoBindMemoryKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
85745     {
85746       return this->reflect() != rhs.reflect();
85747     }
85748 #  endif
85749 
85750   public:
85751     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::eVideoBindMemoryKHR;
85752     const void *                        pNext           = {};
85753     uint32_t                            memoryBindIndex = {};
85754     VULKAN_HPP_NAMESPACE::DeviceMemory  memory          = {};
85755     VULKAN_HPP_NAMESPACE::DeviceSize    memoryOffset    = {};
85756     VULKAN_HPP_NAMESPACE::DeviceSize    memorySize      = {};
85757   };
85758   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoBindMemoryKHR ) == sizeof( VkVideoBindMemoryKHR ),
85759                             "struct and wrapper have different size!" );
85760   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoBindMemoryKHR>::value,
85761                             "struct wrapper is not a standard layout!" );
85762   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoBindMemoryKHR>::value,
85763                             "VideoBindMemoryKHR is not nothrow_move_constructible!" );
85764 
85765   template <>
85766   struct CppType<StructureType, StructureType::eVideoBindMemoryKHR>
85767   {
85768     using Type = VideoBindMemoryKHR;
85769   };
85770 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
85771 
85772 #if defined( VK_ENABLE_BETA_EXTENSIONS )
85773   struct VideoCapabilitiesKHR
85774   {
85775     using NativeType = VkVideoCapabilitiesKHR;
85776 
85777     static const bool                                  allowDuplicate = false;
85778     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoCapabilitiesKHR;
85779 
85780 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoCapabilitiesKHRVULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR85781     VULKAN_HPP_CONSTEXPR VideoCapabilitiesKHR( VULKAN_HPP_NAMESPACE::VideoCapabilityFlagsKHR capabilityFlags_      = {},
85782                                                VULKAN_HPP_NAMESPACE::DeviceSize minBitstreamBufferOffsetAlignment_ = {},
85783                                                VULKAN_HPP_NAMESPACE::DeviceSize minBitstreamBufferSizeAlignment_   = {},
85784                                                VULKAN_HPP_NAMESPACE::Extent2D   videoPictureExtentGranularity_     = {},
85785                                                VULKAN_HPP_NAMESPACE::Extent2D   minExtent_                         = {},
85786                                                VULKAN_HPP_NAMESPACE::Extent2D   maxExtent_                         = {},
85787                                                uint32_t                         maxReferencePicturesSlotsCount_    = {},
85788                                                uint32_t maxReferencePicturesActiveCount_ = {} ) VULKAN_HPP_NOEXCEPT
85789       : capabilityFlags( capabilityFlags_ )
85790       , minBitstreamBufferOffsetAlignment( minBitstreamBufferOffsetAlignment_ )
85791       , minBitstreamBufferSizeAlignment( minBitstreamBufferSizeAlignment_ )
85792       , videoPictureExtentGranularity( videoPictureExtentGranularity_ )
85793       , minExtent( minExtent_ )
85794       , maxExtent( maxExtent_ )
85795       , maxReferencePicturesSlotsCount( maxReferencePicturesSlotsCount_ )
85796       , maxReferencePicturesActiveCount( maxReferencePicturesActiveCount_ )
85797     {}
85798 
85799     VULKAN_HPP_CONSTEXPR VideoCapabilitiesKHR( VideoCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85800 
VideoCapabilitiesKHRVULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR85801     VideoCapabilitiesKHR( VkVideoCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
85802       : VideoCapabilitiesKHR( *reinterpret_cast<VideoCapabilitiesKHR const *>( &rhs ) )
85803     {}
85804 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
85805 
85806     VideoCapabilitiesKHR & operator=( VideoCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85807 
operator =VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR85808     VideoCapabilitiesKHR & operator=( VkVideoCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
85809     {
85810       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR const *>( &rhs );
85811       return *this;
85812     }
85813 
operator VkVideoCapabilitiesKHR const&VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR85814     explicit operator VkVideoCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT
85815     {
85816       return *reinterpret_cast<const VkVideoCapabilitiesKHR *>( this );
85817     }
85818 
operator VkVideoCapabilitiesKHR&VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR85819     explicit operator VkVideoCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT
85820     {
85821       return *reinterpret_cast<VkVideoCapabilitiesKHR *>( this );
85822     }
85823 
85824 #  if 14 <= VULKAN_HPP_CPP_VERSION
85825     auto
85826 #  else
85827     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
85828                void * const &,
85829                VULKAN_HPP_NAMESPACE::VideoCapabilityFlagsKHR const &,
85830                VULKAN_HPP_NAMESPACE::DeviceSize const &,
85831                VULKAN_HPP_NAMESPACE::DeviceSize const &,
85832                VULKAN_HPP_NAMESPACE::Extent2D const &,
85833                VULKAN_HPP_NAMESPACE::Extent2D const &,
85834                VULKAN_HPP_NAMESPACE::Extent2D const &,
85835                uint32_t const &,
85836                uint32_t const &>
85837 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR85838       reflect() const VULKAN_HPP_NOEXCEPT
85839     {
85840       return std::tie( sType,
85841                        pNext,
85842                        capabilityFlags,
85843                        minBitstreamBufferOffsetAlignment,
85844                        minBitstreamBufferSizeAlignment,
85845                        videoPictureExtentGranularity,
85846                        minExtent,
85847                        maxExtent,
85848                        maxReferencePicturesSlotsCount,
85849                        maxReferencePicturesActiveCount );
85850     }
85851 
85852 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
85853     auto operator<=>( VideoCapabilitiesKHR const & ) const = default;
85854 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR85855     bool operator==( VideoCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
85856     {
85857       return this->reflect() == rhs.reflect();
85858     }
85859 
operator !=VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR85860     bool operator!=( VideoCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
85861     {
85862       return this->reflect() != rhs.reflect();
85863     }
85864 #  endif
85865 
85866   public:
85867     VULKAN_HPP_NAMESPACE::StructureType           sType           = StructureType::eVideoCapabilitiesKHR;
85868     void *                                        pNext           = {};
85869     VULKAN_HPP_NAMESPACE::VideoCapabilityFlagsKHR capabilityFlags = {};
85870     VULKAN_HPP_NAMESPACE::DeviceSize              minBitstreamBufferOffsetAlignment = {};
85871     VULKAN_HPP_NAMESPACE::DeviceSize              minBitstreamBufferSizeAlignment   = {};
85872     VULKAN_HPP_NAMESPACE::Extent2D                videoPictureExtentGranularity     = {};
85873     VULKAN_HPP_NAMESPACE::Extent2D                minExtent                         = {};
85874     VULKAN_HPP_NAMESPACE::Extent2D                maxExtent                         = {};
85875     uint32_t                                      maxReferencePicturesSlotsCount    = {};
85876     uint32_t                                      maxReferencePicturesActiveCount   = {};
85877   };
85878   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR ) == sizeof( VkVideoCapabilitiesKHR ),
85879                             "struct and wrapper have different size!" );
85880   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR>::value,
85881                             "struct wrapper is not a standard layout!" );
85882   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR>::value,
85883                             "VideoCapabilitiesKHR is not nothrow_move_constructible!" );
85884 
85885   template <>
85886   struct CppType<StructureType, StructureType::eVideoCapabilitiesKHR>
85887   {
85888     using Type = VideoCapabilitiesKHR;
85889   };
85890 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
85891 
85892 #if defined( VK_ENABLE_BETA_EXTENSIONS )
85893   struct VideoCodingControlInfoKHR
85894   {
85895     using NativeType = VkVideoCodingControlInfoKHR;
85896 
85897     static const bool                                  allowDuplicate = false;
85898     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoCodingControlInfoKHR;
85899 
85900 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
85901     VULKAN_HPP_CONSTEXPR
VideoCodingControlInfoKHRVULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR85902       VideoCodingControlInfoKHR( VULKAN_HPP_NAMESPACE::VideoCodingControlFlagsKHR flags_ = {} ) VULKAN_HPP_NOEXCEPT
85903       : flags( flags_ )
85904     {}
85905 
85906     VULKAN_HPP_CONSTEXPR
85907       VideoCodingControlInfoKHR( VideoCodingControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85908 
VideoCodingControlInfoKHRVULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR85909     VideoCodingControlInfoKHR( VkVideoCodingControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
85910       : VideoCodingControlInfoKHR( *reinterpret_cast<VideoCodingControlInfoKHR const *>( &rhs ) )
85911     {}
85912 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
85913 
85914     VideoCodingControlInfoKHR & operator=( VideoCodingControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85915 
operator =VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR85916     VideoCodingControlInfoKHR & operator=( VkVideoCodingControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
85917     {
85918       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR const *>( &rhs );
85919       return *this;
85920     }
85921 
85922 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR85923     VULKAN_HPP_CONSTEXPR_14 VideoCodingControlInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
85924     {
85925       pNext = pNext_;
85926       return *this;
85927     }
85928 
85929     VULKAN_HPP_CONSTEXPR_14 VideoCodingControlInfoKHR &
setFlagsVULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR85930                             setFlags( VULKAN_HPP_NAMESPACE::VideoCodingControlFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
85931     {
85932       flags = flags_;
85933       return *this;
85934     }
85935 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
85936 
operator VkVideoCodingControlInfoKHR const&VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR85937     explicit operator VkVideoCodingControlInfoKHR const &() const VULKAN_HPP_NOEXCEPT
85938     {
85939       return *reinterpret_cast<const VkVideoCodingControlInfoKHR *>( this );
85940     }
85941 
operator VkVideoCodingControlInfoKHR&VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR85942     explicit operator VkVideoCodingControlInfoKHR &() VULKAN_HPP_NOEXCEPT
85943     {
85944       return *reinterpret_cast<VkVideoCodingControlInfoKHR *>( this );
85945     }
85946 
85947 #  if 14 <= VULKAN_HPP_CPP_VERSION
85948     auto
85949 #  else
85950     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
85951                const void * const &,
85952                VULKAN_HPP_NAMESPACE::VideoCodingControlFlagsKHR const &>
85953 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR85954       reflect() const VULKAN_HPP_NOEXCEPT
85955     {
85956       return std::tie( sType, pNext, flags );
85957     }
85958 
85959 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
85960     auto operator<=>( VideoCodingControlInfoKHR const & ) const = default;
85961 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR85962     bool operator==( VideoCodingControlInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
85963     {
85964       return this->reflect() == rhs.reflect();
85965     }
85966 
operator !=VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR85967     bool operator!=( VideoCodingControlInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
85968     {
85969       return this->reflect() != rhs.reflect();
85970     }
85971 #  endif
85972 
85973   public:
85974     VULKAN_HPP_NAMESPACE::StructureType              sType = StructureType::eVideoCodingControlInfoKHR;
85975     const void *                                     pNext = {};
85976     VULKAN_HPP_NAMESPACE::VideoCodingControlFlagsKHR flags = {};
85977   };
85978   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR ) ==
85979                               sizeof( VkVideoCodingControlInfoKHR ),
85980                             "struct and wrapper have different size!" );
85981   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR>::value,
85982                             "struct wrapper is not a standard layout!" );
85983   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR>::value,
85984                             "VideoCodingControlInfoKHR is not nothrow_move_constructible!" );
85985 
85986   template <>
85987   struct CppType<StructureType, StructureType::eVideoCodingControlInfoKHR>
85988   {
85989     using Type = VideoCodingControlInfoKHR;
85990   };
85991 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
85992 
85993 #if defined( VK_ENABLE_BETA_EXTENSIONS )
85994   struct VideoDecodeH264CapabilitiesEXT
85995   {
85996     using NativeType = VkVideoDecodeH264CapabilitiesEXT;
85997 
85998     static const bool                                  allowDuplicate = false;
85999     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeH264CapabilitiesEXT;
86000 
86001 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeH264CapabilitiesEXTVULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesEXT86002     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264CapabilitiesEXT(
86003       uint32_t                                  maxLevel_               = {},
86004       VULKAN_HPP_NAMESPACE::Offset2D            fieldOffsetGranularity_ = {},
86005       VULKAN_HPP_NAMESPACE::ExtensionProperties stdExtensionVersion_    = {} ) VULKAN_HPP_NOEXCEPT
86006       : maxLevel( maxLevel_ )
86007       , fieldOffsetGranularity( fieldOffsetGranularity_ )
86008       , stdExtensionVersion( stdExtensionVersion_ )
86009     {}
86010 
86011     VULKAN_HPP_CONSTEXPR_14
86012       VideoDecodeH264CapabilitiesEXT( VideoDecodeH264CapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86013 
VideoDecodeH264CapabilitiesEXTVULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesEXT86014     VideoDecodeH264CapabilitiesEXT( VkVideoDecodeH264CapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
86015       : VideoDecodeH264CapabilitiesEXT( *reinterpret_cast<VideoDecodeH264CapabilitiesEXT const *>( &rhs ) )
86016     {}
86017 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
86018 
86019     VideoDecodeH264CapabilitiesEXT &
86020       operator=( VideoDecodeH264CapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86021 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesEXT86022     VideoDecodeH264CapabilitiesEXT & operator=( VkVideoDecodeH264CapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
86023     {
86024       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesEXT const *>( &rhs );
86025       return *this;
86026     }
86027 
operator VkVideoDecodeH264CapabilitiesEXT const&VULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesEXT86028     explicit operator VkVideoDecodeH264CapabilitiesEXT const &() const VULKAN_HPP_NOEXCEPT
86029     {
86030       return *reinterpret_cast<const VkVideoDecodeH264CapabilitiesEXT *>( this );
86031     }
86032 
operator VkVideoDecodeH264CapabilitiesEXT&VULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesEXT86033     explicit operator VkVideoDecodeH264CapabilitiesEXT &() VULKAN_HPP_NOEXCEPT
86034     {
86035       return *reinterpret_cast<VkVideoDecodeH264CapabilitiesEXT *>( this );
86036     }
86037 
86038 #  if 14 <= VULKAN_HPP_CPP_VERSION
86039     auto
86040 #  else
86041     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
86042                void * const &,
86043                uint32_t const &,
86044                VULKAN_HPP_NAMESPACE::Offset2D const &,
86045                VULKAN_HPP_NAMESPACE::ExtensionProperties const &>
86046 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesEXT86047       reflect() const VULKAN_HPP_NOEXCEPT
86048     {
86049       return std::tie( sType, pNext, maxLevel, fieldOffsetGranularity, stdExtensionVersion );
86050     }
86051 
86052 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
86053     auto operator<=>( VideoDecodeH264CapabilitiesEXT const & ) const = default;
86054 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesEXT86055     bool operator==( VideoDecodeH264CapabilitiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
86056     {
86057       return this->reflect() == rhs.reflect();
86058     }
86059 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesEXT86060     bool operator!=( VideoDecodeH264CapabilitiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
86061     {
86062       return this->reflect() != rhs.reflect();
86063     }
86064 #  endif
86065 
86066   public:
86067     VULKAN_HPP_NAMESPACE::StructureType       sType                  = StructureType::eVideoDecodeH264CapabilitiesEXT;
86068     void *                                    pNext                  = {};
86069     uint32_t                                  maxLevel               = {};
86070     VULKAN_HPP_NAMESPACE::Offset2D            fieldOffsetGranularity = {};
86071     VULKAN_HPP_NAMESPACE::ExtensionProperties stdExtensionVersion    = {};
86072   };
86073   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesEXT ) ==
86074                               sizeof( VkVideoDecodeH264CapabilitiesEXT ),
86075                             "struct and wrapper have different size!" );
86076   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesEXT>::value,
86077                             "struct wrapper is not a standard layout!" );
86078   VULKAN_HPP_STATIC_ASSERT(
86079     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesEXT>::value,
86080     "VideoDecodeH264CapabilitiesEXT is not nothrow_move_constructible!" );
86081 
86082   template <>
86083   struct CppType<StructureType, StructureType::eVideoDecodeH264CapabilitiesEXT>
86084   {
86085     using Type = VideoDecodeH264CapabilitiesEXT;
86086   };
86087 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
86088 
86089 #if defined( VK_ENABLE_BETA_EXTENSIONS )
86090   struct VideoDecodeH264DpbSlotInfoEXT
86091   {
86092     using NativeType = VkVideoDecodeH264DpbSlotInfoEXT;
86093 
86094     static const bool                                  allowDuplicate = false;
86095     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeH264DpbSlotInfoEXT;
86096 
86097 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeH264DpbSlotInfoEXTVULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoEXT86098     VULKAN_HPP_CONSTEXPR VideoDecodeH264DpbSlotInfoEXT(
86099       const StdVideoDecodeH264ReferenceInfo * pStdReferenceInfo_ = {} ) VULKAN_HPP_NOEXCEPT
86100       : pStdReferenceInfo( pStdReferenceInfo_ )
86101     {}
86102 
86103     VULKAN_HPP_CONSTEXPR
86104       VideoDecodeH264DpbSlotInfoEXT( VideoDecodeH264DpbSlotInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86105 
VideoDecodeH264DpbSlotInfoEXTVULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoEXT86106     VideoDecodeH264DpbSlotInfoEXT( VkVideoDecodeH264DpbSlotInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
86107       : VideoDecodeH264DpbSlotInfoEXT( *reinterpret_cast<VideoDecodeH264DpbSlotInfoEXT const *>( &rhs ) )
86108     {}
86109 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
86110 
86111     VideoDecodeH264DpbSlotInfoEXT &
86112       operator=( VideoDecodeH264DpbSlotInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86113 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoEXT86114     VideoDecodeH264DpbSlotInfoEXT & operator=( VkVideoDecodeH264DpbSlotInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
86115     {
86116       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoEXT const *>( &rhs );
86117       return *this;
86118     }
86119 
86120 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoEXT86121     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264DpbSlotInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
86122     {
86123       pNext = pNext_;
86124       return *this;
86125     }
86126 
86127     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264DpbSlotInfoEXT &
setPStdReferenceInfoVULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoEXT86128       setPStdReferenceInfo( const StdVideoDecodeH264ReferenceInfo * pStdReferenceInfo_ ) VULKAN_HPP_NOEXCEPT
86129     {
86130       pStdReferenceInfo = pStdReferenceInfo_;
86131       return *this;
86132     }
86133 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
86134 
operator VkVideoDecodeH264DpbSlotInfoEXT const&VULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoEXT86135     explicit operator VkVideoDecodeH264DpbSlotInfoEXT const &() const VULKAN_HPP_NOEXCEPT
86136     {
86137       return *reinterpret_cast<const VkVideoDecodeH264DpbSlotInfoEXT *>( this );
86138     }
86139 
operator VkVideoDecodeH264DpbSlotInfoEXT&VULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoEXT86140     explicit operator VkVideoDecodeH264DpbSlotInfoEXT &() VULKAN_HPP_NOEXCEPT
86141     {
86142       return *reinterpret_cast<VkVideoDecodeH264DpbSlotInfoEXT *>( this );
86143     }
86144 
86145 #  if 14 <= VULKAN_HPP_CPP_VERSION
86146     auto
86147 #  else
86148     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
86149                const void * const &,
86150                const StdVideoDecodeH264ReferenceInfo * const &>
86151 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoEXT86152       reflect() const VULKAN_HPP_NOEXCEPT
86153     {
86154       return std::tie( sType, pNext, pStdReferenceInfo );
86155     }
86156 
86157 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
86158     auto operator<=>( VideoDecodeH264DpbSlotInfoEXT const & ) const = default;
86159 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoEXT86160     bool operator==( VideoDecodeH264DpbSlotInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
86161     {
86162       return this->reflect() == rhs.reflect();
86163     }
86164 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoEXT86165     bool operator!=( VideoDecodeH264DpbSlotInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
86166     {
86167       return this->reflect() != rhs.reflect();
86168     }
86169 #  endif
86170 
86171   public:
86172     VULKAN_HPP_NAMESPACE::StructureType     sType             = StructureType::eVideoDecodeH264DpbSlotInfoEXT;
86173     const void *                            pNext             = {};
86174     const StdVideoDecodeH264ReferenceInfo * pStdReferenceInfo = {};
86175   };
86176   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoEXT ) ==
86177                               sizeof( VkVideoDecodeH264DpbSlotInfoEXT ),
86178                             "struct and wrapper have different size!" );
86179   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoEXT>::value,
86180                             "struct wrapper is not a standard layout!" );
86181   VULKAN_HPP_STATIC_ASSERT(
86182     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoEXT>::value,
86183     "VideoDecodeH264DpbSlotInfoEXT is not nothrow_move_constructible!" );
86184 
86185   template <>
86186   struct CppType<StructureType, StructureType::eVideoDecodeH264DpbSlotInfoEXT>
86187   {
86188     using Type = VideoDecodeH264DpbSlotInfoEXT;
86189   };
86190 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
86191 
86192 #if defined( VK_ENABLE_BETA_EXTENSIONS )
86193   struct VideoDecodeH264MvcEXT
86194   {
86195     using NativeType = VkVideoDecodeH264MvcEXT;
86196 
86197     static const bool                                  allowDuplicate = false;
86198     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeH264MvcEXT;
86199 
86200 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeH264MvcEXTVULKAN_HPP_NAMESPACE::VideoDecodeH264MvcEXT86201     VULKAN_HPP_CONSTEXPR VideoDecodeH264MvcEXT( const StdVideoDecodeH264Mvc * pStdMvc_ = {} ) VULKAN_HPP_NOEXCEPT
86202       : pStdMvc( pStdMvc_ )
86203     {}
86204 
86205     VULKAN_HPP_CONSTEXPR VideoDecodeH264MvcEXT( VideoDecodeH264MvcEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86206 
VideoDecodeH264MvcEXTVULKAN_HPP_NAMESPACE::VideoDecodeH264MvcEXT86207     VideoDecodeH264MvcEXT( VkVideoDecodeH264MvcEXT const & rhs ) VULKAN_HPP_NOEXCEPT
86208       : VideoDecodeH264MvcEXT( *reinterpret_cast<VideoDecodeH264MvcEXT const *>( &rhs ) )
86209     {}
86210 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
86211 
86212     VideoDecodeH264MvcEXT & operator=( VideoDecodeH264MvcEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86213 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH264MvcEXT86214     VideoDecodeH264MvcEXT & operator=( VkVideoDecodeH264MvcEXT const & rhs ) VULKAN_HPP_NOEXCEPT
86215     {
86216       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH264MvcEXT const *>( &rhs );
86217       return *this;
86218     }
86219 
86220 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeH264MvcEXT86221     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264MvcEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
86222     {
86223       pNext = pNext_;
86224       return *this;
86225     }
86226 
86227     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264MvcEXT &
setPStdMvcVULKAN_HPP_NAMESPACE::VideoDecodeH264MvcEXT86228                             setPStdMvc( const StdVideoDecodeH264Mvc * pStdMvc_ ) VULKAN_HPP_NOEXCEPT
86229     {
86230       pStdMvc = pStdMvc_;
86231       return *this;
86232     }
86233 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
86234 
operator VkVideoDecodeH264MvcEXT const&VULKAN_HPP_NAMESPACE::VideoDecodeH264MvcEXT86235     explicit operator VkVideoDecodeH264MvcEXT const &() const VULKAN_HPP_NOEXCEPT
86236     {
86237       return *reinterpret_cast<const VkVideoDecodeH264MvcEXT *>( this );
86238     }
86239 
operator VkVideoDecodeH264MvcEXT&VULKAN_HPP_NAMESPACE::VideoDecodeH264MvcEXT86240     explicit operator VkVideoDecodeH264MvcEXT &() VULKAN_HPP_NOEXCEPT
86241     {
86242       return *reinterpret_cast<VkVideoDecodeH264MvcEXT *>( this );
86243     }
86244 
86245 #  if 14 <= VULKAN_HPP_CPP_VERSION
86246     auto
86247 #  else
86248     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const StdVideoDecodeH264Mvc * const &>
86249 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH264MvcEXT86250       reflect() const VULKAN_HPP_NOEXCEPT
86251     {
86252       return std::tie( sType, pNext, pStdMvc );
86253     }
86254 
86255 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
86256     auto operator<=>( VideoDecodeH264MvcEXT const & ) const = default;
86257 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH264MvcEXT86258     bool operator==( VideoDecodeH264MvcEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
86259     {
86260       return this->reflect() == rhs.reflect();
86261     }
86262 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH264MvcEXT86263     bool operator!=( VideoDecodeH264MvcEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
86264     {
86265       return this->reflect() != rhs.reflect();
86266     }
86267 #  endif
86268 
86269   public:
86270     VULKAN_HPP_NAMESPACE::StructureType sType   = StructureType::eVideoDecodeH264MvcEXT;
86271     const void *                        pNext   = {};
86272     const StdVideoDecodeH264Mvc *       pStdMvc = {};
86273   };
86274   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH264MvcEXT ) == sizeof( VkVideoDecodeH264MvcEXT ),
86275                             "struct and wrapper have different size!" );
86276   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoDecodeH264MvcEXT>::value,
86277                             "struct wrapper is not a standard layout!" );
86278   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoDecodeH264MvcEXT>::value,
86279                             "VideoDecodeH264MvcEXT is not nothrow_move_constructible!" );
86280 
86281   template <>
86282   struct CppType<StructureType, StructureType::eVideoDecodeH264MvcEXT>
86283   {
86284     using Type = VideoDecodeH264MvcEXT;
86285   };
86286 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
86287 
86288 #if defined( VK_ENABLE_BETA_EXTENSIONS )
86289   struct VideoDecodeH264PictureInfoEXT
86290   {
86291     using NativeType = VkVideoDecodeH264PictureInfoEXT;
86292 
86293     static const bool                                  allowDuplicate = false;
86294     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeH264PictureInfoEXT;
86295 
86296 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeH264PictureInfoEXTVULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoEXT86297     VULKAN_HPP_CONSTEXPR VideoDecodeH264PictureInfoEXT( const StdVideoDecodeH264PictureInfo * pStdPictureInfo_ = {},
86298                                                         uint32_t                              slicesCount_     = {},
86299                                                         const uint32_t * pSlicesDataOffsets_ = {} ) VULKAN_HPP_NOEXCEPT
86300       : pStdPictureInfo( pStdPictureInfo_ )
86301       , slicesCount( slicesCount_ )
86302       , pSlicesDataOffsets( pSlicesDataOffsets_ )
86303     {}
86304 
86305     VULKAN_HPP_CONSTEXPR
86306       VideoDecodeH264PictureInfoEXT( VideoDecodeH264PictureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86307 
VideoDecodeH264PictureInfoEXTVULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoEXT86308     VideoDecodeH264PictureInfoEXT( VkVideoDecodeH264PictureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
86309       : VideoDecodeH264PictureInfoEXT( *reinterpret_cast<VideoDecodeH264PictureInfoEXT const *>( &rhs ) )
86310     {}
86311 
86312 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoDecodeH264PictureInfoEXTVULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoEXT86313     VideoDecodeH264PictureInfoEXT(
86314       const StdVideoDecodeH264PictureInfo *                                 pStdPictureInfo_,
86315       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & slicesDataOffsets_ )
86316       : pStdPictureInfo( pStdPictureInfo_ )
86317       , slicesCount( static_cast<uint32_t>( slicesDataOffsets_.size() ) )
86318       , pSlicesDataOffsets( slicesDataOffsets_.data() )
86319     {}
86320 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
86321 #  endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
86322 
86323     VideoDecodeH264PictureInfoEXT &
86324       operator=( VideoDecodeH264PictureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86325 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoEXT86326     VideoDecodeH264PictureInfoEXT & operator=( VkVideoDecodeH264PictureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
86327     {
86328       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoEXT const *>( &rhs );
86329       return *this;
86330     }
86331 
86332 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoEXT86333     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264PictureInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
86334     {
86335       pNext = pNext_;
86336       return *this;
86337     }
86338 
86339     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264PictureInfoEXT &
setPStdPictureInfoVULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoEXT86340       setPStdPictureInfo( const StdVideoDecodeH264PictureInfo * pStdPictureInfo_ ) VULKAN_HPP_NOEXCEPT
86341     {
86342       pStdPictureInfo = pStdPictureInfo_;
86343       return *this;
86344     }
86345 
setSlicesCountVULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoEXT86346     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264PictureInfoEXT & setSlicesCount( uint32_t slicesCount_ ) VULKAN_HPP_NOEXCEPT
86347     {
86348       slicesCount = slicesCount_;
86349       return *this;
86350     }
86351 
86352     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264PictureInfoEXT &
setPSlicesDataOffsetsVULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoEXT86353                             setPSlicesDataOffsets( const uint32_t * pSlicesDataOffsets_ ) VULKAN_HPP_NOEXCEPT
86354     {
86355       pSlicesDataOffsets = pSlicesDataOffsets_;
86356       return *this;
86357     }
86358 
86359 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSlicesDataOffsetsVULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoEXT86360     VideoDecodeH264PictureInfoEXT & setSlicesDataOffsets(
86361       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & slicesDataOffsets_ ) VULKAN_HPP_NOEXCEPT
86362     {
86363       slicesCount        = static_cast<uint32_t>( slicesDataOffsets_.size() );
86364       pSlicesDataOffsets = slicesDataOffsets_.data();
86365       return *this;
86366     }
86367 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
86368 #  endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
86369 
operator VkVideoDecodeH264PictureInfoEXT const&VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoEXT86370     explicit operator VkVideoDecodeH264PictureInfoEXT const &() const VULKAN_HPP_NOEXCEPT
86371     {
86372       return *reinterpret_cast<const VkVideoDecodeH264PictureInfoEXT *>( this );
86373     }
86374 
operator VkVideoDecodeH264PictureInfoEXT&VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoEXT86375     explicit operator VkVideoDecodeH264PictureInfoEXT &() VULKAN_HPP_NOEXCEPT
86376     {
86377       return *reinterpret_cast<VkVideoDecodeH264PictureInfoEXT *>( this );
86378     }
86379 
86380 #  if 14 <= VULKAN_HPP_CPP_VERSION
86381     auto
86382 #  else
86383     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
86384                const void * const &,
86385                const StdVideoDecodeH264PictureInfo * const &,
86386                uint32_t const &,
86387                const uint32_t * const &>
86388 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoEXT86389       reflect() const VULKAN_HPP_NOEXCEPT
86390     {
86391       return std::tie( sType, pNext, pStdPictureInfo, slicesCount, pSlicesDataOffsets );
86392     }
86393 
86394 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
86395     auto operator<=>( VideoDecodeH264PictureInfoEXT const & ) const = default;
86396 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoEXT86397     bool operator==( VideoDecodeH264PictureInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
86398     {
86399       return this->reflect() == rhs.reflect();
86400     }
86401 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoEXT86402     bool operator!=( VideoDecodeH264PictureInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
86403     {
86404       return this->reflect() != rhs.reflect();
86405     }
86406 #  endif
86407 
86408   public:
86409     VULKAN_HPP_NAMESPACE::StructureType   sType              = StructureType::eVideoDecodeH264PictureInfoEXT;
86410     const void *                          pNext              = {};
86411     const StdVideoDecodeH264PictureInfo * pStdPictureInfo    = {};
86412     uint32_t                              slicesCount        = {};
86413     const uint32_t *                      pSlicesDataOffsets = {};
86414   };
86415   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoEXT ) ==
86416                               sizeof( VkVideoDecodeH264PictureInfoEXT ),
86417                             "struct and wrapper have different size!" );
86418   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoEXT>::value,
86419                             "struct wrapper is not a standard layout!" );
86420   VULKAN_HPP_STATIC_ASSERT(
86421     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoEXT>::value,
86422     "VideoDecodeH264PictureInfoEXT is not nothrow_move_constructible!" );
86423 
86424   template <>
86425   struct CppType<StructureType, StructureType::eVideoDecodeH264PictureInfoEXT>
86426   {
86427     using Type = VideoDecodeH264PictureInfoEXT;
86428   };
86429 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
86430 
86431 #if defined( VK_ENABLE_BETA_EXTENSIONS )
86432   struct VideoDecodeH264ProfileEXT
86433   {
86434     using NativeType = VkVideoDecodeH264ProfileEXT;
86435 
86436     static const bool                                  allowDuplicate = false;
86437     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeH264ProfileEXT;
86438 
86439 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeH264ProfileEXTVULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileEXT86440     VULKAN_HPP_CONSTEXPR VideoDecodeH264ProfileEXT(
86441       StdVideoH264ProfileIdc                                     stdProfileIdc_ = {},
86442       VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureLayoutFlagsEXT pictureLayout_ = {} ) VULKAN_HPP_NOEXCEPT
86443       : stdProfileIdc( stdProfileIdc_ )
86444       , pictureLayout( pictureLayout_ )
86445     {}
86446 
86447     VULKAN_HPP_CONSTEXPR
86448       VideoDecodeH264ProfileEXT( VideoDecodeH264ProfileEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86449 
VideoDecodeH264ProfileEXTVULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileEXT86450     VideoDecodeH264ProfileEXT( VkVideoDecodeH264ProfileEXT const & rhs ) VULKAN_HPP_NOEXCEPT
86451       : VideoDecodeH264ProfileEXT( *reinterpret_cast<VideoDecodeH264ProfileEXT const *>( &rhs ) )
86452     {}
86453 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
86454 
86455     VideoDecodeH264ProfileEXT & operator=( VideoDecodeH264ProfileEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86456 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileEXT86457     VideoDecodeH264ProfileEXT & operator=( VkVideoDecodeH264ProfileEXT const & rhs ) VULKAN_HPP_NOEXCEPT
86458     {
86459       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileEXT const *>( &rhs );
86460       return *this;
86461     }
86462 
86463 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileEXT86464     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264ProfileEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
86465     {
86466       pNext = pNext_;
86467       return *this;
86468     }
86469 
86470     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264ProfileEXT &
setStdProfileIdcVULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileEXT86471                             setStdProfileIdc( StdVideoH264ProfileIdc stdProfileIdc_ ) VULKAN_HPP_NOEXCEPT
86472     {
86473       stdProfileIdc = stdProfileIdc_;
86474       return *this;
86475     }
86476 
86477     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264ProfileEXT &
setPictureLayoutVULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileEXT86478       setPictureLayout( VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureLayoutFlagsEXT pictureLayout_ ) VULKAN_HPP_NOEXCEPT
86479     {
86480       pictureLayout = pictureLayout_;
86481       return *this;
86482     }
86483 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
86484 
operator VkVideoDecodeH264ProfileEXT const&VULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileEXT86485     explicit operator VkVideoDecodeH264ProfileEXT const &() const VULKAN_HPP_NOEXCEPT
86486     {
86487       return *reinterpret_cast<const VkVideoDecodeH264ProfileEXT *>( this );
86488     }
86489 
operator VkVideoDecodeH264ProfileEXT&VULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileEXT86490     explicit operator VkVideoDecodeH264ProfileEXT &() VULKAN_HPP_NOEXCEPT
86491     {
86492       return *reinterpret_cast<VkVideoDecodeH264ProfileEXT *>( this );
86493     }
86494 
86495 #  if 14 <= VULKAN_HPP_CPP_VERSION
86496     auto
86497 #  else
86498     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
86499                const void * const &,
86500                StdVideoH264ProfileIdc const &,
86501                VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureLayoutFlagsEXT const &>
86502 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileEXT86503       reflect() const VULKAN_HPP_NOEXCEPT
86504     {
86505       return std::tie( sType, pNext, stdProfileIdc, pictureLayout );
86506     }
86507 
86508 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
86509     auto operator<=>( VideoDecodeH264ProfileEXT const & ) const = default;
86510 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileEXT86511     bool operator==( VideoDecodeH264ProfileEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
86512     {
86513       return this->reflect() == rhs.reflect();
86514     }
86515 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileEXT86516     bool operator!=( VideoDecodeH264ProfileEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
86517     {
86518       return this->reflect() != rhs.reflect();
86519     }
86520 #  endif
86521 
86522   public:
86523     VULKAN_HPP_NAMESPACE::StructureType                        sType = StructureType::eVideoDecodeH264ProfileEXT;
86524     const void *                                               pNext = {};
86525     StdVideoH264ProfileIdc                                     stdProfileIdc = {};
86526     VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureLayoutFlagsEXT pictureLayout = {};
86527   };
86528   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileEXT ) ==
86529                               sizeof( VkVideoDecodeH264ProfileEXT ),
86530                             "struct and wrapper have different size!" );
86531   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileEXT>::value,
86532                             "struct wrapper is not a standard layout!" );
86533   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileEXT>::value,
86534                             "VideoDecodeH264ProfileEXT is not nothrow_move_constructible!" );
86535 
86536   template <>
86537   struct CppType<StructureType, StructureType::eVideoDecodeH264ProfileEXT>
86538   {
86539     using Type = VideoDecodeH264ProfileEXT;
86540   };
86541 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
86542 
86543 #if defined( VK_ENABLE_BETA_EXTENSIONS )
86544   struct VideoDecodeH264SessionCreateInfoEXT
86545   {
86546     using NativeType = VkVideoDecodeH264SessionCreateInfoEXT;
86547 
86548     static const bool                                  allowDuplicate = false;
86549     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
86550       StructureType::eVideoDecodeH264SessionCreateInfoEXT;
86551 
86552 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeH264SessionCreateInfoEXTVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionCreateInfoEXT86553     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionCreateInfoEXT(
86554       VULKAN_HPP_NAMESPACE::VideoDecodeH264CreateFlagsEXT flags_                = {},
86555       const VULKAN_HPP_NAMESPACE::ExtensionProperties *   pStdExtensionVersion_ = {} ) VULKAN_HPP_NOEXCEPT
86556       : flags( flags_ )
86557       , pStdExtensionVersion( pStdExtensionVersion_ )
86558     {}
86559 
86560     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionCreateInfoEXT( VideoDecodeH264SessionCreateInfoEXT const & rhs )
86561       VULKAN_HPP_NOEXCEPT = default;
86562 
VideoDecodeH264SessionCreateInfoEXTVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionCreateInfoEXT86563     VideoDecodeH264SessionCreateInfoEXT( VkVideoDecodeH264SessionCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
86564       : VideoDecodeH264SessionCreateInfoEXT( *reinterpret_cast<VideoDecodeH264SessionCreateInfoEXT const *>( &rhs ) )
86565     {}
86566 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
86567 
86568     VideoDecodeH264SessionCreateInfoEXT &
86569       operator=( VideoDecodeH264SessionCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86570 
86571     VideoDecodeH264SessionCreateInfoEXT &
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionCreateInfoEXT86572       operator=( VkVideoDecodeH264SessionCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
86573     {
86574       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionCreateInfoEXT const *>( &rhs );
86575       return *this;
86576     }
86577 
86578 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionCreateInfoEXT86579     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
86580     {
86581       pNext = pNext_;
86582       return *this;
86583     }
86584 
86585     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionCreateInfoEXT &
setFlagsVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionCreateInfoEXT86586                             setFlags( VULKAN_HPP_NAMESPACE::VideoDecodeH264CreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
86587     {
86588       flags = flags_;
86589       return *this;
86590     }
86591 
setPStdExtensionVersionVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionCreateInfoEXT86592     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionCreateInfoEXT & setPStdExtensionVersion(
86593       const VULKAN_HPP_NAMESPACE::ExtensionProperties * pStdExtensionVersion_ ) VULKAN_HPP_NOEXCEPT
86594     {
86595       pStdExtensionVersion = pStdExtensionVersion_;
86596       return *this;
86597     }
86598 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
86599 
operator VkVideoDecodeH264SessionCreateInfoEXT const&VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionCreateInfoEXT86600     explicit operator VkVideoDecodeH264SessionCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
86601     {
86602       return *reinterpret_cast<const VkVideoDecodeH264SessionCreateInfoEXT *>( this );
86603     }
86604 
operator VkVideoDecodeH264SessionCreateInfoEXT&VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionCreateInfoEXT86605     explicit operator VkVideoDecodeH264SessionCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
86606     {
86607       return *reinterpret_cast<VkVideoDecodeH264SessionCreateInfoEXT *>( this );
86608     }
86609 
86610 #  if 14 <= VULKAN_HPP_CPP_VERSION
86611     auto
86612 #  else
86613     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
86614                const void * const &,
86615                VULKAN_HPP_NAMESPACE::VideoDecodeH264CreateFlagsEXT const &,
86616                const VULKAN_HPP_NAMESPACE::ExtensionProperties * const &>
86617 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionCreateInfoEXT86618       reflect() const VULKAN_HPP_NOEXCEPT
86619     {
86620       return std::tie( sType, pNext, flags, pStdExtensionVersion );
86621     }
86622 
86623 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
86624     auto operator<=>( VideoDecodeH264SessionCreateInfoEXT const & ) const = default;
86625 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionCreateInfoEXT86626     bool operator==( VideoDecodeH264SessionCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
86627     {
86628       return this->reflect() == rhs.reflect();
86629     }
86630 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionCreateInfoEXT86631     bool operator!=( VideoDecodeH264SessionCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
86632     {
86633       return this->reflect() != rhs.reflect();
86634     }
86635 #  endif
86636 
86637   public:
86638     VULKAN_HPP_NAMESPACE::StructureType                 sType = StructureType::eVideoDecodeH264SessionCreateInfoEXT;
86639     const void *                                        pNext = {};
86640     VULKAN_HPP_NAMESPACE::VideoDecodeH264CreateFlagsEXT flags = {};
86641     const VULKAN_HPP_NAMESPACE::ExtensionProperties *   pStdExtensionVersion = {};
86642   };
86643   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionCreateInfoEXT ) ==
86644                               sizeof( VkVideoDecodeH264SessionCreateInfoEXT ),
86645                             "struct and wrapper have different size!" );
86646   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionCreateInfoEXT>::value,
86647                             "struct wrapper is not a standard layout!" );
86648   VULKAN_HPP_STATIC_ASSERT(
86649     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionCreateInfoEXT>::value,
86650     "VideoDecodeH264SessionCreateInfoEXT is not nothrow_move_constructible!" );
86651 
86652   template <>
86653   struct CppType<StructureType, StructureType::eVideoDecodeH264SessionCreateInfoEXT>
86654   {
86655     using Type = VideoDecodeH264SessionCreateInfoEXT;
86656   };
86657 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
86658 
86659 #if defined( VK_ENABLE_BETA_EXTENSIONS )
86660   struct VideoDecodeH264SessionParametersAddInfoEXT
86661   {
86662     using NativeType = VkVideoDecodeH264SessionParametersAddInfoEXT;
86663 
86664     static const bool                                  allowDuplicate = false;
86665     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
86666       StructureType::eVideoDecodeH264SessionParametersAddInfoEXT;
86667 
86668 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeH264SessionParametersAddInfoEXTVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoEXT86669     VULKAN_HPP_CONSTEXPR VideoDecodeH264SessionParametersAddInfoEXT(
86670       uint32_t                                 spsStdCount_ = {},
86671       const StdVideoH264SequenceParameterSet * pSpsStd_     = {},
86672       uint32_t                                 ppsStdCount_ = {},
86673       const StdVideoH264PictureParameterSet *  pPpsStd_     = {} ) VULKAN_HPP_NOEXCEPT
86674       : spsStdCount( spsStdCount_ )
86675       , pSpsStd( pSpsStd_ )
86676       , ppsStdCount( ppsStdCount_ )
86677       , pPpsStd( pPpsStd_ )
86678     {}
86679 
86680     VULKAN_HPP_CONSTEXPR VideoDecodeH264SessionParametersAddInfoEXT(
86681       VideoDecodeH264SessionParametersAddInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86682 
VideoDecodeH264SessionParametersAddInfoEXTVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoEXT86683     VideoDecodeH264SessionParametersAddInfoEXT( VkVideoDecodeH264SessionParametersAddInfoEXT const & rhs )
86684       VULKAN_HPP_NOEXCEPT
86685       : VideoDecodeH264SessionParametersAddInfoEXT(
86686           *reinterpret_cast<VideoDecodeH264SessionParametersAddInfoEXT const *>( &rhs ) )
86687     {}
86688 
86689 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoDecodeH264SessionParametersAddInfoEXTVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoEXT86690     VideoDecodeH264SessionParametersAddInfoEXT(
86691       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH264SequenceParameterSet> const & spsStd_,
86692       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH264PictureParameterSet> const &  ppsStd_ = {} )
86693       : spsStdCount( static_cast<uint32_t>( spsStd_.size() ) )
86694       , pSpsStd( spsStd_.data() )
86695       , ppsStdCount( static_cast<uint32_t>( ppsStd_.size() ) )
86696       , pPpsStd( ppsStd_.data() )
86697     {}
86698 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
86699 #  endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
86700 
86701     VideoDecodeH264SessionParametersAddInfoEXT &
86702       operator=( VideoDecodeH264SessionParametersAddInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86703 
86704     VideoDecodeH264SessionParametersAddInfoEXT &
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoEXT86705       operator=( VkVideoDecodeH264SessionParametersAddInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
86706     {
86707       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoEXT const *>( &rhs );
86708       return *this;
86709     }
86710 
86711 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
86712     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersAddInfoEXT &
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoEXT86713                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
86714     {
86715       pNext = pNext_;
86716       return *this;
86717     }
86718 
86719     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersAddInfoEXT &
setSpsStdCountVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoEXT86720                             setSpsStdCount( uint32_t spsStdCount_ ) VULKAN_HPP_NOEXCEPT
86721     {
86722       spsStdCount = spsStdCount_;
86723       return *this;
86724     }
86725 
86726     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersAddInfoEXT &
setPSpsStdVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoEXT86727                             setPSpsStd( const StdVideoH264SequenceParameterSet * pSpsStd_ ) VULKAN_HPP_NOEXCEPT
86728     {
86729       pSpsStd = pSpsStd_;
86730       return *this;
86731     }
86732 
86733 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
86734     VideoDecodeH264SessionParametersAddInfoEXT &
setSpsStdVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoEXT86735       setSpsStd( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH264SequenceParameterSet> const & spsStd_ )
86736         VULKAN_HPP_NOEXCEPT
86737     {
86738       spsStdCount = static_cast<uint32_t>( spsStd_.size() );
86739       pSpsStd     = spsStd_.data();
86740       return *this;
86741     }
86742 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
86743 
86744     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersAddInfoEXT &
setPpsStdCountVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoEXT86745                             setPpsStdCount( uint32_t ppsStdCount_ ) VULKAN_HPP_NOEXCEPT
86746     {
86747       ppsStdCount = ppsStdCount_;
86748       return *this;
86749     }
86750 
86751     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersAddInfoEXT &
setPPpsStdVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoEXT86752                             setPPpsStd( const StdVideoH264PictureParameterSet * pPpsStd_ ) VULKAN_HPP_NOEXCEPT
86753     {
86754       pPpsStd = pPpsStd_;
86755       return *this;
86756     }
86757 
86758 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
86759     VideoDecodeH264SessionParametersAddInfoEXT &
setPpsStdVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoEXT86760       setPpsStd( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH264PictureParameterSet> const & ppsStd_ )
86761         VULKAN_HPP_NOEXCEPT
86762     {
86763       ppsStdCount = static_cast<uint32_t>( ppsStd_.size() );
86764       pPpsStd     = ppsStd_.data();
86765       return *this;
86766     }
86767 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
86768 #  endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
86769 
operator VkVideoDecodeH264SessionParametersAddInfoEXT const&VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoEXT86770     explicit operator VkVideoDecodeH264SessionParametersAddInfoEXT const &() const VULKAN_HPP_NOEXCEPT
86771     {
86772       return *reinterpret_cast<const VkVideoDecodeH264SessionParametersAddInfoEXT *>( this );
86773     }
86774 
operator VkVideoDecodeH264SessionParametersAddInfoEXT&VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoEXT86775     explicit operator VkVideoDecodeH264SessionParametersAddInfoEXT &() VULKAN_HPP_NOEXCEPT
86776     {
86777       return *reinterpret_cast<VkVideoDecodeH264SessionParametersAddInfoEXT *>( this );
86778     }
86779 
86780 #  if 14 <= VULKAN_HPP_CPP_VERSION
86781     auto
86782 #  else
86783     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
86784                const void * const &,
86785                uint32_t const &,
86786                const StdVideoH264SequenceParameterSet * const &,
86787                uint32_t const &,
86788                const StdVideoH264PictureParameterSet * const &>
86789 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoEXT86790       reflect() const VULKAN_HPP_NOEXCEPT
86791     {
86792       return std::tie( sType, pNext, spsStdCount, pSpsStd, ppsStdCount, pPpsStd );
86793     }
86794 
86795 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
86796     auto operator<=>( VideoDecodeH264SessionParametersAddInfoEXT const & ) const = default;
86797 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoEXT86798     bool operator==( VideoDecodeH264SessionParametersAddInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
86799     {
86800       return this->reflect() == rhs.reflect();
86801     }
86802 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoEXT86803     bool operator!=( VideoDecodeH264SessionParametersAddInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
86804     {
86805       return this->reflect() != rhs.reflect();
86806     }
86807 #  endif
86808 
86809   public:
86810     VULKAN_HPP_NAMESPACE::StructureType      sType       = StructureType::eVideoDecodeH264SessionParametersAddInfoEXT;
86811     const void *                             pNext       = {};
86812     uint32_t                                 spsStdCount = {};
86813     const StdVideoH264SequenceParameterSet * pSpsStd     = {};
86814     uint32_t                                 ppsStdCount = {};
86815     const StdVideoH264PictureParameterSet *  pPpsStd     = {};
86816   };
86817   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoEXT ) ==
86818                               sizeof( VkVideoDecodeH264SessionParametersAddInfoEXT ),
86819                             "struct and wrapper have different size!" );
86820   VULKAN_HPP_STATIC_ASSERT(
86821     std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoEXT>::value,
86822     "struct wrapper is not a standard layout!" );
86823   VULKAN_HPP_STATIC_ASSERT(
86824     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoEXT>::value,
86825     "VideoDecodeH264SessionParametersAddInfoEXT is not nothrow_move_constructible!" );
86826 
86827   template <>
86828   struct CppType<StructureType, StructureType::eVideoDecodeH264SessionParametersAddInfoEXT>
86829   {
86830     using Type = VideoDecodeH264SessionParametersAddInfoEXT;
86831   };
86832 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
86833 
86834 #if defined( VK_ENABLE_BETA_EXTENSIONS )
86835   struct VideoDecodeH264SessionParametersCreateInfoEXT
86836   {
86837     using NativeType = VkVideoDecodeH264SessionParametersCreateInfoEXT;
86838 
86839     static const bool                                  allowDuplicate = false;
86840     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
86841       StructureType::eVideoDecodeH264SessionParametersCreateInfoEXT;
86842 
86843 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeH264SessionParametersCreateInfoEXTVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoEXT86844     VULKAN_HPP_CONSTEXPR VideoDecodeH264SessionParametersCreateInfoEXT(
86845       uint32_t                                                                 maxSpsStdCount_     = {},
86846       uint32_t                                                                 maxPpsStdCount_     = {},
86847       const VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoEXT * pParametersAddInfo_ = {} )
86848       VULKAN_HPP_NOEXCEPT
86849       : maxSpsStdCount( maxSpsStdCount_ )
86850       , maxPpsStdCount( maxPpsStdCount_ )
86851       , pParametersAddInfo( pParametersAddInfo_ )
86852     {}
86853 
86854     VULKAN_HPP_CONSTEXPR VideoDecodeH264SessionParametersCreateInfoEXT(
86855       VideoDecodeH264SessionParametersCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86856 
VideoDecodeH264SessionParametersCreateInfoEXTVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoEXT86857     VideoDecodeH264SessionParametersCreateInfoEXT( VkVideoDecodeH264SessionParametersCreateInfoEXT const & rhs )
86858       VULKAN_HPP_NOEXCEPT
86859       : VideoDecodeH264SessionParametersCreateInfoEXT(
86860           *reinterpret_cast<VideoDecodeH264SessionParametersCreateInfoEXT const *>( &rhs ) )
86861     {}
86862 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
86863 
86864     VideoDecodeH264SessionParametersCreateInfoEXT &
86865       operator=( VideoDecodeH264SessionParametersCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86866 
86867     VideoDecodeH264SessionParametersCreateInfoEXT &
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoEXT86868       operator=( VkVideoDecodeH264SessionParametersCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
86869     {
86870       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoEXT const *>( &rhs );
86871       return *this;
86872     }
86873 
86874 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
86875     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersCreateInfoEXT &
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoEXT86876                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
86877     {
86878       pNext = pNext_;
86879       return *this;
86880     }
86881 
86882     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersCreateInfoEXT &
setMaxSpsStdCountVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoEXT86883                             setMaxSpsStdCount( uint32_t maxSpsStdCount_ ) VULKAN_HPP_NOEXCEPT
86884     {
86885       maxSpsStdCount = maxSpsStdCount_;
86886       return *this;
86887     }
86888 
86889     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersCreateInfoEXT &
setMaxPpsStdCountVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoEXT86890                             setMaxPpsStdCount( uint32_t maxPpsStdCount_ ) VULKAN_HPP_NOEXCEPT
86891     {
86892       maxPpsStdCount = maxPpsStdCount_;
86893       return *this;
86894     }
86895 
setPParametersAddInfoVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoEXT86896     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersCreateInfoEXT & setPParametersAddInfo(
86897       const VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoEXT * pParametersAddInfo_ ) VULKAN_HPP_NOEXCEPT
86898     {
86899       pParametersAddInfo = pParametersAddInfo_;
86900       return *this;
86901     }
86902 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
86903 
operator VkVideoDecodeH264SessionParametersCreateInfoEXT const&VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoEXT86904     explicit operator VkVideoDecodeH264SessionParametersCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
86905     {
86906       return *reinterpret_cast<const VkVideoDecodeH264SessionParametersCreateInfoEXT *>( this );
86907     }
86908 
operator VkVideoDecodeH264SessionParametersCreateInfoEXT&VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoEXT86909     explicit operator VkVideoDecodeH264SessionParametersCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
86910     {
86911       return *reinterpret_cast<VkVideoDecodeH264SessionParametersCreateInfoEXT *>( this );
86912     }
86913 
86914 #  if 14 <= VULKAN_HPP_CPP_VERSION
86915     auto
86916 #  else
86917     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
86918                const void * const &,
86919                uint32_t const &,
86920                uint32_t const &,
86921                const VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoEXT * const &>
86922 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoEXT86923       reflect() const VULKAN_HPP_NOEXCEPT
86924     {
86925       return std::tie( sType, pNext, maxSpsStdCount, maxPpsStdCount, pParametersAddInfo );
86926     }
86927 
86928 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
86929     auto operator<=>( VideoDecodeH264SessionParametersCreateInfoEXT const & ) const = default;
86930 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoEXT86931     bool operator==( VideoDecodeH264SessionParametersCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
86932     {
86933       return this->reflect() == rhs.reflect();
86934     }
86935 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoEXT86936     bool operator!=( VideoDecodeH264SessionParametersCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
86937     {
86938       return this->reflect() != rhs.reflect();
86939     }
86940 #  endif
86941 
86942   public:
86943     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eVideoDecodeH264SessionParametersCreateInfoEXT;
86944     const void *                        pNext          = {};
86945     uint32_t                            maxSpsStdCount = {};
86946     uint32_t                            maxPpsStdCount = {};
86947     const VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoEXT * pParametersAddInfo = {};
86948   };
86949   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoEXT ) ==
86950                               sizeof( VkVideoDecodeH264SessionParametersCreateInfoEXT ),
86951                             "struct and wrapper have different size!" );
86952   VULKAN_HPP_STATIC_ASSERT(
86953     std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoEXT>::value,
86954     "struct wrapper is not a standard layout!" );
86955   VULKAN_HPP_STATIC_ASSERT(
86956     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoEXT>::value,
86957     "VideoDecodeH264SessionParametersCreateInfoEXT is not nothrow_move_constructible!" );
86958 
86959   template <>
86960   struct CppType<StructureType, StructureType::eVideoDecodeH264SessionParametersCreateInfoEXT>
86961   {
86962     using Type = VideoDecodeH264SessionParametersCreateInfoEXT;
86963   };
86964 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
86965 
86966 #if defined( VK_ENABLE_BETA_EXTENSIONS )
86967   struct VideoDecodeH265CapabilitiesEXT
86968   {
86969     using NativeType = VkVideoDecodeH265CapabilitiesEXT;
86970 
86971     static const bool                                  allowDuplicate = false;
86972     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeH265CapabilitiesEXT;
86973 
86974 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeH265CapabilitiesEXTVULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesEXT86975     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265CapabilitiesEXT(
86976       uint32_t maxLevel_ = {}, VULKAN_HPP_NAMESPACE::ExtensionProperties stdExtensionVersion_ = {} ) VULKAN_HPP_NOEXCEPT
86977       : maxLevel( maxLevel_ )
86978       , stdExtensionVersion( stdExtensionVersion_ )
86979     {}
86980 
86981     VULKAN_HPP_CONSTEXPR_14
86982       VideoDecodeH265CapabilitiesEXT( VideoDecodeH265CapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86983 
VideoDecodeH265CapabilitiesEXTVULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesEXT86984     VideoDecodeH265CapabilitiesEXT( VkVideoDecodeH265CapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
86985       : VideoDecodeH265CapabilitiesEXT( *reinterpret_cast<VideoDecodeH265CapabilitiesEXT const *>( &rhs ) )
86986     {}
86987 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
86988 
86989     VideoDecodeH265CapabilitiesEXT &
86990       operator=( VideoDecodeH265CapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86991 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesEXT86992     VideoDecodeH265CapabilitiesEXT & operator=( VkVideoDecodeH265CapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
86993     {
86994       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesEXT const *>( &rhs );
86995       return *this;
86996     }
86997 
operator VkVideoDecodeH265CapabilitiesEXT const&VULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesEXT86998     explicit operator VkVideoDecodeH265CapabilitiesEXT const &() const VULKAN_HPP_NOEXCEPT
86999     {
87000       return *reinterpret_cast<const VkVideoDecodeH265CapabilitiesEXT *>( this );
87001     }
87002 
operator VkVideoDecodeH265CapabilitiesEXT&VULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesEXT87003     explicit operator VkVideoDecodeH265CapabilitiesEXT &() VULKAN_HPP_NOEXCEPT
87004     {
87005       return *reinterpret_cast<VkVideoDecodeH265CapabilitiesEXT *>( this );
87006     }
87007 
87008 #  if 14 <= VULKAN_HPP_CPP_VERSION
87009     auto
87010 #  else
87011     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
87012                void * const &,
87013                uint32_t const &,
87014                VULKAN_HPP_NAMESPACE::ExtensionProperties const &>
87015 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesEXT87016       reflect() const VULKAN_HPP_NOEXCEPT
87017     {
87018       return std::tie( sType, pNext, maxLevel, stdExtensionVersion );
87019     }
87020 
87021 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
87022     auto operator<=>( VideoDecodeH265CapabilitiesEXT const & ) const = default;
87023 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesEXT87024     bool operator==( VideoDecodeH265CapabilitiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
87025     {
87026       return this->reflect() == rhs.reflect();
87027     }
87028 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesEXT87029     bool operator!=( VideoDecodeH265CapabilitiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
87030     {
87031       return this->reflect() != rhs.reflect();
87032     }
87033 #  endif
87034 
87035   public:
87036     VULKAN_HPP_NAMESPACE::StructureType       sType               = StructureType::eVideoDecodeH265CapabilitiesEXT;
87037     void *                                    pNext               = {};
87038     uint32_t                                  maxLevel            = {};
87039     VULKAN_HPP_NAMESPACE::ExtensionProperties stdExtensionVersion = {};
87040   };
87041   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesEXT ) ==
87042                               sizeof( VkVideoDecodeH265CapabilitiesEXT ),
87043                             "struct and wrapper have different size!" );
87044   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesEXT>::value,
87045                             "struct wrapper is not a standard layout!" );
87046   VULKAN_HPP_STATIC_ASSERT(
87047     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesEXT>::value,
87048     "VideoDecodeH265CapabilitiesEXT is not nothrow_move_constructible!" );
87049 
87050   template <>
87051   struct CppType<StructureType, StructureType::eVideoDecodeH265CapabilitiesEXT>
87052   {
87053     using Type = VideoDecodeH265CapabilitiesEXT;
87054   };
87055 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
87056 
87057 #if defined( VK_ENABLE_BETA_EXTENSIONS )
87058   struct VideoDecodeH265DpbSlotInfoEXT
87059   {
87060     using NativeType = VkVideoDecodeH265DpbSlotInfoEXT;
87061 
87062     static const bool                                  allowDuplicate = false;
87063     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeH265DpbSlotInfoEXT;
87064 
87065 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeH265DpbSlotInfoEXTVULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoEXT87066     VULKAN_HPP_CONSTEXPR VideoDecodeH265DpbSlotInfoEXT(
87067       const StdVideoDecodeH265ReferenceInfo * pStdReferenceInfo_ = {} ) VULKAN_HPP_NOEXCEPT
87068       : pStdReferenceInfo( pStdReferenceInfo_ )
87069     {}
87070 
87071     VULKAN_HPP_CONSTEXPR
87072       VideoDecodeH265DpbSlotInfoEXT( VideoDecodeH265DpbSlotInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87073 
VideoDecodeH265DpbSlotInfoEXTVULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoEXT87074     VideoDecodeH265DpbSlotInfoEXT( VkVideoDecodeH265DpbSlotInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
87075       : VideoDecodeH265DpbSlotInfoEXT( *reinterpret_cast<VideoDecodeH265DpbSlotInfoEXT const *>( &rhs ) )
87076     {}
87077 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
87078 
87079     VideoDecodeH265DpbSlotInfoEXT &
87080       operator=( VideoDecodeH265DpbSlotInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87081 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoEXT87082     VideoDecodeH265DpbSlotInfoEXT & operator=( VkVideoDecodeH265DpbSlotInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
87083     {
87084       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoEXT const *>( &rhs );
87085       return *this;
87086     }
87087 
87088 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoEXT87089     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265DpbSlotInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
87090     {
87091       pNext = pNext_;
87092       return *this;
87093     }
87094 
87095     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265DpbSlotInfoEXT &
setPStdReferenceInfoVULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoEXT87096       setPStdReferenceInfo( const StdVideoDecodeH265ReferenceInfo * pStdReferenceInfo_ ) VULKAN_HPP_NOEXCEPT
87097     {
87098       pStdReferenceInfo = pStdReferenceInfo_;
87099       return *this;
87100     }
87101 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
87102 
operator VkVideoDecodeH265DpbSlotInfoEXT const&VULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoEXT87103     explicit operator VkVideoDecodeH265DpbSlotInfoEXT const &() const VULKAN_HPP_NOEXCEPT
87104     {
87105       return *reinterpret_cast<const VkVideoDecodeH265DpbSlotInfoEXT *>( this );
87106     }
87107 
operator VkVideoDecodeH265DpbSlotInfoEXT&VULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoEXT87108     explicit operator VkVideoDecodeH265DpbSlotInfoEXT &() VULKAN_HPP_NOEXCEPT
87109     {
87110       return *reinterpret_cast<VkVideoDecodeH265DpbSlotInfoEXT *>( this );
87111     }
87112 
87113 #  if 14 <= VULKAN_HPP_CPP_VERSION
87114     auto
87115 #  else
87116     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
87117                const void * const &,
87118                const StdVideoDecodeH265ReferenceInfo * const &>
87119 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoEXT87120       reflect() const VULKAN_HPP_NOEXCEPT
87121     {
87122       return std::tie( sType, pNext, pStdReferenceInfo );
87123     }
87124 
87125 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
87126     auto operator<=>( VideoDecodeH265DpbSlotInfoEXT const & ) const = default;
87127 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoEXT87128     bool operator==( VideoDecodeH265DpbSlotInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
87129     {
87130       return this->reflect() == rhs.reflect();
87131     }
87132 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoEXT87133     bool operator!=( VideoDecodeH265DpbSlotInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
87134     {
87135       return this->reflect() != rhs.reflect();
87136     }
87137 #  endif
87138 
87139   public:
87140     VULKAN_HPP_NAMESPACE::StructureType     sType             = StructureType::eVideoDecodeH265DpbSlotInfoEXT;
87141     const void *                            pNext             = {};
87142     const StdVideoDecodeH265ReferenceInfo * pStdReferenceInfo = {};
87143   };
87144   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoEXT ) ==
87145                               sizeof( VkVideoDecodeH265DpbSlotInfoEXT ),
87146                             "struct and wrapper have different size!" );
87147   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoEXT>::value,
87148                             "struct wrapper is not a standard layout!" );
87149   VULKAN_HPP_STATIC_ASSERT(
87150     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoEXT>::value,
87151     "VideoDecodeH265DpbSlotInfoEXT is not nothrow_move_constructible!" );
87152 
87153   template <>
87154   struct CppType<StructureType, StructureType::eVideoDecodeH265DpbSlotInfoEXT>
87155   {
87156     using Type = VideoDecodeH265DpbSlotInfoEXT;
87157   };
87158 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
87159 
87160 #if defined( VK_ENABLE_BETA_EXTENSIONS )
87161   struct VideoDecodeH265PictureInfoEXT
87162   {
87163     using NativeType = VkVideoDecodeH265PictureInfoEXT;
87164 
87165     static const bool                                  allowDuplicate = false;
87166     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeH265PictureInfoEXT;
87167 
87168 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeH265PictureInfoEXTVULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoEXT87169     VULKAN_HPP_CONSTEXPR VideoDecodeH265PictureInfoEXT( StdVideoDecodeH265PictureInfo * pStdPictureInfo_ = {},
87170                                                         uint32_t                        slicesCount_     = {},
87171                                                         const uint32_t * pSlicesDataOffsets_ = {} ) VULKAN_HPP_NOEXCEPT
87172       : pStdPictureInfo( pStdPictureInfo_ )
87173       , slicesCount( slicesCount_ )
87174       , pSlicesDataOffsets( pSlicesDataOffsets_ )
87175     {}
87176 
87177     VULKAN_HPP_CONSTEXPR
87178       VideoDecodeH265PictureInfoEXT( VideoDecodeH265PictureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87179 
VideoDecodeH265PictureInfoEXTVULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoEXT87180     VideoDecodeH265PictureInfoEXT( VkVideoDecodeH265PictureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
87181       : VideoDecodeH265PictureInfoEXT( *reinterpret_cast<VideoDecodeH265PictureInfoEXT const *>( &rhs ) )
87182     {}
87183 
87184 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoDecodeH265PictureInfoEXTVULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoEXT87185     VideoDecodeH265PictureInfoEXT(
87186       StdVideoDecodeH265PictureInfo *                                       pStdPictureInfo_,
87187       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & slicesDataOffsets_ )
87188       : pStdPictureInfo( pStdPictureInfo_ )
87189       , slicesCount( static_cast<uint32_t>( slicesDataOffsets_.size() ) )
87190       , pSlicesDataOffsets( slicesDataOffsets_.data() )
87191     {}
87192 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
87193 #  endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
87194 
87195     VideoDecodeH265PictureInfoEXT &
87196       operator=( VideoDecodeH265PictureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87197 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoEXT87198     VideoDecodeH265PictureInfoEXT & operator=( VkVideoDecodeH265PictureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
87199     {
87200       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoEXT const *>( &rhs );
87201       return *this;
87202     }
87203 
87204 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoEXT87205     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265PictureInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
87206     {
87207       pNext = pNext_;
87208       return *this;
87209     }
87210 
87211     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265PictureInfoEXT &
setPStdPictureInfoVULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoEXT87212                             setPStdPictureInfo( StdVideoDecodeH265PictureInfo * pStdPictureInfo_ ) VULKAN_HPP_NOEXCEPT
87213     {
87214       pStdPictureInfo = pStdPictureInfo_;
87215       return *this;
87216     }
87217 
setSlicesCountVULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoEXT87218     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265PictureInfoEXT & setSlicesCount( uint32_t slicesCount_ ) VULKAN_HPP_NOEXCEPT
87219     {
87220       slicesCount = slicesCount_;
87221       return *this;
87222     }
87223 
87224     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265PictureInfoEXT &
setPSlicesDataOffsetsVULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoEXT87225                             setPSlicesDataOffsets( const uint32_t * pSlicesDataOffsets_ ) VULKAN_HPP_NOEXCEPT
87226     {
87227       pSlicesDataOffsets = pSlicesDataOffsets_;
87228       return *this;
87229     }
87230 
87231 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSlicesDataOffsetsVULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoEXT87232     VideoDecodeH265PictureInfoEXT & setSlicesDataOffsets(
87233       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & slicesDataOffsets_ ) VULKAN_HPP_NOEXCEPT
87234     {
87235       slicesCount        = static_cast<uint32_t>( slicesDataOffsets_.size() );
87236       pSlicesDataOffsets = slicesDataOffsets_.data();
87237       return *this;
87238     }
87239 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
87240 #  endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
87241 
operator VkVideoDecodeH265PictureInfoEXT const&VULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoEXT87242     explicit operator VkVideoDecodeH265PictureInfoEXT const &() const VULKAN_HPP_NOEXCEPT
87243     {
87244       return *reinterpret_cast<const VkVideoDecodeH265PictureInfoEXT *>( this );
87245     }
87246 
operator VkVideoDecodeH265PictureInfoEXT&VULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoEXT87247     explicit operator VkVideoDecodeH265PictureInfoEXT &() VULKAN_HPP_NOEXCEPT
87248     {
87249       return *reinterpret_cast<VkVideoDecodeH265PictureInfoEXT *>( this );
87250     }
87251 
87252 #  if 14 <= VULKAN_HPP_CPP_VERSION
87253     auto
87254 #  else
87255     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
87256                const void * const &,
87257                StdVideoDecodeH265PictureInfo * const &,
87258                uint32_t const &,
87259                const uint32_t * const &>
87260 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoEXT87261       reflect() const VULKAN_HPP_NOEXCEPT
87262     {
87263       return std::tie( sType, pNext, pStdPictureInfo, slicesCount, pSlicesDataOffsets );
87264     }
87265 
87266 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
87267     auto operator<=>( VideoDecodeH265PictureInfoEXT const & ) const = default;
87268 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoEXT87269     bool operator==( VideoDecodeH265PictureInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
87270     {
87271       return this->reflect() == rhs.reflect();
87272     }
87273 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoEXT87274     bool operator!=( VideoDecodeH265PictureInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
87275     {
87276       return this->reflect() != rhs.reflect();
87277     }
87278 #  endif
87279 
87280   public:
87281     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::eVideoDecodeH265PictureInfoEXT;
87282     const void *                        pNext              = {};
87283     StdVideoDecodeH265PictureInfo *     pStdPictureInfo    = {};
87284     uint32_t                            slicesCount        = {};
87285     const uint32_t *                    pSlicesDataOffsets = {};
87286   };
87287   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoEXT ) ==
87288                               sizeof( VkVideoDecodeH265PictureInfoEXT ),
87289                             "struct and wrapper have different size!" );
87290   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoEXT>::value,
87291                             "struct wrapper is not a standard layout!" );
87292   VULKAN_HPP_STATIC_ASSERT(
87293     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoEXT>::value,
87294     "VideoDecodeH265PictureInfoEXT is not nothrow_move_constructible!" );
87295 
87296   template <>
87297   struct CppType<StructureType, StructureType::eVideoDecodeH265PictureInfoEXT>
87298   {
87299     using Type = VideoDecodeH265PictureInfoEXT;
87300   };
87301 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
87302 
87303 #if defined( VK_ENABLE_BETA_EXTENSIONS )
87304   struct VideoDecodeH265ProfileEXT
87305   {
87306     using NativeType = VkVideoDecodeH265ProfileEXT;
87307 
87308     static const bool                                  allowDuplicate = false;
87309     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeH265ProfileEXT;
87310 
87311 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeH265ProfileEXTVULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileEXT87312     VULKAN_HPP_CONSTEXPR VideoDecodeH265ProfileEXT( StdVideoH265ProfileIdc stdProfileIdc_ = {} ) VULKAN_HPP_NOEXCEPT
87313       : stdProfileIdc( stdProfileIdc_ )
87314     {}
87315 
87316     VULKAN_HPP_CONSTEXPR
87317       VideoDecodeH265ProfileEXT( VideoDecodeH265ProfileEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87318 
VideoDecodeH265ProfileEXTVULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileEXT87319     VideoDecodeH265ProfileEXT( VkVideoDecodeH265ProfileEXT const & rhs ) VULKAN_HPP_NOEXCEPT
87320       : VideoDecodeH265ProfileEXT( *reinterpret_cast<VideoDecodeH265ProfileEXT const *>( &rhs ) )
87321     {}
87322 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
87323 
87324     VideoDecodeH265ProfileEXT & operator=( VideoDecodeH265ProfileEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87325 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileEXT87326     VideoDecodeH265ProfileEXT & operator=( VkVideoDecodeH265ProfileEXT const & rhs ) VULKAN_HPP_NOEXCEPT
87327     {
87328       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileEXT const *>( &rhs );
87329       return *this;
87330     }
87331 
87332 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileEXT87333     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265ProfileEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
87334     {
87335       pNext = pNext_;
87336       return *this;
87337     }
87338 
87339     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265ProfileEXT &
setStdProfileIdcVULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileEXT87340                             setStdProfileIdc( StdVideoH265ProfileIdc stdProfileIdc_ ) VULKAN_HPP_NOEXCEPT
87341     {
87342       stdProfileIdc = stdProfileIdc_;
87343       return *this;
87344     }
87345 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
87346 
operator VkVideoDecodeH265ProfileEXT const&VULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileEXT87347     explicit operator VkVideoDecodeH265ProfileEXT const &() const VULKAN_HPP_NOEXCEPT
87348     {
87349       return *reinterpret_cast<const VkVideoDecodeH265ProfileEXT *>( this );
87350     }
87351 
operator VkVideoDecodeH265ProfileEXT&VULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileEXT87352     explicit operator VkVideoDecodeH265ProfileEXT &() VULKAN_HPP_NOEXCEPT
87353     {
87354       return *reinterpret_cast<VkVideoDecodeH265ProfileEXT *>( this );
87355     }
87356 
87357 #  if 14 <= VULKAN_HPP_CPP_VERSION
87358     auto
87359 #  else
87360     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, StdVideoH265ProfileIdc const &>
87361 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileEXT87362       reflect() const VULKAN_HPP_NOEXCEPT
87363     {
87364       return std::tie( sType, pNext, stdProfileIdc );
87365     }
87366 
87367 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
87368     auto operator<=>( VideoDecodeH265ProfileEXT const & ) const = default;
87369 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileEXT87370     bool operator==( VideoDecodeH265ProfileEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
87371     {
87372       return this->reflect() == rhs.reflect();
87373     }
87374 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileEXT87375     bool operator!=( VideoDecodeH265ProfileEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
87376     {
87377       return this->reflect() != rhs.reflect();
87378     }
87379 #  endif
87380 
87381   public:
87382     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::eVideoDecodeH265ProfileEXT;
87383     const void *                        pNext         = {};
87384     StdVideoH265ProfileIdc              stdProfileIdc = {};
87385   };
87386   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileEXT ) ==
87387                               sizeof( VkVideoDecodeH265ProfileEXT ),
87388                             "struct and wrapper have different size!" );
87389   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileEXT>::value,
87390                             "struct wrapper is not a standard layout!" );
87391   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileEXT>::value,
87392                             "VideoDecodeH265ProfileEXT is not nothrow_move_constructible!" );
87393 
87394   template <>
87395   struct CppType<StructureType, StructureType::eVideoDecodeH265ProfileEXT>
87396   {
87397     using Type = VideoDecodeH265ProfileEXT;
87398   };
87399 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
87400 
87401 #if defined( VK_ENABLE_BETA_EXTENSIONS )
87402   struct VideoDecodeH265SessionCreateInfoEXT
87403   {
87404     using NativeType = VkVideoDecodeH265SessionCreateInfoEXT;
87405 
87406     static const bool                                  allowDuplicate = false;
87407     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
87408       StructureType::eVideoDecodeH265SessionCreateInfoEXT;
87409 
87410 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeH265SessionCreateInfoEXTVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionCreateInfoEXT87411     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionCreateInfoEXT(
87412       VULKAN_HPP_NAMESPACE::VideoDecodeH265CreateFlagsEXT flags_                = {},
87413       const VULKAN_HPP_NAMESPACE::ExtensionProperties *   pStdExtensionVersion_ = {} ) VULKAN_HPP_NOEXCEPT
87414       : flags( flags_ )
87415       , pStdExtensionVersion( pStdExtensionVersion_ )
87416     {}
87417 
87418     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionCreateInfoEXT( VideoDecodeH265SessionCreateInfoEXT const & rhs )
87419       VULKAN_HPP_NOEXCEPT = default;
87420 
VideoDecodeH265SessionCreateInfoEXTVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionCreateInfoEXT87421     VideoDecodeH265SessionCreateInfoEXT( VkVideoDecodeH265SessionCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
87422       : VideoDecodeH265SessionCreateInfoEXT( *reinterpret_cast<VideoDecodeH265SessionCreateInfoEXT const *>( &rhs ) )
87423     {}
87424 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
87425 
87426     VideoDecodeH265SessionCreateInfoEXT &
87427       operator=( VideoDecodeH265SessionCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87428 
87429     VideoDecodeH265SessionCreateInfoEXT &
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionCreateInfoEXT87430       operator=( VkVideoDecodeH265SessionCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
87431     {
87432       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionCreateInfoEXT const *>( &rhs );
87433       return *this;
87434     }
87435 
87436 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionCreateInfoEXT87437     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
87438     {
87439       pNext = pNext_;
87440       return *this;
87441     }
87442 
87443     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionCreateInfoEXT &
setFlagsVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionCreateInfoEXT87444                             setFlags( VULKAN_HPP_NAMESPACE::VideoDecodeH265CreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
87445     {
87446       flags = flags_;
87447       return *this;
87448     }
87449 
setPStdExtensionVersionVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionCreateInfoEXT87450     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionCreateInfoEXT & setPStdExtensionVersion(
87451       const VULKAN_HPP_NAMESPACE::ExtensionProperties * pStdExtensionVersion_ ) VULKAN_HPP_NOEXCEPT
87452     {
87453       pStdExtensionVersion = pStdExtensionVersion_;
87454       return *this;
87455     }
87456 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
87457 
operator VkVideoDecodeH265SessionCreateInfoEXT const&VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionCreateInfoEXT87458     explicit operator VkVideoDecodeH265SessionCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
87459     {
87460       return *reinterpret_cast<const VkVideoDecodeH265SessionCreateInfoEXT *>( this );
87461     }
87462 
operator VkVideoDecodeH265SessionCreateInfoEXT&VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionCreateInfoEXT87463     explicit operator VkVideoDecodeH265SessionCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
87464     {
87465       return *reinterpret_cast<VkVideoDecodeH265SessionCreateInfoEXT *>( this );
87466     }
87467 
87468 #  if 14 <= VULKAN_HPP_CPP_VERSION
87469     auto
87470 #  else
87471     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
87472                const void * const &,
87473                VULKAN_HPP_NAMESPACE::VideoDecodeH265CreateFlagsEXT const &,
87474                const VULKAN_HPP_NAMESPACE::ExtensionProperties * const &>
87475 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionCreateInfoEXT87476       reflect() const VULKAN_HPP_NOEXCEPT
87477     {
87478       return std::tie( sType, pNext, flags, pStdExtensionVersion );
87479     }
87480 
87481 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
87482     auto operator<=>( VideoDecodeH265SessionCreateInfoEXT const & ) const = default;
87483 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionCreateInfoEXT87484     bool operator==( VideoDecodeH265SessionCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
87485     {
87486       return this->reflect() == rhs.reflect();
87487     }
87488 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionCreateInfoEXT87489     bool operator!=( VideoDecodeH265SessionCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
87490     {
87491       return this->reflect() != rhs.reflect();
87492     }
87493 #  endif
87494 
87495   public:
87496     VULKAN_HPP_NAMESPACE::StructureType                 sType = StructureType::eVideoDecodeH265SessionCreateInfoEXT;
87497     const void *                                        pNext = {};
87498     VULKAN_HPP_NAMESPACE::VideoDecodeH265CreateFlagsEXT flags = {};
87499     const VULKAN_HPP_NAMESPACE::ExtensionProperties *   pStdExtensionVersion = {};
87500   };
87501   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionCreateInfoEXT ) ==
87502                               sizeof( VkVideoDecodeH265SessionCreateInfoEXT ),
87503                             "struct and wrapper have different size!" );
87504   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionCreateInfoEXT>::value,
87505                             "struct wrapper is not a standard layout!" );
87506   VULKAN_HPP_STATIC_ASSERT(
87507     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionCreateInfoEXT>::value,
87508     "VideoDecodeH265SessionCreateInfoEXT is not nothrow_move_constructible!" );
87509 
87510   template <>
87511   struct CppType<StructureType, StructureType::eVideoDecodeH265SessionCreateInfoEXT>
87512   {
87513     using Type = VideoDecodeH265SessionCreateInfoEXT;
87514   };
87515 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
87516 
87517 #if defined( VK_ENABLE_BETA_EXTENSIONS )
87518   struct VideoDecodeH265SessionParametersAddInfoEXT
87519   {
87520     using NativeType = VkVideoDecodeH265SessionParametersAddInfoEXT;
87521 
87522     static const bool                                  allowDuplicate = false;
87523     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
87524       StructureType::eVideoDecodeH265SessionParametersAddInfoEXT;
87525 
87526 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeH265SessionParametersAddInfoEXTVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoEXT87527     VULKAN_HPP_CONSTEXPR VideoDecodeH265SessionParametersAddInfoEXT(
87528       uint32_t                                 spsStdCount_ = {},
87529       const StdVideoH265SequenceParameterSet * pSpsStd_     = {},
87530       uint32_t                                 ppsStdCount_ = {},
87531       const StdVideoH265PictureParameterSet *  pPpsStd_     = {} ) VULKAN_HPP_NOEXCEPT
87532       : spsStdCount( spsStdCount_ )
87533       , pSpsStd( pSpsStd_ )
87534       , ppsStdCount( ppsStdCount_ )
87535       , pPpsStd( pPpsStd_ )
87536     {}
87537 
87538     VULKAN_HPP_CONSTEXPR VideoDecodeH265SessionParametersAddInfoEXT(
87539       VideoDecodeH265SessionParametersAddInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87540 
VideoDecodeH265SessionParametersAddInfoEXTVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoEXT87541     VideoDecodeH265SessionParametersAddInfoEXT( VkVideoDecodeH265SessionParametersAddInfoEXT const & rhs )
87542       VULKAN_HPP_NOEXCEPT
87543       : VideoDecodeH265SessionParametersAddInfoEXT(
87544           *reinterpret_cast<VideoDecodeH265SessionParametersAddInfoEXT const *>( &rhs ) )
87545     {}
87546 
87547 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoDecodeH265SessionParametersAddInfoEXTVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoEXT87548     VideoDecodeH265SessionParametersAddInfoEXT(
87549       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH265SequenceParameterSet> const & spsStd_,
87550       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH265PictureParameterSet> const &  ppsStd_ = {} )
87551       : spsStdCount( static_cast<uint32_t>( spsStd_.size() ) )
87552       , pSpsStd( spsStd_.data() )
87553       , ppsStdCount( static_cast<uint32_t>( ppsStd_.size() ) )
87554       , pPpsStd( ppsStd_.data() )
87555     {}
87556 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
87557 #  endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
87558 
87559     VideoDecodeH265SessionParametersAddInfoEXT &
87560       operator=( VideoDecodeH265SessionParametersAddInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87561 
87562     VideoDecodeH265SessionParametersAddInfoEXT &
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoEXT87563       operator=( VkVideoDecodeH265SessionParametersAddInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
87564     {
87565       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoEXT const *>( &rhs );
87566       return *this;
87567     }
87568 
87569 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
87570     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoEXT &
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoEXT87571                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
87572     {
87573       pNext = pNext_;
87574       return *this;
87575     }
87576 
87577     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoEXT &
setSpsStdCountVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoEXT87578                             setSpsStdCount( uint32_t spsStdCount_ ) VULKAN_HPP_NOEXCEPT
87579     {
87580       spsStdCount = spsStdCount_;
87581       return *this;
87582     }
87583 
87584     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoEXT &
setPSpsStdVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoEXT87585                             setPSpsStd( const StdVideoH265SequenceParameterSet * pSpsStd_ ) VULKAN_HPP_NOEXCEPT
87586     {
87587       pSpsStd = pSpsStd_;
87588       return *this;
87589     }
87590 
87591 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
87592     VideoDecodeH265SessionParametersAddInfoEXT &
setSpsStdVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoEXT87593       setSpsStd( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH265SequenceParameterSet> const & spsStd_ )
87594         VULKAN_HPP_NOEXCEPT
87595     {
87596       spsStdCount = static_cast<uint32_t>( spsStd_.size() );
87597       pSpsStd     = spsStd_.data();
87598       return *this;
87599     }
87600 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
87601 
87602     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoEXT &
setPpsStdCountVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoEXT87603                             setPpsStdCount( uint32_t ppsStdCount_ ) VULKAN_HPP_NOEXCEPT
87604     {
87605       ppsStdCount = ppsStdCount_;
87606       return *this;
87607     }
87608 
87609     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoEXT &
setPPpsStdVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoEXT87610                             setPPpsStd( const StdVideoH265PictureParameterSet * pPpsStd_ ) VULKAN_HPP_NOEXCEPT
87611     {
87612       pPpsStd = pPpsStd_;
87613       return *this;
87614     }
87615 
87616 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
87617     VideoDecodeH265SessionParametersAddInfoEXT &
setPpsStdVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoEXT87618       setPpsStd( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH265PictureParameterSet> const & ppsStd_ )
87619         VULKAN_HPP_NOEXCEPT
87620     {
87621       ppsStdCount = static_cast<uint32_t>( ppsStd_.size() );
87622       pPpsStd     = ppsStd_.data();
87623       return *this;
87624     }
87625 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
87626 #  endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
87627 
operator VkVideoDecodeH265SessionParametersAddInfoEXT const&VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoEXT87628     explicit operator VkVideoDecodeH265SessionParametersAddInfoEXT const &() const VULKAN_HPP_NOEXCEPT
87629     {
87630       return *reinterpret_cast<const VkVideoDecodeH265SessionParametersAddInfoEXT *>( this );
87631     }
87632 
operator VkVideoDecodeH265SessionParametersAddInfoEXT&VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoEXT87633     explicit operator VkVideoDecodeH265SessionParametersAddInfoEXT &() VULKAN_HPP_NOEXCEPT
87634     {
87635       return *reinterpret_cast<VkVideoDecodeH265SessionParametersAddInfoEXT *>( this );
87636     }
87637 
87638 #  if 14 <= VULKAN_HPP_CPP_VERSION
87639     auto
87640 #  else
87641     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
87642                const void * const &,
87643                uint32_t const &,
87644                const StdVideoH265SequenceParameterSet * const &,
87645                uint32_t const &,
87646                const StdVideoH265PictureParameterSet * const &>
87647 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoEXT87648       reflect() const VULKAN_HPP_NOEXCEPT
87649     {
87650       return std::tie( sType, pNext, spsStdCount, pSpsStd, ppsStdCount, pPpsStd );
87651     }
87652 
87653 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
87654     auto operator<=>( VideoDecodeH265SessionParametersAddInfoEXT const & ) const = default;
87655 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoEXT87656     bool operator==( VideoDecodeH265SessionParametersAddInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
87657     {
87658       return this->reflect() == rhs.reflect();
87659     }
87660 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoEXT87661     bool operator!=( VideoDecodeH265SessionParametersAddInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
87662     {
87663       return this->reflect() != rhs.reflect();
87664     }
87665 #  endif
87666 
87667   public:
87668     VULKAN_HPP_NAMESPACE::StructureType      sType       = StructureType::eVideoDecodeH265SessionParametersAddInfoEXT;
87669     const void *                             pNext       = {};
87670     uint32_t                                 spsStdCount = {};
87671     const StdVideoH265SequenceParameterSet * pSpsStd     = {};
87672     uint32_t                                 ppsStdCount = {};
87673     const StdVideoH265PictureParameterSet *  pPpsStd     = {};
87674   };
87675   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoEXT ) ==
87676                               sizeof( VkVideoDecodeH265SessionParametersAddInfoEXT ),
87677                             "struct and wrapper have different size!" );
87678   VULKAN_HPP_STATIC_ASSERT(
87679     std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoEXT>::value,
87680     "struct wrapper is not a standard layout!" );
87681   VULKAN_HPP_STATIC_ASSERT(
87682     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoEXT>::value,
87683     "VideoDecodeH265SessionParametersAddInfoEXT is not nothrow_move_constructible!" );
87684 
87685   template <>
87686   struct CppType<StructureType, StructureType::eVideoDecodeH265SessionParametersAddInfoEXT>
87687   {
87688     using Type = VideoDecodeH265SessionParametersAddInfoEXT;
87689   };
87690 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
87691 
87692 #if defined( VK_ENABLE_BETA_EXTENSIONS )
87693   struct VideoDecodeH265SessionParametersCreateInfoEXT
87694   {
87695     using NativeType = VkVideoDecodeH265SessionParametersCreateInfoEXT;
87696 
87697     static const bool                                  allowDuplicate = false;
87698     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
87699       StructureType::eVideoDecodeH265SessionParametersCreateInfoEXT;
87700 
87701 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeH265SessionParametersCreateInfoEXTVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoEXT87702     VULKAN_HPP_CONSTEXPR VideoDecodeH265SessionParametersCreateInfoEXT(
87703       uint32_t                                                                 maxSpsStdCount_     = {},
87704       uint32_t                                                                 maxPpsStdCount_     = {},
87705       const VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoEXT * pParametersAddInfo_ = {} )
87706       VULKAN_HPP_NOEXCEPT
87707       : maxSpsStdCount( maxSpsStdCount_ )
87708       , maxPpsStdCount( maxPpsStdCount_ )
87709       , pParametersAddInfo( pParametersAddInfo_ )
87710     {}
87711 
87712     VULKAN_HPP_CONSTEXPR VideoDecodeH265SessionParametersCreateInfoEXT(
87713       VideoDecodeH265SessionParametersCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87714 
VideoDecodeH265SessionParametersCreateInfoEXTVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoEXT87715     VideoDecodeH265SessionParametersCreateInfoEXT( VkVideoDecodeH265SessionParametersCreateInfoEXT const & rhs )
87716       VULKAN_HPP_NOEXCEPT
87717       : VideoDecodeH265SessionParametersCreateInfoEXT(
87718           *reinterpret_cast<VideoDecodeH265SessionParametersCreateInfoEXT const *>( &rhs ) )
87719     {}
87720 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
87721 
87722     VideoDecodeH265SessionParametersCreateInfoEXT &
87723       operator=( VideoDecodeH265SessionParametersCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87724 
87725     VideoDecodeH265SessionParametersCreateInfoEXT &
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoEXT87726       operator=( VkVideoDecodeH265SessionParametersCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
87727     {
87728       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoEXT const *>( &rhs );
87729       return *this;
87730     }
87731 
87732 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
87733     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersCreateInfoEXT &
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoEXT87734                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
87735     {
87736       pNext = pNext_;
87737       return *this;
87738     }
87739 
87740     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersCreateInfoEXT &
setMaxSpsStdCountVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoEXT87741                             setMaxSpsStdCount( uint32_t maxSpsStdCount_ ) VULKAN_HPP_NOEXCEPT
87742     {
87743       maxSpsStdCount = maxSpsStdCount_;
87744       return *this;
87745     }
87746 
87747     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersCreateInfoEXT &
setMaxPpsStdCountVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoEXT87748                             setMaxPpsStdCount( uint32_t maxPpsStdCount_ ) VULKAN_HPP_NOEXCEPT
87749     {
87750       maxPpsStdCount = maxPpsStdCount_;
87751       return *this;
87752     }
87753 
setPParametersAddInfoVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoEXT87754     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersCreateInfoEXT & setPParametersAddInfo(
87755       const VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoEXT * pParametersAddInfo_ ) VULKAN_HPP_NOEXCEPT
87756     {
87757       pParametersAddInfo = pParametersAddInfo_;
87758       return *this;
87759     }
87760 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
87761 
operator VkVideoDecodeH265SessionParametersCreateInfoEXT const&VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoEXT87762     explicit operator VkVideoDecodeH265SessionParametersCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
87763     {
87764       return *reinterpret_cast<const VkVideoDecodeH265SessionParametersCreateInfoEXT *>( this );
87765     }
87766 
operator VkVideoDecodeH265SessionParametersCreateInfoEXT&VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoEXT87767     explicit operator VkVideoDecodeH265SessionParametersCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
87768     {
87769       return *reinterpret_cast<VkVideoDecodeH265SessionParametersCreateInfoEXT *>( this );
87770     }
87771 
87772 #  if 14 <= VULKAN_HPP_CPP_VERSION
87773     auto
87774 #  else
87775     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
87776                const void * const &,
87777                uint32_t const &,
87778                uint32_t const &,
87779                const VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoEXT * const &>
87780 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoEXT87781       reflect() const VULKAN_HPP_NOEXCEPT
87782     {
87783       return std::tie( sType, pNext, maxSpsStdCount, maxPpsStdCount, pParametersAddInfo );
87784     }
87785 
87786 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
87787     auto operator<=>( VideoDecodeH265SessionParametersCreateInfoEXT const & ) const = default;
87788 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoEXT87789     bool operator==( VideoDecodeH265SessionParametersCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
87790     {
87791       return this->reflect() == rhs.reflect();
87792     }
87793 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoEXT87794     bool operator!=( VideoDecodeH265SessionParametersCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
87795     {
87796       return this->reflect() != rhs.reflect();
87797     }
87798 #  endif
87799 
87800   public:
87801     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eVideoDecodeH265SessionParametersCreateInfoEXT;
87802     const void *                        pNext          = {};
87803     uint32_t                            maxSpsStdCount = {};
87804     uint32_t                            maxPpsStdCount = {};
87805     const VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoEXT * pParametersAddInfo = {};
87806   };
87807   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoEXT ) ==
87808                               sizeof( VkVideoDecodeH265SessionParametersCreateInfoEXT ),
87809                             "struct and wrapper have different size!" );
87810   VULKAN_HPP_STATIC_ASSERT(
87811     std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoEXT>::value,
87812     "struct wrapper is not a standard layout!" );
87813   VULKAN_HPP_STATIC_ASSERT(
87814     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoEXT>::value,
87815     "VideoDecodeH265SessionParametersCreateInfoEXT is not nothrow_move_constructible!" );
87816 
87817   template <>
87818   struct CppType<StructureType, StructureType::eVideoDecodeH265SessionParametersCreateInfoEXT>
87819   {
87820     using Type = VideoDecodeH265SessionParametersCreateInfoEXT;
87821   };
87822 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
87823 
87824 #if defined( VK_ENABLE_BETA_EXTENSIONS )
87825   struct VideoDecodeInfoKHR
87826   {
87827     using NativeType = VkVideoDecodeInfoKHR;
87828 
87829     static const bool                                  allowDuplicate = false;
87830     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeInfoKHR;
87831 
87832 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR87833     VULKAN_HPP_CONSTEXPR VideoDecodeInfoKHR(
87834       VULKAN_HPP_NAMESPACE::VideoDecodeFlagsKHR           flags_               = {},
87835       VULKAN_HPP_NAMESPACE::Offset2D                      codedOffset_         = {},
87836       VULKAN_HPP_NAMESPACE::Extent2D                      codedExtent_         = {},
87837       VULKAN_HPP_NAMESPACE::Buffer                        srcBuffer_           = {},
87838       VULKAN_HPP_NAMESPACE::DeviceSize                    srcBufferOffset_     = {},
87839       VULKAN_HPP_NAMESPACE::DeviceSize                    srcBufferRange_      = {},
87840       VULKAN_HPP_NAMESPACE::VideoPictureResourceKHR       dstPictureResource_  = {},
87841       const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR * pSetupReferenceSlot_ = {},
87842       uint32_t                                            referenceSlotCount_  = {},
87843       const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR * pReferenceSlots_     = {} ) VULKAN_HPP_NOEXCEPT
87844       : flags( flags_ )
87845       , codedOffset( codedOffset_ )
87846       , codedExtent( codedExtent_ )
87847       , srcBuffer( srcBuffer_ )
87848       , srcBufferOffset( srcBufferOffset_ )
87849       , srcBufferRange( srcBufferRange_ )
87850       , dstPictureResource( dstPictureResource_ )
87851       , pSetupReferenceSlot( pSetupReferenceSlot_ )
87852       , referenceSlotCount( referenceSlotCount_ )
87853       , pReferenceSlots( pReferenceSlots_ )
87854     {}
87855 
87856     VULKAN_HPP_CONSTEXPR VideoDecodeInfoKHR( VideoDecodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87857 
VideoDecodeInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR87858     VideoDecodeInfoKHR( VkVideoDecodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
87859       : VideoDecodeInfoKHR( *reinterpret_cast<VideoDecodeInfoKHR const *>( &rhs ) )
87860     {}
87861 
87862 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoDecodeInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR87863     VideoDecodeInfoKHR(
87864       VULKAN_HPP_NAMESPACE::VideoDecodeFlagsKHR           flags_,
87865       VULKAN_HPP_NAMESPACE::Offset2D                      codedOffset_,
87866       VULKAN_HPP_NAMESPACE::Extent2D                      codedExtent_,
87867       VULKAN_HPP_NAMESPACE::Buffer                        srcBuffer_,
87868       VULKAN_HPP_NAMESPACE::DeviceSize                    srcBufferOffset_,
87869       VULKAN_HPP_NAMESPACE::DeviceSize                    srcBufferRange_,
87870       VULKAN_HPP_NAMESPACE::VideoPictureResourceKHR       dstPictureResource_,
87871       const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR * pSetupReferenceSlot_,
87872       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR> const &
87873         referenceSlots_ )
87874       : flags( flags_ )
87875       , codedOffset( codedOffset_ )
87876       , codedExtent( codedExtent_ )
87877       , srcBuffer( srcBuffer_ )
87878       , srcBufferOffset( srcBufferOffset_ )
87879       , srcBufferRange( srcBufferRange_ )
87880       , dstPictureResource( dstPictureResource_ )
87881       , pSetupReferenceSlot( pSetupReferenceSlot_ )
87882       , referenceSlotCount( static_cast<uint32_t>( referenceSlots_.size() ) )
87883       , pReferenceSlots( referenceSlots_.data() )
87884     {}
87885 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
87886 #  endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
87887 
87888     VideoDecodeInfoKHR & operator=( VideoDecodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87889 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR87890     VideoDecodeInfoKHR & operator=( VkVideoDecodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
87891     {
87892       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR const *>( &rhs );
87893       return *this;
87894     }
87895 
87896 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR87897     VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
87898     {
87899       pNext = pNext_;
87900       return *this;
87901     }
87902 
87903     VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR &
setFlagsVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR87904                             setFlags( VULKAN_HPP_NAMESPACE::VideoDecodeFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
87905     {
87906       flags = flags_;
87907       return *this;
87908     }
87909 
87910     VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR &
setCodedOffsetVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR87911                             setCodedOffset( VULKAN_HPP_NAMESPACE::Offset2D const & codedOffset_ ) VULKAN_HPP_NOEXCEPT
87912     {
87913       codedOffset = codedOffset_;
87914       return *this;
87915     }
87916 
87917     VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR &
setCodedExtentVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR87918                             setCodedExtent( VULKAN_HPP_NAMESPACE::Extent2D const & codedExtent_ ) VULKAN_HPP_NOEXCEPT
87919     {
87920       codedExtent = codedExtent_;
87921       return *this;
87922     }
87923 
87924     VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR &
setSrcBufferVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR87925                             setSrcBuffer( VULKAN_HPP_NAMESPACE::Buffer srcBuffer_ ) VULKAN_HPP_NOEXCEPT
87926     {
87927       srcBuffer = srcBuffer_;
87928       return *this;
87929     }
87930 
87931     VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR &
setSrcBufferOffsetVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR87932                             setSrcBufferOffset( VULKAN_HPP_NAMESPACE::DeviceSize srcBufferOffset_ ) VULKAN_HPP_NOEXCEPT
87933     {
87934       srcBufferOffset = srcBufferOffset_;
87935       return *this;
87936     }
87937 
87938     VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR &
setSrcBufferRangeVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR87939                             setSrcBufferRange( VULKAN_HPP_NAMESPACE::DeviceSize srcBufferRange_ ) VULKAN_HPP_NOEXCEPT
87940     {
87941       srcBufferRange = srcBufferRange_;
87942       return *this;
87943     }
87944 
setDstPictureResourceVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR87945     VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR & setDstPictureResource(
87946       VULKAN_HPP_NAMESPACE::VideoPictureResourceKHR const & dstPictureResource_ ) VULKAN_HPP_NOEXCEPT
87947     {
87948       dstPictureResource = dstPictureResource_;
87949       return *this;
87950     }
87951 
setPSetupReferenceSlotVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR87952     VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR & setPSetupReferenceSlot(
87953       const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR * pSetupReferenceSlot_ ) VULKAN_HPP_NOEXCEPT
87954     {
87955       pSetupReferenceSlot = pSetupReferenceSlot_;
87956       return *this;
87957     }
87958 
87959     VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR &
setReferenceSlotCountVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR87960                             setReferenceSlotCount( uint32_t referenceSlotCount_ ) VULKAN_HPP_NOEXCEPT
87961     {
87962       referenceSlotCount = referenceSlotCount_;
87963       return *this;
87964     }
87965 
87966     VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR &
setPReferenceSlotsVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR87967       setPReferenceSlots( const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR * pReferenceSlots_ ) VULKAN_HPP_NOEXCEPT
87968     {
87969       pReferenceSlots = pReferenceSlots_;
87970       return *this;
87971     }
87972 
87973 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setReferenceSlotsVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR87974     VideoDecodeInfoKHR & setReferenceSlots(
87975       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR> const &
87976         referenceSlots_ ) VULKAN_HPP_NOEXCEPT
87977     {
87978       referenceSlotCount = static_cast<uint32_t>( referenceSlots_.size() );
87979       pReferenceSlots    = referenceSlots_.data();
87980       return *this;
87981     }
87982 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
87983 #  endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
87984 
operator VkVideoDecodeInfoKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR87985     explicit operator VkVideoDecodeInfoKHR const &() const VULKAN_HPP_NOEXCEPT
87986     {
87987       return *reinterpret_cast<const VkVideoDecodeInfoKHR *>( this );
87988     }
87989 
operator VkVideoDecodeInfoKHR&VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR87990     explicit operator VkVideoDecodeInfoKHR &() VULKAN_HPP_NOEXCEPT
87991     {
87992       return *reinterpret_cast<VkVideoDecodeInfoKHR *>( this );
87993     }
87994 
87995 #  if 14 <= VULKAN_HPP_CPP_VERSION
87996     auto
87997 #  else
87998     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
87999                const void * const &,
88000                VULKAN_HPP_NAMESPACE::VideoDecodeFlagsKHR const &,
88001                VULKAN_HPP_NAMESPACE::Offset2D const &,
88002                VULKAN_HPP_NAMESPACE::Extent2D const &,
88003                VULKAN_HPP_NAMESPACE::Buffer const &,
88004                VULKAN_HPP_NAMESPACE::DeviceSize const &,
88005                VULKAN_HPP_NAMESPACE::DeviceSize const &,
88006                VULKAN_HPP_NAMESPACE::VideoPictureResourceKHR const &,
88007                const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR * const &,
88008                uint32_t const &,
88009                const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR * const &>
88010 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR88011       reflect() const VULKAN_HPP_NOEXCEPT
88012     {
88013       return std::tie( sType,
88014                        pNext,
88015                        flags,
88016                        codedOffset,
88017                        codedExtent,
88018                        srcBuffer,
88019                        srcBufferOffset,
88020                        srcBufferRange,
88021                        dstPictureResource,
88022                        pSetupReferenceSlot,
88023                        referenceSlotCount,
88024                        pReferenceSlots );
88025     }
88026 
88027 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
88028     auto operator<=>( VideoDecodeInfoKHR const & ) const = default;
88029 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR88030     bool operator==( VideoDecodeInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
88031     {
88032       return this->reflect() == rhs.reflect();
88033     }
88034 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR88035     bool operator!=( VideoDecodeInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
88036     {
88037       return this->reflect() != rhs.reflect();
88038     }
88039 #  endif
88040 
88041   public:
88042     VULKAN_HPP_NAMESPACE::StructureType                 sType               = StructureType::eVideoDecodeInfoKHR;
88043     const void *                                        pNext               = {};
88044     VULKAN_HPP_NAMESPACE::VideoDecodeFlagsKHR           flags               = {};
88045     VULKAN_HPP_NAMESPACE::Offset2D                      codedOffset         = {};
88046     VULKAN_HPP_NAMESPACE::Extent2D                      codedExtent         = {};
88047     VULKAN_HPP_NAMESPACE::Buffer                        srcBuffer           = {};
88048     VULKAN_HPP_NAMESPACE::DeviceSize                    srcBufferOffset     = {};
88049     VULKAN_HPP_NAMESPACE::DeviceSize                    srcBufferRange      = {};
88050     VULKAN_HPP_NAMESPACE::VideoPictureResourceKHR       dstPictureResource  = {};
88051     const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR * pSetupReferenceSlot = {};
88052     uint32_t                                            referenceSlotCount  = {};
88053     const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR * pReferenceSlots     = {};
88054   };
88055   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR ) == sizeof( VkVideoDecodeInfoKHR ),
88056                             "struct and wrapper have different size!" );
88057   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR>::value,
88058                             "struct wrapper is not a standard layout!" );
88059   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR>::value,
88060                             "VideoDecodeInfoKHR is not nothrow_move_constructible!" );
88061 
88062   template <>
88063   struct CppType<StructureType, StructureType::eVideoDecodeInfoKHR>
88064   {
88065     using Type = VideoDecodeInfoKHR;
88066   };
88067 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
88068 
88069 #if defined( VK_ENABLE_BETA_EXTENSIONS )
88070   struct VideoEncodeH264CapabilitiesEXT
88071   {
88072     using NativeType = VkVideoEncodeH264CapabilitiesEXT;
88073 
88074     static const bool                                  allowDuplicate = false;
88075     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH264CapabilitiesEXT;
88076 
88077 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264CapabilitiesEXTVULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesEXT88078     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264CapabilitiesEXT(
88079       VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilityFlagsEXT flags_                   = {},
88080       VULKAN_HPP_NAMESPACE::VideoEncodeH264InputModeFlagsEXT  inputModeFlags_          = {},
88081       VULKAN_HPP_NAMESPACE::VideoEncodeH264OutputModeFlagsEXT outputModeFlags_         = {},
88082       VULKAN_HPP_NAMESPACE::Extent2D                          minPictureSizeInMbs_     = {},
88083       VULKAN_HPP_NAMESPACE::Extent2D                          maxPictureSizeInMbs_     = {},
88084       VULKAN_HPP_NAMESPACE::Extent2D                          inputImageDataAlignment_ = {},
88085       uint8_t                                                 maxNumL0ReferenceForP_   = {},
88086       uint8_t                                                 maxNumL0ReferenceForB_   = {},
88087       uint8_t                                                 maxNumL1Reference_       = {},
88088       uint8_t                                                 qualityLevelCount_       = {},
88089       VULKAN_HPP_NAMESPACE::ExtensionProperties               stdExtensionVersion_     = {} ) VULKAN_HPP_NOEXCEPT
88090       : flags( flags_ )
88091       , inputModeFlags( inputModeFlags_ )
88092       , outputModeFlags( outputModeFlags_ )
88093       , minPictureSizeInMbs( minPictureSizeInMbs_ )
88094       , maxPictureSizeInMbs( maxPictureSizeInMbs_ )
88095       , inputImageDataAlignment( inputImageDataAlignment_ )
88096       , maxNumL0ReferenceForP( maxNumL0ReferenceForP_ )
88097       , maxNumL0ReferenceForB( maxNumL0ReferenceForB_ )
88098       , maxNumL1Reference( maxNumL1Reference_ )
88099       , qualityLevelCount( qualityLevelCount_ )
88100       , stdExtensionVersion( stdExtensionVersion_ )
88101     {}
88102 
88103     VULKAN_HPP_CONSTEXPR_14
88104       VideoEncodeH264CapabilitiesEXT( VideoEncodeH264CapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88105 
VideoEncodeH264CapabilitiesEXTVULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesEXT88106     VideoEncodeH264CapabilitiesEXT( VkVideoEncodeH264CapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
88107       : VideoEncodeH264CapabilitiesEXT( *reinterpret_cast<VideoEncodeH264CapabilitiesEXT const *>( &rhs ) )
88108     {}
88109 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
88110 
88111     VideoEncodeH264CapabilitiesEXT &
88112       operator=( VideoEncodeH264CapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88113 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesEXT88114     VideoEncodeH264CapabilitiesEXT & operator=( VkVideoEncodeH264CapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
88115     {
88116       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesEXT const *>( &rhs );
88117       return *this;
88118     }
88119 
88120 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesEXT88121     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264CapabilitiesEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
88122     {
88123       pNext = pNext_;
88124       return *this;
88125     }
88126 
88127     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264CapabilitiesEXT &
setFlagsVULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesEXT88128       setFlags( VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilityFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
88129     {
88130       flags = flags_;
88131       return *this;
88132     }
88133 
88134     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264CapabilitiesEXT &
setInputModeFlagsVULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesEXT88135       setInputModeFlags( VULKAN_HPP_NAMESPACE::VideoEncodeH264InputModeFlagsEXT inputModeFlags_ ) VULKAN_HPP_NOEXCEPT
88136     {
88137       inputModeFlags = inputModeFlags_;
88138       return *this;
88139     }
88140 
88141     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264CapabilitiesEXT &
setOutputModeFlagsVULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesEXT88142       setOutputModeFlags( VULKAN_HPP_NAMESPACE::VideoEncodeH264OutputModeFlagsEXT outputModeFlags_ ) VULKAN_HPP_NOEXCEPT
88143     {
88144       outputModeFlags = outputModeFlags_;
88145       return *this;
88146     }
88147 
88148     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264CapabilitiesEXT &
setMinPictureSizeInMbsVULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesEXT88149       setMinPictureSizeInMbs( VULKAN_HPP_NAMESPACE::Extent2D const & minPictureSizeInMbs_ ) VULKAN_HPP_NOEXCEPT
88150     {
88151       minPictureSizeInMbs = minPictureSizeInMbs_;
88152       return *this;
88153     }
88154 
88155     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264CapabilitiesEXT &
setMaxPictureSizeInMbsVULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesEXT88156       setMaxPictureSizeInMbs( VULKAN_HPP_NAMESPACE::Extent2D const & maxPictureSizeInMbs_ ) VULKAN_HPP_NOEXCEPT
88157     {
88158       maxPictureSizeInMbs = maxPictureSizeInMbs_;
88159       return *this;
88160     }
88161 
88162     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264CapabilitiesEXT &
setInputImageDataAlignmentVULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesEXT88163       setInputImageDataAlignment( VULKAN_HPP_NAMESPACE::Extent2D const & inputImageDataAlignment_ ) VULKAN_HPP_NOEXCEPT
88164     {
88165       inputImageDataAlignment = inputImageDataAlignment_;
88166       return *this;
88167     }
88168 
88169     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264CapabilitiesEXT &
setMaxNumL0ReferenceForPVULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesEXT88170                             setMaxNumL0ReferenceForP( uint8_t maxNumL0ReferenceForP_ ) VULKAN_HPP_NOEXCEPT
88171     {
88172       maxNumL0ReferenceForP = maxNumL0ReferenceForP_;
88173       return *this;
88174     }
88175 
88176     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264CapabilitiesEXT &
setMaxNumL0ReferenceForBVULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesEXT88177                             setMaxNumL0ReferenceForB( uint8_t maxNumL0ReferenceForB_ ) VULKAN_HPP_NOEXCEPT
88178     {
88179       maxNumL0ReferenceForB = maxNumL0ReferenceForB_;
88180       return *this;
88181     }
88182 
88183     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264CapabilitiesEXT &
setMaxNumL1ReferenceVULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesEXT88184                             setMaxNumL1Reference( uint8_t maxNumL1Reference_ ) VULKAN_HPP_NOEXCEPT
88185     {
88186       maxNumL1Reference = maxNumL1Reference_;
88187       return *this;
88188     }
88189 
88190     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264CapabilitiesEXT &
setQualityLevelCountVULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesEXT88191                             setQualityLevelCount( uint8_t qualityLevelCount_ ) VULKAN_HPP_NOEXCEPT
88192     {
88193       qualityLevelCount = qualityLevelCount_;
88194       return *this;
88195     }
88196 
setStdExtensionVersionVULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesEXT88197     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264CapabilitiesEXT & setStdExtensionVersion(
88198       VULKAN_HPP_NAMESPACE::ExtensionProperties const & stdExtensionVersion_ ) VULKAN_HPP_NOEXCEPT
88199     {
88200       stdExtensionVersion = stdExtensionVersion_;
88201       return *this;
88202     }
88203 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
88204 
operator VkVideoEncodeH264CapabilitiesEXT const&VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesEXT88205     explicit operator VkVideoEncodeH264CapabilitiesEXT const &() const VULKAN_HPP_NOEXCEPT
88206     {
88207       return *reinterpret_cast<const VkVideoEncodeH264CapabilitiesEXT *>( this );
88208     }
88209 
operator VkVideoEncodeH264CapabilitiesEXT&VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesEXT88210     explicit operator VkVideoEncodeH264CapabilitiesEXT &() VULKAN_HPP_NOEXCEPT
88211     {
88212       return *reinterpret_cast<VkVideoEncodeH264CapabilitiesEXT *>( this );
88213     }
88214 
88215 #  if 14 <= VULKAN_HPP_CPP_VERSION
88216     auto
88217 #  else
88218     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
88219                const void * const &,
88220                VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilityFlagsEXT const &,
88221                VULKAN_HPP_NAMESPACE::VideoEncodeH264InputModeFlagsEXT const &,
88222                VULKAN_HPP_NAMESPACE::VideoEncodeH264OutputModeFlagsEXT const &,
88223                VULKAN_HPP_NAMESPACE::Extent2D const &,
88224                VULKAN_HPP_NAMESPACE::Extent2D const &,
88225                VULKAN_HPP_NAMESPACE::Extent2D const &,
88226                uint8_t const &,
88227                uint8_t const &,
88228                uint8_t const &,
88229                uint8_t const &,
88230                VULKAN_HPP_NAMESPACE::ExtensionProperties const &>
88231 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesEXT88232       reflect() const VULKAN_HPP_NOEXCEPT
88233     {
88234       return std::tie( sType,
88235                        pNext,
88236                        flags,
88237                        inputModeFlags,
88238                        outputModeFlags,
88239                        minPictureSizeInMbs,
88240                        maxPictureSizeInMbs,
88241                        inputImageDataAlignment,
88242                        maxNumL0ReferenceForP,
88243                        maxNumL0ReferenceForB,
88244                        maxNumL1Reference,
88245                        qualityLevelCount,
88246                        stdExtensionVersion );
88247     }
88248 
88249 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
88250     auto operator<=>( VideoEncodeH264CapabilitiesEXT const & ) const = default;
88251 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesEXT88252     bool operator==( VideoEncodeH264CapabilitiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
88253     {
88254       return this->reflect() == rhs.reflect();
88255     }
88256 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesEXT88257     bool operator!=( VideoEncodeH264CapabilitiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
88258     {
88259       return this->reflect() != rhs.reflect();
88260     }
88261 #  endif
88262 
88263   public:
88264     VULKAN_HPP_NAMESPACE::StructureType                     sType = StructureType::eVideoEncodeH264CapabilitiesEXT;
88265     const void *                                            pNext = {};
88266     VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilityFlagsEXT flags = {};
88267     VULKAN_HPP_NAMESPACE::VideoEncodeH264InputModeFlagsEXT  inputModeFlags          = {};
88268     VULKAN_HPP_NAMESPACE::VideoEncodeH264OutputModeFlagsEXT outputModeFlags         = {};
88269     VULKAN_HPP_NAMESPACE::Extent2D                          minPictureSizeInMbs     = {};
88270     VULKAN_HPP_NAMESPACE::Extent2D                          maxPictureSizeInMbs     = {};
88271     VULKAN_HPP_NAMESPACE::Extent2D                          inputImageDataAlignment = {};
88272     uint8_t                                                 maxNumL0ReferenceForP   = {};
88273     uint8_t                                                 maxNumL0ReferenceForB   = {};
88274     uint8_t                                                 maxNumL1Reference       = {};
88275     uint8_t                                                 qualityLevelCount       = {};
88276     VULKAN_HPP_NAMESPACE::ExtensionProperties               stdExtensionVersion     = {};
88277   };
88278   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesEXT ) ==
88279                               sizeof( VkVideoEncodeH264CapabilitiesEXT ),
88280                             "struct and wrapper have different size!" );
88281   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesEXT>::value,
88282                             "struct wrapper is not a standard layout!" );
88283   VULKAN_HPP_STATIC_ASSERT(
88284     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesEXT>::value,
88285     "VideoEncodeH264CapabilitiesEXT is not nothrow_move_constructible!" );
88286 
88287   template <>
88288   struct CppType<StructureType, StructureType::eVideoEncodeH264CapabilitiesEXT>
88289   {
88290     using Type = VideoEncodeH264CapabilitiesEXT;
88291   };
88292 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
88293 
88294 #if defined( VK_ENABLE_BETA_EXTENSIONS )
88295   struct VideoEncodeH264DpbSlotInfoEXT
88296   {
88297     using NativeType = VkVideoEncodeH264DpbSlotInfoEXT;
88298 
88299     static const bool                                  allowDuplicate = false;
88300     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH264DpbSlotInfoEXT;
88301 
88302 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
88303     VULKAN_HPP_CONSTEXPR
VideoEncodeH264DpbSlotInfoEXTVULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT88304       VideoEncodeH264DpbSlotInfoEXT( int8_t                                slotIndex_       = {},
88305                                      const StdVideoEncodeH264PictureInfo * pStdPictureInfo_ = {} ) VULKAN_HPP_NOEXCEPT
88306       : slotIndex( slotIndex_ )
88307       , pStdPictureInfo( pStdPictureInfo_ )
88308     {}
88309 
88310     VULKAN_HPP_CONSTEXPR
88311       VideoEncodeH264DpbSlotInfoEXT( VideoEncodeH264DpbSlotInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88312 
VideoEncodeH264DpbSlotInfoEXTVULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT88313     VideoEncodeH264DpbSlotInfoEXT( VkVideoEncodeH264DpbSlotInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
88314       : VideoEncodeH264DpbSlotInfoEXT( *reinterpret_cast<VideoEncodeH264DpbSlotInfoEXT const *>( &rhs ) )
88315     {}
88316 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
88317 
88318     VideoEncodeH264DpbSlotInfoEXT &
88319       operator=( VideoEncodeH264DpbSlotInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88320 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT88321     VideoEncodeH264DpbSlotInfoEXT & operator=( VkVideoEncodeH264DpbSlotInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
88322     {
88323       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT const *>( &rhs );
88324       return *this;
88325     }
88326 
88327 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT88328     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264DpbSlotInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
88329     {
88330       pNext = pNext_;
88331       return *this;
88332     }
88333 
setSlotIndexVULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT88334     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264DpbSlotInfoEXT & setSlotIndex( int8_t slotIndex_ ) VULKAN_HPP_NOEXCEPT
88335     {
88336       slotIndex = slotIndex_;
88337       return *this;
88338     }
88339 
88340     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264DpbSlotInfoEXT &
setPStdPictureInfoVULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT88341       setPStdPictureInfo( const StdVideoEncodeH264PictureInfo * pStdPictureInfo_ ) VULKAN_HPP_NOEXCEPT
88342     {
88343       pStdPictureInfo = pStdPictureInfo_;
88344       return *this;
88345     }
88346 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
88347 
operator VkVideoEncodeH264DpbSlotInfoEXT const&VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT88348     explicit operator VkVideoEncodeH264DpbSlotInfoEXT const &() const VULKAN_HPP_NOEXCEPT
88349     {
88350       return *reinterpret_cast<const VkVideoEncodeH264DpbSlotInfoEXT *>( this );
88351     }
88352 
operator VkVideoEncodeH264DpbSlotInfoEXT&VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT88353     explicit operator VkVideoEncodeH264DpbSlotInfoEXT &() VULKAN_HPP_NOEXCEPT
88354     {
88355       return *reinterpret_cast<VkVideoEncodeH264DpbSlotInfoEXT *>( this );
88356     }
88357 
88358 #  if 14 <= VULKAN_HPP_CPP_VERSION
88359     auto
88360 #  else
88361     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
88362                const void * const &,
88363                int8_t const &,
88364                const StdVideoEncodeH264PictureInfo * const &>
88365 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT88366       reflect() const VULKAN_HPP_NOEXCEPT
88367     {
88368       return std::tie( sType, pNext, slotIndex, pStdPictureInfo );
88369     }
88370 
88371 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
88372     auto operator<=>( VideoEncodeH264DpbSlotInfoEXT const & ) const = default;
88373 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT88374     bool operator==( VideoEncodeH264DpbSlotInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
88375     {
88376       return this->reflect() == rhs.reflect();
88377     }
88378 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT88379     bool operator!=( VideoEncodeH264DpbSlotInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
88380     {
88381       return this->reflect() != rhs.reflect();
88382     }
88383 #  endif
88384 
88385   public:
88386     VULKAN_HPP_NAMESPACE::StructureType   sType           = StructureType::eVideoEncodeH264DpbSlotInfoEXT;
88387     const void *                          pNext           = {};
88388     int8_t                                slotIndex       = {};
88389     const StdVideoEncodeH264PictureInfo * pStdPictureInfo = {};
88390   };
88391   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT ) ==
88392                               sizeof( VkVideoEncodeH264DpbSlotInfoEXT ),
88393                             "struct and wrapper have different size!" );
88394   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT>::value,
88395                             "struct wrapper is not a standard layout!" );
88396   VULKAN_HPP_STATIC_ASSERT(
88397     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT>::value,
88398     "VideoEncodeH264DpbSlotInfoEXT is not nothrow_move_constructible!" );
88399 
88400   template <>
88401   struct CppType<StructureType, StructureType::eVideoEncodeH264DpbSlotInfoEXT>
88402   {
88403     using Type = VideoEncodeH264DpbSlotInfoEXT;
88404   };
88405 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
88406 
88407 #if defined( VK_ENABLE_BETA_EXTENSIONS )
88408   struct VideoEncodeH264EmitPictureParametersEXT
88409   {
88410     using NativeType = VkVideoEncodeH264EmitPictureParametersEXT;
88411 
88412     static const bool                                  allowDuplicate = false;
88413     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
88414       StructureType::eVideoEncodeH264EmitPictureParametersEXT;
88415 
88416 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
88417     VULKAN_HPP_CONSTEXPR
VideoEncodeH264EmitPictureParametersEXTVULKAN_HPP_NAMESPACE::VideoEncodeH264EmitPictureParametersEXT88418       VideoEncodeH264EmitPictureParametersEXT( uint8_t                      spsId_           = {},
88419                                                VULKAN_HPP_NAMESPACE::Bool32 emitSpsEnable_   = {},
88420                                                uint32_t                     ppsIdEntryCount_ = {},
88421                                                const uint8_t *              ppsIdEntries_    = {} ) VULKAN_HPP_NOEXCEPT
88422       : spsId( spsId_ )
88423       , emitSpsEnable( emitSpsEnable_ )
88424       , ppsIdEntryCount( ppsIdEntryCount_ )
88425       , ppsIdEntries( ppsIdEntries_ )
88426     {}
88427 
88428     VULKAN_HPP_CONSTEXPR VideoEncodeH264EmitPictureParametersEXT( VideoEncodeH264EmitPictureParametersEXT const & rhs )
88429       VULKAN_HPP_NOEXCEPT = default;
88430 
VideoEncodeH264EmitPictureParametersEXTVULKAN_HPP_NAMESPACE::VideoEncodeH264EmitPictureParametersEXT88431     VideoEncodeH264EmitPictureParametersEXT( VkVideoEncodeH264EmitPictureParametersEXT const & rhs ) VULKAN_HPP_NOEXCEPT
88432       : VideoEncodeH264EmitPictureParametersEXT(
88433           *reinterpret_cast<VideoEncodeH264EmitPictureParametersEXT const *>( &rhs ) )
88434     {}
88435 
88436 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoEncodeH264EmitPictureParametersEXTVULKAN_HPP_NAMESPACE::VideoEncodeH264EmitPictureParametersEXT88437     VideoEncodeH264EmitPictureParametersEXT(
88438       uint8_t                                                              spsId_,
88439       VULKAN_HPP_NAMESPACE::Bool32                                         emitSpsEnable_,
88440       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint8_t> const & psIdEntries_ )
88441       : spsId( spsId_ )
88442       , emitSpsEnable( emitSpsEnable_ )
88443       , ppsIdEntryCount( static_cast<uint32_t>( psIdEntries_.size() ) )
88444       , ppsIdEntries( psIdEntries_.data() )
88445     {}
88446 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
88447 #  endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
88448 
88449     VideoEncodeH264EmitPictureParametersEXT &
88450       operator=( VideoEncodeH264EmitPictureParametersEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88451 
88452     VideoEncodeH264EmitPictureParametersEXT &
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264EmitPictureParametersEXT88453       operator=( VkVideoEncodeH264EmitPictureParametersEXT const & rhs ) VULKAN_HPP_NOEXCEPT
88454     {
88455       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264EmitPictureParametersEXT const *>( &rhs );
88456       return *this;
88457     }
88458 
88459 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
88460     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264EmitPictureParametersEXT &
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH264EmitPictureParametersEXT88461                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
88462     {
88463       pNext = pNext_;
88464       return *this;
88465     }
88466 
setSpsIdVULKAN_HPP_NAMESPACE::VideoEncodeH264EmitPictureParametersEXT88467     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264EmitPictureParametersEXT & setSpsId( uint8_t spsId_ ) VULKAN_HPP_NOEXCEPT
88468     {
88469       spsId = spsId_;
88470       return *this;
88471     }
88472 
88473     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264EmitPictureParametersEXT &
setEmitSpsEnableVULKAN_HPP_NAMESPACE::VideoEncodeH264EmitPictureParametersEXT88474                             setEmitSpsEnable( VULKAN_HPP_NAMESPACE::Bool32 emitSpsEnable_ ) VULKAN_HPP_NOEXCEPT
88475     {
88476       emitSpsEnable = emitSpsEnable_;
88477       return *this;
88478     }
88479 
88480     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264EmitPictureParametersEXT &
setPpsIdEntryCountVULKAN_HPP_NAMESPACE::VideoEncodeH264EmitPictureParametersEXT88481                             setPpsIdEntryCount( uint32_t ppsIdEntryCount_ ) VULKAN_HPP_NOEXCEPT
88482     {
88483       ppsIdEntryCount = ppsIdEntryCount_;
88484       return *this;
88485     }
88486 
88487     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264EmitPictureParametersEXT &
setPpsIdEntriesVULKAN_HPP_NAMESPACE::VideoEncodeH264EmitPictureParametersEXT88488                             setPpsIdEntries( const uint8_t * ppsIdEntries_ ) VULKAN_HPP_NOEXCEPT
88489     {
88490       ppsIdEntries = ppsIdEntries_;
88491       return *this;
88492     }
88493 
88494 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPsIdEntriesVULKAN_HPP_NAMESPACE::VideoEncodeH264EmitPictureParametersEXT88495     VideoEncodeH264EmitPictureParametersEXT & setPsIdEntries(
88496       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint8_t> const & psIdEntries_ ) VULKAN_HPP_NOEXCEPT
88497     {
88498       ppsIdEntryCount = static_cast<uint32_t>( psIdEntries_.size() );
88499       ppsIdEntries    = psIdEntries_.data();
88500       return *this;
88501     }
88502 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
88503 #  endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
88504 
operator VkVideoEncodeH264EmitPictureParametersEXT const&VULKAN_HPP_NAMESPACE::VideoEncodeH264EmitPictureParametersEXT88505     explicit operator VkVideoEncodeH264EmitPictureParametersEXT const &() const VULKAN_HPP_NOEXCEPT
88506     {
88507       return *reinterpret_cast<const VkVideoEncodeH264EmitPictureParametersEXT *>( this );
88508     }
88509 
operator VkVideoEncodeH264EmitPictureParametersEXT&VULKAN_HPP_NAMESPACE::VideoEncodeH264EmitPictureParametersEXT88510     explicit operator VkVideoEncodeH264EmitPictureParametersEXT &() VULKAN_HPP_NOEXCEPT
88511     {
88512       return *reinterpret_cast<VkVideoEncodeH264EmitPictureParametersEXT *>( this );
88513     }
88514 
88515 #  if 14 <= VULKAN_HPP_CPP_VERSION
88516     auto
88517 #  else
88518     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
88519                const void * const &,
88520                uint8_t const &,
88521                VULKAN_HPP_NAMESPACE::Bool32 const &,
88522                uint32_t const &,
88523                const uint8_t * const &>
88524 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264EmitPictureParametersEXT88525       reflect() const VULKAN_HPP_NOEXCEPT
88526     {
88527       return std::tie( sType, pNext, spsId, emitSpsEnable, ppsIdEntryCount, ppsIdEntries );
88528     }
88529 
88530 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
88531     auto operator<=>( VideoEncodeH264EmitPictureParametersEXT const & ) const = default;
88532 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264EmitPictureParametersEXT88533     bool operator==( VideoEncodeH264EmitPictureParametersEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
88534     {
88535       return this->reflect() == rhs.reflect();
88536     }
88537 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264EmitPictureParametersEXT88538     bool operator!=( VideoEncodeH264EmitPictureParametersEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
88539     {
88540       return this->reflect() != rhs.reflect();
88541     }
88542 #  endif
88543 
88544   public:
88545     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::eVideoEncodeH264EmitPictureParametersEXT;
88546     const void *                        pNext           = {};
88547     uint8_t                             spsId           = {};
88548     VULKAN_HPP_NAMESPACE::Bool32        emitSpsEnable   = {};
88549     uint32_t                            ppsIdEntryCount = {};
88550     const uint8_t *                     ppsIdEntries    = {};
88551   };
88552   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264EmitPictureParametersEXT ) ==
88553                               sizeof( VkVideoEncodeH264EmitPictureParametersEXT ),
88554                             "struct and wrapper have different size!" );
88555   VULKAN_HPP_STATIC_ASSERT(
88556     std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoEncodeH264EmitPictureParametersEXT>::value,
88557     "struct wrapper is not a standard layout!" );
88558   VULKAN_HPP_STATIC_ASSERT(
88559     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoEncodeH264EmitPictureParametersEXT>::value,
88560     "VideoEncodeH264EmitPictureParametersEXT is not nothrow_move_constructible!" );
88561 
88562   template <>
88563   struct CppType<StructureType, StructureType::eVideoEncodeH264EmitPictureParametersEXT>
88564   {
88565     using Type = VideoEncodeH264EmitPictureParametersEXT;
88566   };
88567 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
88568 
88569 #if defined( VK_ENABLE_BETA_EXTENSIONS )
88570   struct VideoEncodeH264FrameSizeEXT
88571   {
88572     using NativeType = VkVideoEncodeH264FrameSizeEXT;
88573 
88574 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264FrameSizeEXTVULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeEXT88575     VULKAN_HPP_CONSTEXPR VideoEncodeH264FrameSizeEXT( uint32_t frameISize_ = {},
88576                                                       uint32_t framePSize_ = {},
88577                                                       uint32_t frameBSize_ = {} ) VULKAN_HPP_NOEXCEPT
88578       : frameISize( frameISize_ )
88579       , framePSize( framePSize_ )
88580       , frameBSize( frameBSize_ )
88581     {}
88582 
88583     VULKAN_HPP_CONSTEXPR
88584       VideoEncodeH264FrameSizeEXT( VideoEncodeH264FrameSizeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88585 
VideoEncodeH264FrameSizeEXTVULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeEXT88586     VideoEncodeH264FrameSizeEXT( VkVideoEncodeH264FrameSizeEXT const & rhs ) VULKAN_HPP_NOEXCEPT
88587       : VideoEncodeH264FrameSizeEXT( *reinterpret_cast<VideoEncodeH264FrameSizeEXT const *>( &rhs ) )
88588     {}
88589 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
88590 
88591     VideoEncodeH264FrameSizeEXT & operator=( VideoEncodeH264FrameSizeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88592 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeEXT88593     VideoEncodeH264FrameSizeEXT & operator=( VkVideoEncodeH264FrameSizeEXT const & rhs ) VULKAN_HPP_NOEXCEPT
88594     {
88595       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeEXT const *>( &rhs );
88596       return *this;
88597     }
88598 
88599 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setFrameISizeVULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeEXT88600     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264FrameSizeEXT & setFrameISize( uint32_t frameISize_ ) VULKAN_HPP_NOEXCEPT
88601     {
88602       frameISize = frameISize_;
88603       return *this;
88604     }
88605 
setFramePSizeVULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeEXT88606     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264FrameSizeEXT & setFramePSize( uint32_t framePSize_ ) VULKAN_HPP_NOEXCEPT
88607     {
88608       framePSize = framePSize_;
88609       return *this;
88610     }
88611 
setFrameBSizeVULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeEXT88612     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264FrameSizeEXT & setFrameBSize( uint32_t frameBSize_ ) VULKAN_HPP_NOEXCEPT
88613     {
88614       frameBSize = frameBSize_;
88615       return *this;
88616     }
88617 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
88618 
operator VkVideoEncodeH264FrameSizeEXT const&VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeEXT88619     explicit operator VkVideoEncodeH264FrameSizeEXT const &() const VULKAN_HPP_NOEXCEPT
88620     {
88621       return *reinterpret_cast<const VkVideoEncodeH264FrameSizeEXT *>( this );
88622     }
88623 
operator VkVideoEncodeH264FrameSizeEXT&VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeEXT88624     explicit operator VkVideoEncodeH264FrameSizeEXT &() VULKAN_HPP_NOEXCEPT
88625     {
88626       return *reinterpret_cast<VkVideoEncodeH264FrameSizeEXT *>( this );
88627     }
88628 
88629 #  if 14 <= VULKAN_HPP_CPP_VERSION
88630     auto
88631 #  else
88632     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &>
88633 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeEXT88634       reflect() const VULKAN_HPP_NOEXCEPT
88635     {
88636       return std::tie( frameISize, framePSize, frameBSize );
88637     }
88638 
88639 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
88640     auto operator<=>( VideoEncodeH264FrameSizeEXT const & ) const = default;
88641 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeEXT88642     bool operator==( VideoEncodeH264FrameSizeEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
88643     {
88644       return this->reflect() == rhs.reflect();
88645     }
88646 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeEXT88647     bool operator!=( VideoEncodeH264FrameSizeEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
88648     {
88649       return this->reflect() != rhs.reflect();
88650     }
88651 #  endif
88652 
88653   public:
88654     uint32_t frameISize = {};
88655     uint32_t framePSize = {};
88656     uint32_t frameBSize = {};
88657   };
88658   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeEXT ) ==
88659                               sizeof( VkVideoEncodeH264FrameSizeEXT ),
88660                             "struct and wrapper have different size!" );
88661   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeEXT>::value,
88662                             "struct wrapper is not a standard layout!" );
88663   VULKAN_HPP_STATIC_ASSERT(
88664     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeEXT>::value,
88665     "VideoEncodeH264FrameSizeEXT is not nothrow_move_constructible!" );
88666 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
88667 
88668 #if defined( VK_ENABLE_BETA_EXTENSIONS )
88669   struct VideoEncodeH264NaluSliceEXT
88670   {
88671     using NativeType = VkVideoEncodeH264NaluSliceEXT;
88672 
88673     static const bool                                  allowDuplicate = false;
88674     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH264NaluSliceEXT;
88675 
88676 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264NaluSliceEXTVULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceEXT88677     VULKAN_HPP_CONSTEXPR VideoEncodeH264NaluSliceEXT(
88678       const StdVideoEncodeH264SliceHeader *                       pSliceHeaderStd_         = {},
88679       uint32_t                                                    mbCount_                 = {},
88680       uint8_t                                                     refFinalList0EntryCount_ = {},
88681       const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT * pRefFinalList0Entries_   = {},
88682       uint8_t                                                     refFinalList1EntryCount_ = {},
88683       const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT * pRefFinalList1Entries_   = {} ) VULKAN_HPP_NOEXCEPT
88684       : pSliceHeaderStd( pSliceHeaderStd_ )
88685       , mbCount( mbCount_ )
88686       , refFinalList0EntryCount( refFinalList0EntryCount_ )
88687       , pRefFinalList0Entries( pRefFinalList0Entries_ )
88688       , refFinalList1EntryCount( refFinalList1EntryCount_ )
88689       , pRefFinalList1Entries( pRefFinalList1Entries_ )
88690     {}
88691 
88692     VULKAN_HPP_CONSTEXPR
88693       VideoEncodeH264NaluSliceEXT( VideoEncodeH264NaluSliceEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88694 
VideoEncodeH264NaluSliceEXTVULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceEXT88695     VideoEncodeH264NaluSliceEXT( VkVideoEncodeH264NaluSliceEXT const & rhs ) VULKAN_HPP_NOEXCEPT
88696       : VideoEncodeH264NaluSliceEXT( *reinterpret_cast<VideoEncodeH264NaluSliceEXT const *>( &rhs ) )
88697     {}
88698 
88699 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoEncodeH264NaluSliceEXTVULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceEXT88700     VideoEncodeH264NaluSliceEXT(
88701       const StdVideoEncodeH264SliceHeader * pSliceHeaderStd_,
88702       uint32_t                              mbCount_,
88703       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT> const &
88704         refFinalList0Entries_,
88705       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT> const &
88706         refFinalList1Entries_ = {} )
88707       : pSliceHeaderStd( pSliceHeaderStd_ )
88708       , mbCount( mbCount_ )
88709       , refFinalList0EntryCount( static_cast<uint8_t>( refFinalList0Entries_.size() ) )
88710       , pRefFinalList0Entries( refFinalList0Entries_.data() )
88711       , refFinalList1EntryCount( static_cast<uint8_t>( refFinalList1Entries_.size() ) )
88712       , pRefFinalList1Entries( refFinalList1Entries_.data() )
88713     {}
88714 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
88715 #  endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
88716 
88717     VideoEncodeH264NaluSliceEXT & operator=( VideoEncodeH264NaluSliceEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88718 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceEXT88719     VideoEncodeH264NaluSliceEXT & operator=( VkVideoEncodeH264NaluSliceEXT const & rhs ) VULKAN_HPP_NOEXCEPT
88720     {
88721       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceEXT const *>( &rhs );
88722       return *this;
88723     }
88724 
88725 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceEXT88726     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264NaluSliceEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
88727     {
88728       pNext = pNext_;
88729       return *this;
88730     }
88731 
88732     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264NaluSliceEXT &
setPSliceHeaderStdVULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceEXT88733       setPSliceHeaderStd( const StdVideoEncodeH264SliceHeader * pSliceHeaderStd_ ) VULKAN_HPP_NOEXCEPT
88734     {
88735       pSliceHeaderStd = pSliceHeaderStd_;
88736       return *this;
88737     }
88738 
setMbCountVULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceEXT88739     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264NaluSliceEXT & setMbCount( uint32_t mbCount_ ) VULKAN_HPP_NOEXCEPT
88740     {
88741       mbCount = mbCount_;
88742       return *this;
88743     }
88744 
88745     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264NaluSliceEXT &
setRefFinalList0EntryCountVULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceEXT88746                             setRefFinalList0EntryCount( uint8_t refFinalList0EntryCount_ ) VULKAN_HPP_NOEXCEPT
88747     {
88748       refFinalList0EntryCount = refFinalList0EntryCount_;
88749       return *this;
88750     }
88751 
setPRefFinalList0EntriesVULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceEXT88752     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264NaluSliceEXT & setPRefFinalList0Entries(
88753       const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT * pRefFinalList0Entries_ ) VULKAN_HPP_NOEXCEPT
88754     {
88755       pRefFinalList0Entries = pRefFinalList0Entries_;
88756       return *this;
88757     }
88758 
88759 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setRefFinalList0EntriesVULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceEXT88760     VideoEncodeH264NaluSliceEXT & setRefFinalList0Entries(
88761       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT> const &
88762         refFinalList0Entries_ ) VULKAN_HPP_NOEXCEPT
88763     {
88764       refFinalList0EntryCount = static_cast<uint8_t>( refFinalList0Entries_.size() );
88765       pRefFinalList0Entries   = refFinalList0Entries_.data();
88766       return *this;
88767     }
88768 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
88769 
88770     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264NaluSliceEXT &
setRefFinalList1EntryCountVULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceEXT88771                             setRefFinalList1EntryCount( uint8_t refFinalList1EntryCount_ ) VULKAN_HPP_NOEXCEPT
88772     {
88773       refFinalList1EntryCount = refFinalList1EntryCount_;
88774       return *this;
88775     }
88776 
setPRefFinalList1EntriesVULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceEXT88777     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264NaluSliceEXT & setPRefFinalList1Entries(
88778       const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT * pRefFinalList1Entries_ ) VULKAN_HPP_NOEXCEPT
88779     {
88780       pRefFinalList1Entries = pRefFinalList1Entries_;
88781       return *this;
88782     }
88783 
88784 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setRefFinalList1EntriesVULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceEXT88785     VideoEncodeH264NaluSliceEXT & setRefFinalList1Entries(
88786       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT> const &
88787         refFinalList1Entries_ ) VULKAN_HPP_NOEXCEPT
88788     {
88789       refFinalList1EntryCount = static_cast<uint8_t>( refFinalList1Entries_.size() );
88790       pRefFinalList1Entries   = refFinalList1Entries_.data();
88791       return *this;
88792     }
88793 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
88794 #  endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
88795 
operator VkVideoEncodeH264NaluSliceEXT const&VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceEXT88796     explicit operator VkVideoEncodeH264NaluSliceEXT const &() const VULKAN_HPP_NOEXCEPT
88797     {
88798       return *reinterpret_cast<const VkVideoEncodeH264NaluSliceEXT *>( this );
88799     }
88800 
operator VkVideoEncodeH264NaluSliceEXT&VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceEXT88801     explicit operator VkVideoEncodeH264NaluSliceEXT &() VULKAN_HPP_NOEXCEPT
88802     {
88803       return *reinterpret_cast<VkVideoEncodeH264NaluSliceEXT *>( this );
88804     }
88805 
88806 #  if 14 <= VULKAN_HPP_CPP_VERSION
88807     auto
88808 #  else
88809     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
88810                const void * const &,
88811                const StdVideoEncodeH264SliceHeader * const &,
88812                uint32_t const &,
88813                uint8_t const &,
88814                const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT * const &,
88815                uint8_t const &,
88816                const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT * const &>
88817 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceEXT88818       reflect() const VULKAN_HPP_NOEXCEPT
88819     {
88820       return std::tie( sType,
88821                        pNext,
88822                        pSliceHeaderStd,
88823                        mbCount,
88824                        refFinalList0EntryCount,
88825                        pRefFinalList0Entries,
88826                        refFinalList1EntryCount,
88827                        pRefFinalList1Entries );
88828     }
88829 
88830 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
88831     auto operator<=>( VideoEncodeH264NaluSliceEXT const & ) const = default;
88832 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceEXT88833     bool operator==( VideoEncodeH264NaluSliceEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
88834     {
88835       return this->reflect() == rhs.reflect();
88836     }
88837 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceEXT88838     bool operator!=( VideoEncodeH264NaluSliceEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
88839     {
88840       return this->reflect() != rhs.reflect();
88841     }
88842 #  endif
88843 
88844   public:
88845     VULKAN_HPP_NAMESPACE::StructureType                         sType = StructureType::eVideoEncodeH264NaluSliceEXT;
88846     const void *                                                pNext = {};
88847     const StdVideoEncodeH264SliceHeader *                       pSliceHeaderStd         = {};
88848     uint32_t                                                    mbCount                 = {};
88849     uint8_t                                                     refFinalList0EntryCount = {};
88850     const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT * pRefFinalList0Entries   = {};
88851     uint8_t                                                     refFinalList1EntryCount = {};
88852     const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT * pRefFinalList1Entries   = {};
88853   };
88854   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceEXT ) ==
88855                               sizeof( VkVideoEncodeH264NaluSliceEXT ),
88856                             "struct and wrapper have different size!" );
88857   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceEXT>::value,
88858                             "struct wrapper is not a standard layout!" );
88859   VULKAN_HPP_STATIC_ASSERT(
88860     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceEXT>::value,
88861     "VideoEncodeH264NaluSliceEXT is not nothrow_move_constructible!" );
88862 
88863   template <>
88864   struct CppType<StructureType, StructureType::eVideoEncodeH264NaluSliceEXT>
88865   {
88866     using Type = VideoEncodeH264NaluSliceEXT;
88867   };
88868 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
88869 
88870 #if defined( VK_ENABLE_BETA_EXTENSIONS )
88871   struct VideoEncodeH264ProfileEXT
88872   {
88873     using NativeType = VkVideoEncodeH264ProfileEXT;
88874 
88875     static const bool                                  allowDuplicate = false;
88876     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH264ProfileEXT;
88877 
88878 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264ProfileEXTVULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileEXT88879     VULKAN_HPP_CONSTEXPR VideoEncodeH264ProfileEXT( StdVideoH264ProfileIdc stdProfileIdc_ = {} ) VULKAN_HPP_NOEXCEPT
88880       : stdProfileIdc( stdProfileIdc_ )
88881     {}
88882 
88883     VULKAN_HPP_CONSTEXPR
88884       VideoEncodeH264ProfileEXT( VideoEncodeH264ProfileEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88885 
VideoEncodeH264ProfileEXTVULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileEXT88886     VideoEncodeH264ProfileEXT( VkVideoEncodeH264ProfileEXT const & rhs ) VULKAN_HPP_NOEXCEPT
88887       : VideoEncodeH264ProfileEXT( *reinterpret_cast<VideoEncodeH264ProfileEXT const *>( &rhs ) )
88888     {}
88889 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
88890 
88891     VideoEncodeH264ProfileEXT & operator=( VideoEncodeH264ProfileEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88892 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileEXT88893     VideoEncodeH264ProfileEXT & operator=( VkVideoEncodeH264ProfileEXT const & rhs ) VULKAN_HPP_NOEXCEPT
88894     {
88895       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileEXT const *>( &rhs );
88896       return *this;
88897     }
88898 
88899 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileEXT88900     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264ProfileEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
88901     {
88902       pNext = pNext_;
88903       return *this;
88904     }
88905 
88906     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264ProfileEXT &
setStdProfileIdcVULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileEXT88907                             setStdProfileIdc( StdVideoH264ProfileIdc stdProfileIdc_ ) VULKAN_HPP_NOEXCEPT
88908     {
88909       stdProfileIdc = stdProfileIdc_;
88910       return *this;
88911     }
88912 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
88913 
operator VkVideoEncodeH264ProfileEXT const&VULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileEXT88914     explicit operator VkVideoEncodeH264ProfileEXT const &() const VULKAN_HPP_NOEXCEPT
88915     {
88916       return *reinterpret_cast<const VkVideoEncodeH264ProfileEXT *>( this );
88917     }
88918 
operator VkVideoEncodeH264ProfileEXT&VULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileEXT88919     explicit operator VkVideoEncodeH264ProfileEXT &() VULKAN_HPP_NOEXCEPT
88920     {
88921       return *reinterpret_cast<VkVideoEncodeH264ProfileEXT *>( this );
88922     }
88923 
88924 #  if 14 <= VULKAN_HPP_CPP_VERSION
88925     auto
88926 #  else
88927     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, StdVideoH264ProfileIdc const &>
88928 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileEXT88929       reflect() const VULKAN_HPP_NOEXCEPT
88930     {
88931       return std::tie( sType, pNext, stdProfileIdc );
88932     }
88933 
88934 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
88935     auto operator<=>( VideoEncodeH264ProfileEXT const & ) const = default;
88936 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileEXT88937     bool operator==( VideoEncodeH264ProfileEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
88938     {
88939       return this->reflect() == rhs.reflect();
88940     }
88941 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileEXT88942     bool operator!=( VideoEncodeH264ProfileEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
88943     {
88944       return this->reflect() != rhs.reflect();
88945     }
88946 #  endif
88947 
88948   public:
88949     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::eVideoEncodeH264ProfileEXT;
88950     const void *                        pNext         = {};
88951     StdVideoH264ProfileIdc              stdProfileIdc = {};
88952   };
88953   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileEXT ) ==
88954                               sizeof( VkVideoEncodeH264ProfileEXT ),
88955                             "struct and wrapper have different size!" );
88956   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileEXT>::value,
88957                             "struct wrapper is not a standard layout!" );
88958   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileEXT>::value,
88959                             "VideoEncodeH264ProfileEXT is not nothrow_move_constructible!" );
88960 
88961   template <>
88962   struct CppType<StructureType, StructureType::eVideoEncodeH264ProfileEXT>
88963   {
88964     using Type = VideoEncodeH264ProfileEXT;
88965   };
88966 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
88967 
88968 #if defined( VK_ENABLE_BETA_EXTENSIONS )
88969   struct VideoEncodeH264QpEXT
88970   {
88971     using NativeType = VkVideoEncodeH264QpEXT;
88972 
88973 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
88974     VULKAN_HPP_CONSTEXPR
VideoEncodeH264QpEXTVULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT88975       VideoEncodeH264QpEXT( int32_t qpI_ = {}, int32_t qpP_ = {}, int32_t qpB_ = {} ) VULKAN_HPP_NOEXCEPT
88976       : qpI( qpI_ )
88977       , qpP( qpP_ )
88978       , qpB( qpB_ )
88979     {}
88980 
88981     VULKAN_HPP_CONSTEXPR VideoEncodeH264QpEXT( VideoEncodeH264QpEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88982 
VideoEncodeH264QpEXTVULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT88983     VideoEncodeH264QpEXT( VkVideoEncodeH264QpEXT const & rhs ) VULKAN_HPP_NOEXCEPT
88984       : VideoEncodeH264QpEXT( *reinterpret_cast<VideoEncodeH264QpEXT const *>( &rhs ) )
88985     {}
88986 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
88987 
88988     VideoEncodeH264QpEXT & operator=( VideoEncodeH264QpEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88989 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT88990     VideoEncodeH264QpEXT & operator=( VkVideoEncodeH264QpEXT const & rhs ) VULKAN_HPP_NOEXCEPT
88991     {
88992       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT const *>( &rhs );
88993       return *this;
88994     }
88995 
88996 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setQpIVULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT88997     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264QpEXT & setQpI( int32_t qpI_ ) VULKAN_HPP_NOEXCEPT
88998     {
88999       qpI = qpI_;
89000       return *this;
89001     }
89002 
setQpPVULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT89003     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264QpEXT & setQpP( int32_t qpP_ ) VULKAN_HPP_NOEXCEPT
89004     {
89005       qpP = qpP_;
89006       return *this;
89007     }
89008 
setQpBVULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT89009     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264QpEXT & setQpB( int32_t qpB_ ) VULKAN_HPP_NOEXCEPT
89010     {
89011       qpB = qpB_;
89012       return *this;
89013     }
89014 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
89015 
operator VkVideoEncodeH264QpEXT const&VULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT89016     explicit operator VkVideoEncodeH264QpEXT const &() const VULKAN_HPP_NOEXCEPT
89017     {
89018       return *reinterpret_cast<const VkVideoEncodeH264QpEXT *>( this );
89019     }
89020 
operator VkVideoEncodeH264QpEXT&VULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT89021     explicit operator VkVideoEncodeH264QpEXT &() VULKAN_HPP_NOEXCEPT
89022     {
89023       return *reinterpret_cast<VkVideoEncodeH264QpEXT *>( this );
89024     }
89025 
89026 #  if 14 <= VULKAN_HPP_CPP_VERSION
89027     auto
89028 #  else
89029     std::tuple<int32_t const &, int32_t const &, int32_t const &>
89030 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT89031       reflect() const VULKAN_HPP_NOEXCEPT
89032     {
89033       return std::tie( qpI, qpP, qpB );
89034     }
89035 
89036 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
89037     auto operator<=>( VideoEncodeH264QpEXT const & ) const = default;
89038 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT89039     bool operator==( VideoEncodeH264QpEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
89040     {
89041       return this->reflect() == rhs.reflect();
89042     }
89043 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT89044     bool operator!=( VideoEncodeH264QpEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
89045     {
89046       return this->reflect() != rhs.reflect();
89047     }
89048 #  endif
89049 
89050   public:
89051     int32_t qpI = {};
89052     int32_t qpP = {};
89053     int32_t qpB = {};
89054   };
89055   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT ) == sizeof( VkVideoEncodeH264QpEXT ),
89056                             "struct and wrapper have different size!" );
89057   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT>::value,
89058                             "struct wrapper is not a standard layout!" );
89059   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT>::value,
89060                             "VideoEncodeH264QpEXT is not nothrow_move_constructible!" );
89061 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
89062 
89063 #if defined( VK_ENABLE_BETA_EXTENSIONS )
89064   struct VideoEncodeH264RateControlInfoEXT
89065   {
89066     using NativeType = VkVideoEncodeH264RateControlInfoEXT;
89067 
89068     static const bool                                  allowDuplicate = false;
89069     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
89070       StructureType::eVideoEncodeH264RateControlInfoEXT;
89071 
89072 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264RateControlInfoEXTVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoEXT89073     VULKAN_HPP_CONSTEXPR VideoEncodeH264RateControlInfoEXT(
89074       uint32_t                                                             gopFrameCount_          = {},
89075       uint32_t                                                             idrPeriod_              = {},
89076       uint32_t                                                             consecutiveBFrameCount_ = {},
89077       VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlStructureFlagBitsEXT rateControlStructure_ =
89078         VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlStructureFlagBitsEXT::eUnknown,
89079       uint8_t temporalLayerCount_ = {} ) VULKAN_HPP_NOEXCEPT
89080       : gopFrameCount( gopFrameCount_ )
89081       , idrPeriod( idrPeriod_ )
89082       , consecutiveBFrameCount( consecutiveBFrameCount_ )
89083       , rateControlStructure( rateControlStructure_ )
89084       , temporalLayerCount( temporalLayerCount_ )
89085     {}
89086 
89087     VULKAN_HPP_CONSTEXPR
89088       VideoEncodeH264RateControlInfoEXT( VideoEncodeH264RateControlInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
89089 
VideoEncodeH264RateControlInfoEXTVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoEXT89090     VideoEncodeH264RateControlInfoEXT( VkVideoEncodeH264RateControlInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
89091       : VideoEncodeH264RateControlInfoEXT( *reinterpret_cast<VideoEncodeH264RateControlInfoEXT const *>( &rhs ) )
89092     {}
89093 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
89094 
89095     VideoEncodeH264RateControlInfoEXT &
89096       operator=( VideoEncodeH264RateControlInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
89097 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoEXT89098     VideoEncodeH264RateControlInfoEXT & operator=( VkVideoEncodeH264RateControlInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
89099     {
89100       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoEXT const *>( &rhs );
89101       return *this;
89102     }
89103 
89104 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoEXT89105     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
89106     {
89107       pNext = pNext_;
89108       return *this;
89109     }
89110 
89111     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlInfoEXT &
setGopFrameCountVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoEXT89112                             setGopFrameCount( uint32_t gopFrameCount_ ) VULKAN_HPP_NOEXCEPT
89113     {
89114       gopFrameCount = gopFrameCount_;
89115       return *this;
89116     }
89117 
setIdrPeriodVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoEXT89118     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlInfoEXT & setIdrPeriod( uint32_t idrPeriod_ ) VULKAN_HPP_NOEXCEPT
89119     {
89120       idrPeriod = idrPeriod_;
89121       return *this;
89122     }
89123 
89124     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlInfoEXT &
setConsecutiveBFrameCountVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoEXT89125                             setConsecutiveBFrameCount( uint32_t consecutiveBFrameCount_ ) VULKAN_HPP_NOEXCEPT
89126     {
89127       consecutiveBFrameCount = consecutiveBFrameCount_;
89128       return *this;
89129     }
89130 
setRateControlStructureVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoEXT89131     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlInfoEXT & setRateControlStructure(
89132       VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlStructureFlagBitsEXT rateControlStructure_ ) VULKAN_HPP_NOEXCEPT
89133     {
89134       rateControlStructure = rateControlStructure_;
89135       return *this;
89136     }
89137 
89138     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlInfoEXT &
setTemporalLayerCountVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoEXT89139                             setTemporalLayerCount( uint8_t temporalLayerCount_ ) VULKAN_HPP_NOEXCEPT
89140     {
89141       temporalLayerCount = temporalLayerCount_;
89142       return *this;
89143     }
89144 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
89145 
operator VkVideoEncodeH264RateControlInfoEXT const&VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoEXT89146     explicit operator VkVideoEncodeH264RateControlInfoEXT const &() const VULKAN_HPP_NOEXCEPT
89147     {
89148       return *reinterpret_cast<const VkVideoEncodeH264RateControlInfoEXT *>( this );
89149     }
89150 
operator VkVideoEncodeH264RateControlInfoEXT&VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoEXT89151     explicit operator VkVideoEncodeH264RateControlInfoEXT &() VULKAN_HPP_NOEXCEPT
89152     {
89153       return *reinterpret_cast<VkVideoEncodeH264RateControlInfoEXT *>( this );
89154     }
89155 
89156 #  if 14 <= VULKAN_HPP_CPP_VERSION
89157     auto
89158 #  else
89159     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
89160                const void * const &,
89161                uint32_t const &,
89162                uint32_t const &,
89163                uint32_t const &,
89164                VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlStructureFlagBitsEXT const &,
89165                uint8_t const &>
89166 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoEXT89167       reflect() const VULKAN_HPP_NOEXCEPT
89168     {
89169       return std::tie(
89170         sType, pNext, gopFrameCount, idrPeriod, consecutiveBFrameCount, rateControlStructure, temporalLayerCount );
89171     }
89172 
89173 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
89174     auto operator<=>( VideoEncodeH264RateControlInfoEXT const & ) const = default;
89175 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoEXT89176     bool operator==( VideoEncodeH264RateControlInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
89177     {
89178       return this->reflect() == rhs.reflect();
89179     }
89180 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoEXT89181     bool operator!=( VideoEncodeH264RateControlInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
89182     {
89183       return this->reflect() != rhs.reflect();
89184     }
89185 #  endif
89186 
89187   public:
89188     VULKAN_HPP_NAMESPACE::StructureType sType                  = StructureType::eVideoEncodeH264RateControlInfoEXT;
89189     const void *                        pNext                  = {};
89190     uint32_t                            gopFrameCount          = {};
89191     uint32_t                            idrPeriod              = {};
89192     uint32_t                            consecutiveBFrameCount = {};
89193     VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlStructureFlagBitsEXT rateControlStructure =
89194       VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlStructureFlagBitsEXT::eUnknown;
89195     uint8_t temporalLayerCount = {};
89196   };
89197   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoEXT ) ==
89198                               sizeof( VkVideoEncodeH264RateControlInfoEXT ),
89199                             "struct and wrapper have different size!" );
89200   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoEXT>::value,
89201                             "struct wrapper is not a standard layout!" );
89202   VULKAN_HPP_STATIC_ASSERT(
89203     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoEXT>::value,
89204     "VideoEncodeH264RateControlInfoEXT is not nothrow_move_constructible!" );
89205 
89206   template <>
89207   struct CppType<StructureType, StructureType::eVideoEncodeH264RateControlInfoEXT>
89208   {
89209     using Type = VideoEncodeH264RateControlInfoEXT;
89210   };
89211 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
89212 
89213 #if defined( VK_ENABLE_BETA_EXTENSIONS )
89214   struct VideoEncodeH264RateControlLayerInfoEXT
89215   {
89216     using NativeType = VkVideoEncodeH264RateControlLayerInfoEXT;
89217 
89218     static const bool                                  allowDuplicate = false;
89219     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
89220       StructureType::eVideoEncodeH264RateControlLayerInfoEXT;
89221 
89222 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264RateControlLayerInfoEXTVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoEXT89223     VULKAN_HPP_CONSTEXPR VideoEncodeH264RateControlLayerInfoEXT(
89224       uint8_t                                           temporalLayerId_ = {},
89225       VULKAN_HPP_NAMESPACE::Bool32                      useInitialRcQp_  = {},
89226       VULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT        initialRcQp_     = {},
89227       VULKAN_HPP_NAMESPACE::Bool32                      useMinQp_        = {},
89228       VULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT        minQp_           = {},
89229       VULKAN_HPP_NAMESPACE::Bool32                      useMaxQp_        = {},
89230       VULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT        maxQp_           = {},
89231       VULKAN_HPP_NAMESPACE::Bool32                      useMaxFrameSize_ = {},
89232       VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeEXT maxFrameSize_    = {} ) VULKAN_HPP_NOEXCEPT
89233       : temporalLayerId( temporalLayerId_ )
89234       , useInitialRcQp( useInitialRcQp_ )
89235       , initialRcQp( initialRcQp_ )
89236       , useMinQp( useMinQp_ )
89237       , minQp( minQp_ )
89238       , useMaxQp( useMaxQp_ )
89239       , maxQp( maxQp_ )
89240       , useMaxFrameSize( useMaxFrameSize_ )
89241       , maxFrameSize( maxFrameSize_ )
89242     {}
89243 
89244     VULKAN_HPP_CONSTEXPR VideoEncodeH264RateControlLayerInfoEXT( VideoEncodeH264RateControlLayerInfoEXT const & rhs )
89245       VULKAN_HPP_NOEXCEPT = default;
89246 
VideoEncodeH264RateControlLayerInfoEXTVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoEXT89247     VideoEncodeH264RateControlLayerInfoEXT( VkVideoEncodeH264RateControlLayerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
89248       : VideoEncodeH264RateControlLayerInfoEXT(
89249           *reinterpret_cast<VideoEncodeH264RateControlLayerInfoEXT const *>( &rhs ) )
89250     {}
89251 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
89252 
89253     VideoEncodeH264RateControlLayerInfoEXT &
89254       operator=( VideoEncodeH264RateControlLayerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
89255 
89256     VideoEncodeH264RateControlLayerInfoEXT &
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoEXT89257       operator=( VkVideoEncodeH264RateControlLayerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
89258     {
89259       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoEXT const *>( &rhs );
89260       return *this;
89261     }
89262 
89263 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoEXT89264     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
89265     {
89266       pNext = pNext_;
89267       return *this;
89268     }
89269 
89270     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoEXT &
setTemporalLayerIdVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoEXT89271                             setTemporalLayerId( uint8_t temporalLayerId_ ) VULKAN_HPP_NOEXCEPT
89272     {
89273       temporalLayerId = temporalLayerId_;
89274       return *this;
89275     }
89276 
89277     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoEXT &
setUseInitialRcQpVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoEXT89278                             setUseInitialRcQp( VULKAN_HPP_NAMESPACE::Bool32 useInitialRcQp_ ) VULKAN_HPP_NOEXCEPT
89279     {
89280       useInitialRcQp = useInitialRcQp_;
89281       return *this;
89282     }
89283 
89284     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoEXT &
setInitialRcQpVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoEXT89285       setInitialRcQp( VULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT const & initialRcQp_ ) VULKAN_HPP_NOEXCEPT
89286     {
89287       initialRcQp = initialRcQp_;
89288       return *this;
89289     }
89290 
89291     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoEXT &
setUseMinQpVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoEXT89292                             setUseMinQp( VULKAN_HPP_NAMESPACE::Bool32 useMinQp_ ) VULKAN_HPP_NOEXCEPT
89293     {
89294       useMinQp = useMinQp_;
89295       return *this;
89296     }
89297 
89298     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoEXT &
setMinQpVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoEXT89299                             setMinQp( VULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT const & minQp_ ) VULKAN_HPP_NOEXCEPT
89300     {
89301       minQp = minQp_;
89302       return *this;
89303     }
89304 
89305     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoEXT &
setUseMaxQpVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoEXT89306                             setUseMaxQp( VULKAN_HPP_NAMESPACE::Bool32 useMaxQp_ ) VULKAN_HPP_NOEXCEPT
89307     {
89308       useMaxQp = useMaxQp_;
89309       return *this;
89310     }
89311 
89312     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoEXT &
setMaxQpVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoEXT89313                             setMaxQp( VULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT const & maxQp_ ) VULKAN_HPP_NOEXCEPT
89314     {
89315       maxQp = maxQp_;
89316       return *this;
89317     }
89318 
89319     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoEXT &
setUseMaxFrameSizeVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoEXT89320                             setUseMaxFrameSize( VULKAN_HPP_NAMESPACE::Bool32 useMaxFrameSize_ ) VULKAN_HPP_NOEXCEPT
89321     {
89322       useMaxFrameSize = useMaxFrameSize_;
89323       return *this;
89324     }
89325 
89326     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoEXT &
setMaxFrameSizeVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoEXT89327       setMaxFrameSize( VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeEXT const & maxFrameSize_ ) VULKAN_HPP_NOEXCEPT
89328     {
89329       maxFrameSize = maxFrameSize_;
89330       return *this;
89331     }
89332 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
89333 
operator VkVideoEncodeH264RateControlLayerInfoEXT const&VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoEXT89334     explicit operator VkVideoEncodeH264RateControlLayerInfoEXT const &() const VULKAN_HPP_NOEXCEPT
89335     {
89336       return *reinterpret_cast<const VkVideoEncodeH264RateControlLayerInfoEXT *>( this );
89337     }
89338 
operator VkVideoEncodeH264RateControlLayerInfoEXT&VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoEXT89339     explicit operator VkVideoEncodeH264RateControlLayerInfoEXT &() VULKAN_HPP_NOEXCEPT
89340     {
89341       return *reinterpret_cast<VkVideoEncodeH264RateControlLayerInfoEXT *>( this );
89342     }
89343 
89344 #  if 14 <= VULKAN_HPP_CPP_VERSION
89345     auto
89346 #  else
89347     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
89348                const void * const &,
89349                uint8_t const &,
89350                VULKAN_HPP_NAMESPACE::Bool32 const &,
89351                VULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT const &,
89352                VULKAN_HPP_NAMESPACE::Bool32 const &,
89353                VULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT const &,
89354                VULKAN_HPP_NAMESPACE::Bool32 const &,
89355                VULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT const &,
89356                VULKAN_HPP_NAMESPACE::Bool32 const &,
89357                VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeEXT const &>
89358 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoEXT89359       reflect() const VULKAN_HPP_NOEXCEPT
89360     {
89361       return std::tie( sType,
89362                        pNext,
89363                        temporalLayerId,
89364                        useInitialRcQp,
89365                        initialRcQp,
89366                        useMinQp,
89367                        minQp,
89368                        useMaxQp,
89369                        maxQp,
89370                        useMaxFrameSize,
89371                        maxFrameSize );
89372     }
89373 
89374 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
89375     auto operator<=>( VideoEncodeH264RateControlLayerInfoEXT const & ) const = default;
89376 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoEXT89377     bool operator==( VideoEncodeH264RateControlLayerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
89378     {
89379       return this->reflect() == rhs.reflect();
89380     }
89381 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoEXT89382     bool operator!=( VideoEncodeH264RateControlLayerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
89383     {
89384       return this->reflect() != rhs.reflect();
89385     }
89386 #  endif
89387 
89388   public:
89389     VULKAN_HPP_NAMESPACE::StructureType               sType = StructureType::eVideoEncodeH264RateControlLayerInfoEXT;
89390     const void *                                      pNext = {};
89391     uint8_t                                           temporalLayerId = {};
89392     VULKAN_HPP_NAMESPACE::Bool32                      useInitialRcQp  = {};
89393     VULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT        initialRcQp     = {};
89394     VULKAN_HPP_NAMESPACE::Bool32                      useMinQp        = {};
89395     VULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT        minQp           = {};
89396     VULKAN_HPP_NAMESPACE::Bool32                      useMaxQp        = {};
89397     VULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT        maxQp           = {};
89398     VULKAN_HPP_NAMESPACE::Bool32                      useMaxFrameSize = {};
89399     VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeEXT maxFrameSize    = {};
89400   };
89401   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoEXT ) ==
89402                               sizeof( VkVideoEncodeH264RateControlLayerInfoEXT ),
89403                             "struct and wrapper have different size!" );
89404   VULKAN_HPP_STATIC_ASSERT(
89405     std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoEXT>::value,
89406     "struct wrapper is not a standard layout!" );
89407   VULKAN_HPP_STATIC_ASSERT(
89408     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoEXT>::value,
89409     "VideoEncodeH264RateControlLayerInfoEXT is not nothrow_move_constructible!" );
89410 
89411   template <>
89412   struct CppType<StructureType, StructureType::eVideoEncodeH264RateControlLayerInfoEXT>
89413   {
89414     using Type = VideoEncodeH264RateControlLayerInfoEXT;
89415   };
89416 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
89417 
89418 #if defined( VK_ENABLE_BETA_EXTENSIONS )
89419   struct VideoEncodeH264SessionCreateInfoEXT
89420   {
89421     using NativeType = VkVideoEncodeH264SessionCreateInfoEXT;
89422 
89423     static const bool                                  allowDuplicate = false;
89424     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
89425       StructureType::eVideoEncodeH264SessionCreateInfoEXT;
89426 
89427 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264SessionCreateInfoEXTVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoEXT89428     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionCreateInfoEXT(
89429       VULKAN_HPP_NAMESPACE::VideoEncodeH264CreateFlagsEXT flags_                = {},
89430       VULKAN_HPP_NAMESPACE::Extent2D                      maxPictureSizeInMbs_  = {},
89431       const VULKAN_HPP_NAMESPACE::ExtensionProperties *   pStdExtensionVersion_ = {} ) VULKAN_HPP_NOEXCEPT
89432       : flags( flags_ )
89433       , maxPictureSizeInMbs( maxPictureSizeInMbs_ )
89434       , pStdExtensionVersion( pStdExtensionVersion_ )
89435     {}
89436 
89437     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionCreateInfoEXT( VideoEncodeH264SessionCreateInfoEXT const & rhs )
89438       VULKAN_HPP_NOEXCEPT = default;
89439 
VideoEncodeH264SessionCreateInfoEXTVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoEXT89440     VideoEncodeH264SessionCreateInfoEXT( VkVideoEncodeH264SessionCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
89441       : VideoEncodeH264SessionCreateInfoEXT( *reinterpret_cast<VideoEncodeH264SessionCreateInfoEXT const *>( &rhs ) )
89442     {}
89443 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
89444 
89445     VideoEncodeH264SessionCreateInfoEXT &
89446       operator=( VideoEncodeH264SessionCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
89447 
89448     VideoEncodeH264SessionCreateInfoEXT &
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoEXT89449       operator=( VkVideoEncodeH264SessionCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
89450     {
89451       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoEXT const *>( &rhs );
89452       return *this;
89453     }
89454 
89455 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoEXT89456     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
89457     {
89458       pNext = pNext_;
89459       return *this;
89460     }
89461 
89462     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionCreateInfoEXT &
setFlagsVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoEXT89463                             setFlags( VULKAN_HPP_NAMESPACE::VideoEncodeH264CreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
89464     {
89465       flags = flags_;
89466       return *this;
89467     }
89468 
89469     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionCreateInfoEXT &
setMaxPictureSizeInMbsVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoEXT89470       setMaxPictureSizeInMbs( VULKAN_HPP_NAMESPACE::Extent2D const & maxPictureSizeInMbs_ ) VULKAN_HPP_NOEXCEPT
89471     {
89472       maxPictureSizeInMbs = maxPictureSizeInMbs_;
89473       return *this;
89474     }
89475 
setPStdExtensionVersionVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoEXT89476     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionCreateInfoEXT & setPStdExtensionVersion(
89477       const VULKAN_HPP_NAMESPACE::ExtensionProperties * pStdExtensionVersion_ ) VULKAN_HPP_NOEXCEPT
89478     {
89479       pStdExtensionVersion = pStdExtensionVersion_;
89480       return *this;
89481     }
89482 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
89483 
operator VkVideoEncodeH264SessionCreateInfoEXT const&VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoEXT89484     explicit operator VkVideoEncodeH264SessionCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
89485     {
89486       return *reinterpret_cast<const VkVideoEncodeH264SessionCreateInfoEXT *>( this );
89487     }
89488 
operator VkVideoEncodeH264SessionCreateInfoEXT&VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoEXT89489     explicit operator VkVideoEncodeH264SessionCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
89490     {
89491       return *reinterpret_cast<VkVideoEncodeH264SessionCreateInfoEXT *>( this );
89492     }
89493 
89494 #  if 14 <= VULKAN_HPP_CPP_VERSION
89495     auto
89496 #  else
89497     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
89498                const void * const &,
89499                VULKAN_HPP_NAMESPACE::VideoEncodeH264CreateFlagsEXT const &,
89500                VULKAN_HPP_NAMESPACE::Extent2D const &,
89501                const VULKAN_HPP_NAMESPACE::ExtensionProperties * const &>
89502 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoEXT89503       reflect() const VULKAN_HPP_NOEXCEPT
89504     {
89505       return std::tie( sType, pNext, flags, maxPictureSizeInMbs, pStdExtensionVersion );
89506     }
89507 
89508 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
89509     auto operator<=>( VideoEncodeH264SessionCreateInfoEXT const & ) const = default;
89510 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoEXT89511     bool operator==( VideoEncodeH264SessionCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
89512     {
89513       return this->reflect() == rhs.reflect();
89514     }
89515 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoEXT89516     bool operator!=( VideoEncodeH264SessionCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
89517     {
89518       return this->reflect() != rhs.reflect();
89519     }
89520 #  endif
89521 
89522   public:
89523     VULKAN_HPP_NAMESPACE::StructureType                 sType = StructureType::eVideoEncodeH264SessionCreateInfoEXT;
89524     const void *                                        pNext = {};
89525     VULKAN_HPP_NAMESPACE::VideoEncodeH264CreateFlagsEXT flags = {};
89526     VULKAN_HPP_NAMESPACE::Extent2D                      maxPictureSizeInMbs  = {};
89527     const VULKAN_HPP_NAMESPACE::ExtensionProperties *   pStdExtensionVersion = {};
89528   };
89529   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoEXT ) ==
89530                               sizeof( VkVideoEncodeH264SessionCreateInfoEXT ),
89531                             "struct and wrapper have different size!" );
89532   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoEXT>::value,
89533                             "struct wrapper is not a standard layout!" );
89534   VULKAN_HPP_STATIC_ASSERT(
89535     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoEXT>::value,
89536     "VideoEncodeH264SessionCreateInfoEXT is not nothrow_move_constructible!" );
89537 
89538   template <>
89539   struct CppType<StructureType, StructureType::eVideoEncodeH264SessionCreateInfoEXT>
89540   {
89541     using Type = VideoEncodeH264SessionCreateInfoEXT;
89542   };
89543 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
89544 
89545 #if defined( VK_ENABLE_BETA_EXTENSIONS )
89546   struct VideoEncodeH264SessionParametersAddInfoEXT
89547   {
89548     using NativeType = VkVideoEncodeH264SessionParametersAddInfoEXT;
89549 
89550     static const bool                                  allowDuplicate = false;
89551     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
89552       StructureType::eVideoEncodeH264SessionParametersAddInfoEXT;
89553 
89554 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264SessionParametersAddInfoEXTVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoEXT89555     VULKAN_HPP_CONSTEXPR VideoEncodeH264SessionParametersAddInfoEXT(
89556       uint32_t                                 spsStdCount_ = {},
89557       const StdVideoH264SequenceParameterSet * pSpsStd_     = {},
89558       uint32_t                                 ppsStdCount_ = {},
89559       const StdVideoH264PictureParameterSet *  pPpsStd_     = {} ) VULKAN_HPP_NOEXCEPT
89560       : spsStdCount( spsStdCount_ )
89561       , pSpsStd( pSpsStd_ )
89562       , ppsStdCount( ppsStdCount_ )
89563       , pPpsStd( pPpsStd_ )
89564     {}
89565 
89566     VULKAN_HPP_CONSTEXPR VideoEncodeH264SessionParametersAddInfoEXT(
89567       VideoEncodeH264SessionParametersAddInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
89568 
VideoEncodeH264SessionParametersAddInfoEXTVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoEXT89569     VideoEncodeH264SessionParametersAddInfoEXT( VkVideoEncodeH264SessionParametersAddInfoEXT const & rhs )
89570       VULKAN_HPP_NOEXCEPT
89571       : VideoEncodeH264SessionParametersAddInfoEXT(
89572           *reinterpret_cast<VideoEncodeH264SessionParametersAddInfoEXT const *>( &rhs ) )
89573     {}
89574 
89575 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoEncodeH264SessionParametersAddInfoEXTVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoEXT89576     VideoEncodeH264SessionParametersAddInfoEXT(
89577       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH264SequenceParameterSet> const & spsStd_,
89578       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH264PictureParameterSet> const &  ppsStd_ = {} )
89579       : spsStdCount( static_cast<uint32_t>( spsStd_.size() ) )
89580       , pSpsStd( spsStd_.data() )
89581       , ppsStdCount( static_cast<uint32_t>( ppsStd_.size() ) )
89582       , pPpsStd( ppsStd_.data() )
89583     {}
89584 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
89585 #  endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
89586 
89587     VideoEncodeH264SessionParametersAddInfoEXT &
89588       operator=( VideoEncodeH264SessionParametersAddInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
89589 
89590     VideoEncodeH264SessionParametersAddInfoEXT &
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoEXT89591       operator=( VkVideoEncodeH264SessionParametersAddInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
89592     {
89593       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoEXT const *>( &rhs );
89594       return *this;
89595     }
89596 
89597 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
89598     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersAddInfoEXT &
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoEXT89599                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
89600     {
89601       pNext = pNext_;
89602       return *this;
89603     }
89604 
89605     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersAddInfoEXT &
setSpsStdCountVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoEXT89606                             setSpsStdCount( uint32_t spsStdCount_ ) VULKAN_HPP_NOEXCEPT
89607     {
89608       spsStdCount = spsStdCount_;
89609       return *this;
89610     }
89611 
89612     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersAddInfoEXT &
setPSpsStdVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoEXT89613                             setPSpsStd( const StdVideoH264SequenceParameterSet * pSpsStd_ ) VULKAN_HPP_NOEXCEPT
89614     {
89615       pSpsStd = pSpsStd_;
89616       return *this;
89617     }
89618 
89619 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
89620     VideoEncodeH264SessionParametersAddInfoEXT &
setSpsStdVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoEXT89621       setSpsStd( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH264SequenceParameterSet> const & spsStd_ )
89622         VULKAN_HPP_NOEXCEPT
89623     {
89624       spsStdCount = static_cast<uint32_t>( spsStd_.size() );
89625       pSpsStd     = spsStd_.data();
89626       return *this;
89627     }
89628 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
89629 
89630     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersAddInfoEXT &
setPpsStdCountVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoEXT89631                             setPpsStdCount( uint32_t ppsStdCount_ ) VULKAN_HPP_NOEXCEPT
89632     {
89633       ppsStdCount = ppsStdCount_;
89634       return *this;
89635     }
89636 
89637     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersAddInfoEXT &
setPPpsStdVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoEXT89638                             setPPpsStd( const StdVideoH264PictureParameterSet * pPpsStd_ ) VULKAN_HPP_NOEXCEPT
89639     {
89640       pPpsStd = pPpsStd_;
89641       return *this;
89642     }
89643 
89644 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
89645     VideoEncodeH264SessionParametersAddInfoEXT &
setPpsStdVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoEXT89646       setPpsStd( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH264PictureParameterSet> const & ppsStd_ )
89647         VULKAN_HPP_NOEXCEPT
89648     {
89649       ppsStdCount = static_cast<uint32_t>( ppsStd_.size() );
89650       pPpsStd     = ppsStd_.data();
89651       return *this;
89652     }
89653 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
89654 #  endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
89655 
operator VkVideoEncodeH264SessionParametersAddInfoEXT const&VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoEXT89656     explicit operator VkVideoEncodeH264SessionParametersAddInfoEXT const &() const VULKAN_HPP_NOEXCEPT
89657     {
89658       return *reinterpret_cast<const VkVideoEncodeH264SessionParametersAddInfoEXT *>( this );
89659     }
89660 
operator VkVideoEncodeH264SessionParametersAddInfoEXT&VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoEXT89661     explicit operator VkVideoEncodeH264SessionParametersAddInfoEXT &() VULKAN_HPP_NOEXCEPT
89662     {
89663       return *reinterpret_cast<VkVideoEncodeH264SessionParametersAddInfoEXT *>( this );
89664     }
89665 
89666 #  if 14 <= VULKAN_HPP_CPP_VERSION
89667     auto
89668 #  else
89669     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
89670                const void * const &,
89671                uint32_t const &,
89672                const StdVideoH264SequenceParameterSet * const &,
89673                uint32_t const &,
89674                const StdVideoH264PictureParameterSet * const &>
89675 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoEXT89676       reflect() const VULKAN_HPP_NOEXCEPT
89677     {
89678       return std::tie( sType, pNext, spsStdCount, pSpsStd, ppsStdCount, pPpsStd );
89679     }
89680 
89681 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
89682     auto operator<=>( VideoEncodeH264SessionParametersAddInfoEXT const & ) const = default;
89683 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoEXT89684     bool operator==( VideoEncodeH264SessionParametersAddInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
89685     {
89686       return this->reflect() == rhs.reflect();
89687     }
89688 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoEXT89689     bool operator!=( VideoEncodeH264SessionParametersAddInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
89690     {
89691       return this->reflect() != rhs.reflect();
89692     }
89693 #  endif
89694 
89695   public:
89696     VULKAN_HPP_NAMESPACE::StructureType      sType       = StructureType::eVideoEncodeH264SessionParametersAddInfoEXT;
89697     const void *                             pNext       = {};
89698     uint32_t                                 spsStdCount = {};
89699     const StdVideoH264SequenceParameterSet * pSpsStd     = {};
89700     uint32_t                                 ppsStdCount = {};
89701     const StdVideoH264PictureParameterSet *  pPpsStd     = {};
89702   };
89703   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoEXT ) ==
89704                               sizeof( VkVideoEncodeH264SessionParametersAddInfoEXT ),
89705                             "struct and wrapper have different size!" );
89706   VULKAN_HPP_STATIC_ASSERT(
89707     std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoEXT>::value,
89708     "struct wrapper is not a standard layout!" );
89709   VULKAN_HPP_STATIC_ASSERT(
89710     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoEXT>::value,
89711     "VideoEncodeH264SessionParametersAddInfoEXT is not nothrow_move_constructible!" );
89712 
89713   template <>
89714   struct CppType<StructureType, StructureType::eVideoEncodeH264SessionParametersAddInfoEXT>
89715   {
89716     using Type = VideoEncodeH264SessionParametersAddInfoEXT;
89717   };
89718 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
89719 
89720 #if defined( VK_ENABLE_BETA_EXTENSIONS )
89721   struct VideoEncodeH264SessionParametersCreateInfoEXT
89722   {
89723     using NativeType = VkVideoEncodeH264SessionParametersCreateInfoEXT;
89724 
89725     static const bool                                  allowDuplicate = false;
89726     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
89727       StructureType::eVideoEncodeH264SessionParametersCreateInfoEXT;
89728 
89729 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264SessionParametersCreateInfoEXTVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoEXT89730     VULKAN_HPP_CONSTEXPR VideoEncodeH264SessionParametersCreateInfoEXT(
89731       uint32_t                                                                 maxSpsStdCount_     = {},
89732       uint32_t                                                                 maxPpsStdCount_     = {},
89733       const VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoEXT * pParametersAddInfo_ = {} )
89734       VULKAN_HPP_NOEXCEPT
89735       : maxSpsStdCount( maxSpsStdCount_ )
89736       , maxPpsStdCount( maxPpsStdCount_ )
89737       , pParametersAddInfo( pParametersAddInfo_ )
89738     {}
89739 
89740     VULKAN_HPP_CONSTEXPR VideoEncodeH264SessionParametersCreateInfoEXT(
89741       VideoEncodeH264SessionParametersCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
89742 
VideoEncodeH264SessionParametersCreateInfoEXTVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoEXT89743     VideoEncodeH264SessionParametersCreateInfoEXT( VkVideoEncodeH264SessionParametersCreateInfoEXT const & rhs )
89744       VULKAN_HPP_NOEXCEPT
89745       : VideoEncodeH264SessionParametersCreateInfoEXT(
89746           *reinterpret_cast<VideoEncodeH264SessionParametersCreateInfoEXT const *>( &rhs ) )
89747     {}
89748 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
89749 
89750     VideoEncodeH264SessionParametersCreateInfoEXT &
89751       operator=( VideoEncodeH264SessionParametersCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
89752 
89753     VideoEncodeH264SessionParametersCreateInfoEXT &
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoEXT89754       operator=( VkVideoEncodeH264SessionParametersCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
89755     {
89756       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoEXT const *>( &rhs );
89757       return *this;
89758     }
89759 
89760 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
89761     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersCreateInfoEXT &
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoEXT89762                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
89763     {
89764       pNext = pNext_;
89765       return *this;
89766     }
89767 
89768     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersCreateInfoEXT &
setMaxSpsStdCountVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoEXT89769                             setMaxSpsStdCount( uint32_t maxSpsStdCount_ ) VULKAN_HPP_NOEXCEPT
89770     {
89771       maxSpsStdCount = maxSpsStdCount_;
89772       return *this;
89773     }
89774 
89775     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersCreateInfoEXT &
setMaxPpsStdCountVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoEXT89776                             setMaxPpsStdCount( uint32_t maxPpsStdCount_ ) VULKAN_HPP_NOEXCEPT
89777     {
89778       maxPpsStdCount = maxPpsStdCount_;
89779       return *this;
89780     }
89781 
setPParametersAddInfoVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoEXT89782     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersCreateInfoEXT & setPParametersAddInfo(
89783       const VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoEXT * pParametersAddInfo_ ) VULKAN_HPP_NOEXCEPT
89784     {
89785       pParametersAddInfo = pParametersAddInfo_;
89786       return *this;
89787     }
89788 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
89789 
operator VkVideoEncodeH264SessionParametersCreateInfoEXT const&VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoEXT89790     explicit operator VkVideoEncodeH264SessionParametersCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
89791     {
89792       return *reinterpret_cast<const VkVideoEncodeH264SessionParametersCreateInfoEXT *>( this );
89793     }
89794 
operator VkVideoEncodeH264SessionParametersCreateInfoEXT&VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoEXT89795     explicit operator VkVideoEncodeH264SessionParametersCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
89796     {
89797       return *reinterpret_cast<VkVideoEncodeH264SessionParametersCreateInfoEXT *>( this );
89798     }
89799 
89800 #  if 14 <= VULKAN_HPP_CPP_VERSION
89801     auto
89802 #  else
89803     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
89804                const void * const &,
89805                uint32_t const &,
89806                uint32_t const &,
89807                const VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoEXT * const &>
89808 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoEXT89809       reflect() const VULKAN_HPP_NOEXCEPT
89810     {
89811       return std::tie( sType, pNext, maxSpsStdCount, maxPpsStdCount, pParametersAddInfo );
89812     }
89813 
89814 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
89815     auto operator<=>( VideoEncodeH264SessionParametersCreateInfoEXT const & ) const = default;
89816 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoEXT89817     bool operator==( VideoEncodeH264SessionParametersCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
89818     {
89819       return this->reflect() == rhs.reflect();
89820     }
89821 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoEXT89822     bool operator!=( VideoEncodeH264SessionParametersCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
89823     {
89824       return this->reflect() != rhs.reflect();
89825     }
89826 #  endif
89827 
89828   public:
89829     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eVideoEncodeH264SessionParametersCreateInfoEXT;
89830     const void *                        pNext          = {};
89831     uint32_t                            maxSpsStdCount = {};
89832     uint32_t                            maxPpsStdCount = {};
89833     const VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoEXT * pParametersAddInfo = {};
89834   };
89835   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoEXT ) ==
89836                               sizeof( VkVideoEncodeH264SessionParametersCreateInfoEXT ),
89837                             "struct and wrapper have different size!" );
89838   VULKAN_HPP_STATIC_ASSERT(
89839     std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoEXT>::value,
89840     "struct wrapper is not a standard layout!" );
89841   VULKAN_HPP_STATIC_ASSERT(
89842     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoEXT>::value,
89843     "VideoEncodeH264SessionParametersCreateInfoEXT is not nothrow_move_constructible!" );
89844 
89845   template <>
89846   struct CppType<StructureType, StructureType::eVideoEncodeH264SessionParametersCreateInfoEXT>
89847   {
89848     using Type = VideoEncodeH264SessionParametersCreateInfoEXT;
89849   };
89850 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
89851 
89852 #if defined( VK_ENABLE_BETA_EXTENSIONS )
89853   struct VideoEncodeH264VclFrameInfoEXT
89854   {
89855     using NativeType = VkVideoEncodeH264VclFrameInfoEXT;
89856 
89857     static const bool                                  allowDuplicate = false;
89858     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH264VclFrameInfoEXT;
89859 
89860 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264VclFrameInfoEXTVULKAN_HPP_NAMESPACE::VideoEncodeH264VclFrameInfoEXT89861     VULKAN_HPP_CONSTEXPR VideoEncodeH264VclFrameInfoEXT(
89862       uint8_t                                                     refDefaultFinalList0EntryCount_ = {},
89863       const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT * pRefDefaultFinalList0Entries_   = {},
89864       uint8_t                                                     refDefaultFinalList1EntryCount_ = {},
89865       const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT * pRefDefaultFinalList1Entries_   = {},
89866       uint32_t                                                    naluSliceEntryCount_            = {},
89867       const VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceEXT *   pNaluSliceEntries_              = {},
89868       const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT * pCurrentPictureInfo_ = {} ) VULKAN_HPP_NOEXCEPT
89869       : refDefaultFinalList0EntryCount( refDefaultFinalList0EntryCount_ )
89870       , pRefDefaultFinalList0Entries( pRefDefaultFinalList0Entries_ )
89871       , refDefaultFinalList1EntryCount( refDefaultFinalList1EntryCount_ )
89872       , pRefDefaultFinalList1Entries( pRefDefaultFinalList1Entries_ )
89873       , naluSliceEntryCount( naluSliceEntryCount_ )
89874       , pNaluSliceEntries( pNaluSliceEntries_ )
89875       , pCurrentPictureInfo( pCurrentPictureInfo_ )
89876     {}
89877 
89878     VULKAN_HPP_CONSTEXPR
89879       VideoEncodeH264VclFrameInfoEXT( VideoEncodeH264VclFrameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
89880 
VideoEncodeH264VclFrameInfoEXTVULKAN_HPP_NAMESPACE::VideoEncodeH264VclFrameInfoEXT89881     VideoEncodeH264VclFrameInfoEXT( VkVideoEncodeH264VclFrameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
89882       : VideoEncodeH264VclFrameInfoEXT( *reinterpret_cast<VideoEncodeH264VclFrameInfoEXT const *>( &rhs ) )
89883     {}
89884 
89885 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoEncodeH264VclFrameInfoEXTVULKAN_HPP_NAMESPACE::VideoEncodeH264VclFrameInfoEXT89886     VideoEncodeH264VclFrameInfoEXT(
89887       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT> const &
89888         refDefaultFinalList0Entries_,
89889       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT> const &
89890         refDefaultFinalList1Entries_ = {},
89891       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceEXT> const &
89892                                                                   naluSliceEntries_    = {},
89893       const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT * pCurrentPictureInfo_ = {} )
89894       : refDefaultFinalList0EntryCount( static_cast<uint8_t>( refDefaultFinalList0Entries_.size() ) )
89895       , pRefDefaultFinalList0Entries( refDefaultFinalList0Entries_.data() )
89896       , refDefaultFinalList1EntryCount( static_cast<uint8_t>( refDefaultFinalList1Entries_.size() ) )
89897       , pRefDefaultFinalList1Entries( refDefaultFinalList1Entries_.data() )
89898       , naluSliceEntryCount( static_cast<uint32_t>( naluSliceEntries_.size() ) )
89899       , pNaluSliceEntries( naluSliceEntries_.data() )
89900       , pCurrentPictureInfo( pCurrentPictureInfo_ )
89901     {}
89902 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
89903 #  endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
89904 
89905     VideoEncodeH264VclFrameInfoEXT &
89906       operator=( VideoEncodeH264VclFrameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
89907 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264VclFrameInfoEXT89908     VideoEncodeH264VclFrameInfoEXT & operator=( VkVideoEncodeH264VclFrameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
89909     {
89910       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264VclFrameInfoEXT const *>( &rhs );
89911       return *this;
89912     }
89913 
89914 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH264VclFrameInfoEXT89915     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264VclFrameInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
89916     {
89917       pNext = pNext_;
89918       return *this;
89919     }
89920 
89921     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264VclFrameInfoEXT &
setRefDefaultFinalList0EntryCountVULKAN_HPP_NAMESPACE::VideoEncodeH264VclFrameInfoEXT89922       setRefDefaultFinalList0EntryCount( uint8_t refDefaultFinalList0EntryCount_ ) VULKAN_HPP_NOEXCEPT
89923     {
89924       refDefaultFinalList0EntryCount = refDefaultFinalList0EntryCount_;
89925       return *this;
89926     }
89927 
setPRefDefaultFinalList0EntriesVULKAN_HPP_NAMESPACE::VideoEncodeH264VclFrameInfoEXT89928     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264VclFrameInfoEXT & setPRefDefaultFinalList0Entries(
89929       const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT * pRefDefaultFinalList0Entries_ ) VULKAN_HPP_NOEXCEPT
89930     {
89931       pRefDefaultFinalList0Entries = pRefDefaultFinalList0Entries_;
89932       return *this;
89933     }
89934 
89935 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setRefDefaultFinalList0EntriesVULKAN_HPP_NAMESPACE::VideoEncodeH264VclFrameInfoEXT89936     VideoEncodeH264VclFrameInfoEXT & setRefDefaultFinalList0Entries(
89937       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT> const &
89938         refDefaultFinalList0Entries_ ) VULKAN_HPP_NOEXCEPT
89939     {
89940       refDefaultFinalList0EntryCount = static_cast<uint8_t>( refDefaultFinalList0Entries_.size() );
89941       pRefDefaultFinalList0Entries   = refDefaultFinalList0Entries_.data();
89942       return *this;
89943     }
89944 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
89945 
89946     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264VclFrameInfoEXT &
setRefDefaultFinalList1EntryCountVULKAN_HPP_NAMESPACE::VideoEncodeH264VclFrameInfoEXT89947       setRefDefaultFinalList1EntryCount( uint8_t refDefaultFinalList1EntryCount_ ) VULKAN_HPP_NOEXCEPT
89948     {
89949       refDefaultFinalList1EntryCount = refDefaultFinalList1EntryCount_;
89950       return *this;
89951     }
89952 
setPRefDefaultFinalList1EntriesVULKAN_HPP_NAMESPACE::VideoEncodeH264VclFrameInfoEXT89953     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264VclFrameInfoEXT & setPRefDefaultFinalList1Entries(
89954       const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT * pRefDefaultFinalList1Entries_ ) VULKAN_HPP_NOEXCEPT
89955     {
89956       pRefDefaultFinalList1Entries = pRefDefaultFinalList1Entries_;
89957       return *this;
89958     }
89959 
89960 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setRefDefaultFinalList1EntriesVULKAN_HPP_NAMESPACE::VideoEncodeH264VclFrameInfoEXT89961     VideoEncodeH264VclFrameInfoEXT & setRefDefaultFinalList1Entries(
89962       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT> const &
89963         refDefaultFinalList1Entries_ ) VULKAN_HPP_NOEXCEPT
89964     {
89965       refDefaultFinalList1EntryCount = static_cast<uint8_t>( refDefaultFinalList1Entries_.size() );
89966       pRefDefaultFinalList1Entries   = refDefaultFinalList1Entries_.data();
89967       return *this;
89968     }
89969 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
89970 
89971     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264VclFrameInfoEXT &
setNaluSliceEntryCountVULKAN_HPP_NAMESPACE::VideoEncodeH264VclFrameInfoEXT89972                             setNaluSliceEntryCount( uint32_t naluSliceEntryCount_ ) VULKAN_HPP_NOEXCEPT
89973     {
89974       naluSliceEntryCount = naluSliceEntryCount_;
89975       return *this;
89976     }
89977 
setPNaluSliceEntriesVULKAN_HPP_NAMESPACE::VideoEncodeH264VclFrameInfoEXT89978     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264VclFrameInfoEXT & setPNaluSliceEntries(
89979       const VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceEXT * pNaluSliceEntries_ ) VULKAN_HPP_NOEXCEPT
89980     {
89981       pNaluSliceEntries = pNaluSliceEntries_;
89982       return *this;
89983     }
89984 
89985 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setNaluSliceEntriesVULKAN_HPP_NAMESPACE::VideoEncodeH264VclFrameInfoEXT89986     VideoEncodeH264VclFrameInfoEXT & setNaluSliceEntries(
89987       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceEXT> const &
89988         naluSliceEntries_ ) VULKAN_HPP_NOEXCEPT
89989     {
89990       naluSliceEntryCount = static_cast<uint32_t>( naluSliceEntries_.size() );
89991       pNaluSliceEntries   = naluSliceEntries_.data();
89992       return *this;
89993     }
89994 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
89995 
setPCurrentPictureInfoVULKAN_HPP_NAMESPACE::VideoEncodeH264VclFrameInfoEXT89996     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264VclFrameInfoEXT & setPCurrentPictureInfo(
89997       const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT * pCurrentPictureInfo_ ) VULKAN_HPP_NOEXCEPT
89998     {
89999       pCurrentPictureInfo = pCurrentPictureInfo_;
90000       return *this;
90001     }
90002 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
90003 
operator VkVideoEncodeH264VclFrameInfoEXT const&VULKAN_HPP_NAMESPACE::VideoEncodeH264VclFrameInfoEXT90004     explicit operator VkVideoEncodeH264VclFrameInfoEXT const &() const VULKAN_HPP_NOEXCEPT
90005     {
90006       return *reinterpret_cast<const VkVideoEncodeH264VclFrameInfoEXT *>( this );
90007     }
90008 
operator VkVideoEncodeH264VclFrameInfoEXT&VULKAN_HPP_NAMESPACE::VideoEncodeH264VclFrameInfoEXT90009     explicit operator VkVideoEncodeH264VclFrameInfoEXT &() VULKAN_HPP_NOEXCEPT
90010     {
90011       return *reinterpret_cast<VkVideoEncodeH264VclFrameInfoEXT *>( this );
90012     }
90013 
90014 #  if 14 <= VULKAN_HPP_CPP_VERSION
90015     auto
90016 #  else
90017     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
90018                const void * const &,
90019                uint8_t const &,
90020                const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT * const &,
90021                uint8_t const &,
90022                const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT * const &,
90023                uint32_t const &,
90024                const VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceEXT * const &,
90025                const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT * const &>
90026 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264VclFrameInfoEXT90027       reflect() const VULKAN_HPP_NOEXCEPT
90028     {
90029       return std::tie( sType,
90030                        pNext,
90031                        refDefaultFinalList0EntryCount,
90032                        pRefDefaultFinalList0Entries,
90033                        refDefaultFinalList1EntryCount,
90034                        pRefDefaultFinalList1Entries,
90035                        naluSliceEntryCount,
90036                        pNaluSliceEntries,
90037                        pCurrentPictureInfo );
90038     }
90039 
90040 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
90041     auto operator<=>( VideoEncodeH264VclFrameInfoEXT const & ) const = default;
90042 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264VclFrameInfoEXT90043     bool operator==( VideoEncodeH264VclFrameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
90044     {
90045       return this->reflect() == rhs.reflect();
90046     }
90047 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264VclFrameInfoEXT90048     bool operator!=( VideoEncodeH264VclFrameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
90049     {
90050       return this->reflect() != rhs.reflect();
90051     }
90052 #  endif
90053 
90054   public:
90055     VULKAN_HPP_NAMESPACE::StructureType                         sType = StructureType::eVideoEncodeH264VclFrameInfoEXT;
90056     const void *                                                pNext = {};
90057     uint8_t                                                     refDefaultFinalList0EntryCount = {};
90058     const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT * pRefDefaultFinalList0Entries   = {};
90059     uint8_t                                                     refDefaultFinalList1EntryCount = {};
90060     const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT * pRefDefaultFinalList1Entries   = {};
90061     uint32_t                                                    naluSliceEntryCount            = {};
90062     const VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceEXT *   pNaluSliceEntries              = {};
90063     const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT * pCurrentPictureInfo            = {};
90064   };
90065   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264VclFrameInfoEXT ) ==
90066                               sizeof( VkVideoEncodeH264VclFrameInfoEXT ),
90067                             "struct and wrapper have different size!" );
90068   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoEncodeH264VclFrameInfoEXT>::value,
90069                             "struct wrapper is not a standard layout!" );
90070   VULKAN_HPP_STATIC_ASSERT(
90071     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoEncodeH264VclFrameInfoEXT>::value,
90072     "VideoEncodeH264VclFrameInfoEXT is not nothrow_move_constructible!" );
90073 
90074   template <>
90075   struct CppType<StructureType, StructureType::eVideoEncodeH264VclFrameInfoEXT>
90076   {
90077     using Type = VideoEncodeH264VclFrameInfoEXT;
90078   };
90079 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
90080 
90081 #if defined( VK_ENABLE_BETA_EXTENSIONS )
90082   struct VideoEncodeH265CapabilitiesEXT
90083   {
90084     using NativeType = VkVideoEncodeH265CapabilitiesEXT;
90085 
90086     static const bool                                  allowDuplicate = false;
90087     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH265CapabilitiesEXT;
90088 
90089 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265CapabilitiesEXTVULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesEXT90090     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265CapabilitiesEXT(
90091       VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilityFlagsEXT flags_                   = {},
90092       VULKAN_HPP_NAMESPACE::VideoEncodeH265InputModeFlagsEXT  inputModeFlags_          = {},
90093       VULKAN_HPP_NAMESPACE::VideoEncodeH265OutputModeFlagsEXT outputModeFlags_         = {},
90094       VULKAN_HPP_NAMESPACE::VideoEncodeH265CtbSizeFlagsEXT    ctbSizes_                = {},
90095       VULKAN_HPP_NAMESPACE::Extent2D                          inputImageDataAlignment_ = {},
90096       uint8_t                                                 maxNumL0ReferenceForP_   = {},
90097       uint8_t                                                 maxNumL0ReferenceForB_   = {},
90098       uint8_t                                                 maxNumL1Reference_       = {},
90099       uint8_t                                                 maxNumSubLayers_         = {},
90100       uint8_t                                                 qualityLevelCount_       = {},
90101       VULKAN_HPP_NAMESPACE::ExtensionProperties               stdExtensionVersion_     = {} ) VULKAN_HPP_NOEXCEPT
90102       : flags( flags_ )
90103       , inputModeFlags( inputModeFlags_ )
90104       , outputModeFlags( outputModeFlags_ )
90105       , ctbSizes( ctbSizes_ )
90106       , inputImageDataAlignment( inputImageDataAlignment_ )
90107       , maxNumL0ReferenceForP( maxNumL0ReferenceForP_ )
90108       , maxNumL0ReferenceForB( maxNumL0ReferenceForB_ )
90109       , maxNumL1Reference( maxNumL1Reference_ )
90110       , maxNumSubLayers( maxNumSubLayers_ )
90111       , qualityLevelCount( qualityLevelCount_ )
90112       , stdExtensionVersion( stdExtensionVersion_ )
90113     {}
90114 
90115     VULKAN_HPP_CONSTEXPR_14
90116       VideoEncodeH265CapabilitiesEXT( VideoEncodeH265CapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
90117 
VideoEncodeH265CapabilitiesEXTVULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesEXT90118     VideoEncodeH265CapabilitiesEXT( VkVideoEncodeH265CapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
90119       : VideoEncodeH265CapabilitiesEXT( *reinterpret_cast<VideoEncodeH265CapabilitiesEXT const *>( &rhs ) )
90120     {}
90121 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
90122 
90123     VideoEncodeH265CapabilitiesEXT &
90124       operator=( VideoEncodeH265CapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
90125 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesEXT90126     VideoEncodeH265CapabilitiesEXT & operator=( VkVideoEncodeH265CapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
90127     {
90128       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesEXT const *>( &rhs );
90129       return *this;
90130     }
90131 
90132 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesEXT90133     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265CapabilitiesEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
90134     {
90135       pNext = pNext_;
90136       return *this;
90137     }
90138 
90139     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265CapabilitiesEXT &
setFlagsVULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesEXT90140       setFlags( VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilityFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
90141     {
90142       flags = flags_;
90143       return *this;
90144     }
90145 
90146     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265CapabilitiesEXT &
setInputModeFlagsVULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesEXT90147       setInputModeFlags( VULKAN_HPP_NAMESPACE::VideoEncodeH265InputModeFlagsEXT inputModeFlags_ ) VULKAN_HPP_NOEXCEPT
90148     {
90149       inputModeFlags = inputModeFlags_;
90150       return *this;
90151     }
90152 
90153     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265CapabilitiesEXT &
setOutputModeFlagsVULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesEXT90154       setOutputModeFlags( VULKAN_HPP_NAMESPACE::VideoEncodeH265OutputModeFlagsEXT outputModeFlags_ ) VULKAN_HPP_NOEXCEPT
90155     {
90156       outputModeFlags = outputModeFlags_;
90157       return *this;
90158     }
90159 
90160     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265CapabilitiesEXT &
setCtbSizesVULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesEXT90161       setCtbSizes( VULKAN_HPP_NAMESPACE::VideoEncodeH265CtbSizeFlagsEXT ctbSizes_ ) VULKAN_HPP_NOEXCEPT
90162     {
90163       ctbSizes = ctbSizes_;
90164       return *this;
90165     }
90166 
90167     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265CapabilitiesEXT &
setInputImageDataAlignmentVULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesEXT90168       setInputImageDataAlignment( VULKAN_HPP_NAMESPACE::Extent2D const & inputImageDataAlignment_ ) VULKAN_HPP_NOEXCEPT
90169     {
90170       inputImageDataAlignment = inputImageDataAlignment_;
90171       return *this;
90172     }
90173 
90174     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265CapabilitiesEXT &
setMaxNumL0ReferenceForPVULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesEXT90175                             setMaxNumL0ReferenceForP( uint8_t maxNumL0ReferenceForP_ ) VULKAN_HPP_NOEXCEPT
90176     {
90177       maxNumL0ReferenceForP = maxNumL0ReferenceForP_;
90178       return *this;
90179     }
90180 
90181     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265CapabilitiesEXT &
setMaxNumL0ReferenceForBVULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesEXT90182                             setMaxNumL0ReferenceForB( uint8_t maxNumL0ReferenceForB_ ) VULKAN_HPP_NOEXCEPT
90183     {
90184       maxNumL0ReferenceForB = maxNumL0ReferenceForB_;
90185       return *this;
90186     }
90187 
90188     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265CapabilitiesEXT &
setMaxNumL1ReferenceVULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesEXT90189                             setMaxNumL1Reference( uint8_t maxNumL1Reference_ ) VULKAN_HPP_NOEXCEPT
90190     {
90191       maxNumL1Reference = maxNumL1Reference_;
90192       return *this;
90193     }
90194 
90195     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265CapabilitiesEXT &
setMaxNumSubLayersVULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesEXT90196                             setMaxNumSubLayers( uint8_t maxNumSubLayers_ ) VULKAN_HPP_NOEXCEPT
90197     {
90198       maxNumSubLayers = maxNumSubLayers_;
90199       return *this;
90200     }
90201 
90202     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265CapabilitiesEXT &
setQualityLevelCountVULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesEXT90203                             setQualityLevelCount( uint8_t qualityLevelCount_ ) VULKAN_HPP_NOEXCEPT
90204     {
90205       qualityLevelCount = qualityLevelCount_;
90206       return *this;
90207     }
90208 
setStdExtensionVersionVULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesEXT90209     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265CapabilitiesEXT & setStdExtensionVersion(
90210       VULKAN_HPP_NAMESPACE::ExtensionProperties const & stdExtensionVersion_ ) VULKAN_HPP_NOEXCEPT
90211     {
90212       stdExtensionVersion = stdExtensionVersion_;
90213       return *this;
90214     }
90215 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
90216 
operator VkVideoEncodeH265CapabilitiesEXT const&VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesEXT90217     explicit operator VkVideoEncodeH265CapabilitiesEXT const &() const VULKAN_HPP_NOEXCEPT
90218     {
90219       return *reinterpret_cast<const VkVideoEncodeH265CapabilitiesEXT *>( this );
90220     }
90221 
operator VkVideoEncodeH265CapabilitiesEXT&VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesEXT90222     explicit operator VkVideoEncodeH265CapabilitiesEXT &() VULKAN_HPP_NOEXCEPT
90223     {
90224       return *reinterpret_cast<VkVideoEncodeH265CapabilitiesEXT *>( this );
90225     }
90226 
90227 #  if 14 <= VULKAN_HPP_CPP_VERSION
90228     auto
90229 #  else
90230     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
90231                const void * const &,
90232                VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilityFlagsEXT const &,
90233                VULKAN_HPP_NAMESPACE::VideoEncodeH265InputModeFlagsEXT const &,
90234                VULKAN_HPP_NAMESPACE::VideoEncodeH265OutputModeFlagsEXT const &,
90235                VULKAN_HPP_NAMESPACE::VideoEncodeH265CtbSizeFlagsEXT const &,
90236                VULKAN_HPP_NAMESPACE::Extent2D const &,
90237                uint8_t const &,
90238                uint8_t const &,
90239                uint8_t const &,
90240                uint8_t const &,
90241                uint8_t const &,
90242                VULKAN_HPP_NAMESPACE::ExtensionProperties const &>
90243 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesEXT90244       reflect() const VULKAN_HPP_NOEXCEPT
90245     {
90246       return std::tie( sType,
90247                        pNext,
90248                        flags,
90249                        inputModeFlags,
90250                        outputModeFlags,
90251                        ctbSizes,
90252                        inputImageDataAlignment,
90253                        maxNumL0ReferenceForP,
90254                        maxNumL0ReferenceForB,
90255                        maxNumL1Reference,
90256                        maxNumSubLayers,
90257                        qualityLevelCount,
90258                        stdExtensionVersion );
90259     }
90260 
90261 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
90262     auto operator<=>( VideoEncodeH265CapabilitiesEXT const & ) const = default;
90263 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesEXT90264     bool operator==( VideoEncodeH265CapabilitiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
90265     {
90266       return this->reflect() == rhs.reflect();
90267     }
90268 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesEXT90269     bool operator!=( VideoEncodeH265CapabilitiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
90270     {
90271       return this->reflect() != rhs.reflect();
90272     }
90273 #  endif
90274 
90275   public:
90276     VULKAN_HPP_NAMESPACE::StructureType                     sType = StructureType::eVideoEncodeH265CapabilitiesEXT;
90277     const void *                                            pNext = {};
90278     VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilityFlagsEXT flags = {};
90279     VULKAN_HPP_NAMESPACE::VideoEncodeH265InputModeFlagsEXT  inputModeFlags          = {};
90280     VULKAN_HPP_NAMESPACE::VideoEncodeH265OutputModeFlagsEXT outputModeFlags         = {};
90281     VULKAN_HPP_NAMESPACE::VideoEncodeH265CtbSizeFlagsEXT    ctbSizes                = {};
90282     VULKAN_HPP_NAMESPACE::Extent2D                          inputImageDataAlignment = {};
90283     uint8_t                                                 maxNumL0ReferenceForP   = {};
90284     uint8_t                                                 maxNumL0ReferenceForB   = {};
90285     uint8_t                                                 maxNumL1Reference       = {};
90286     uint8_t                                                 maxNumSubLayers         = {};
90287     uint8_t                                                 qualityLevelCount       = {};
90288     VULKAN_HPP_NAMESPACE::ExtensionProperties               stdExtensionVersion     = {};
90289   };
90290   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesEXT ) ==
90291                               sizeof( VkVideoEncodeH265CapabilitiesEXT ),
90292                             "struct and wrapper have different size!" );
90293   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesEXT>::value,
90294                             "struct wrapper is not a standard layout!" );
90295   VULKAN_HPP_STATIC_ASSERT(
90296     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesEXT>::value,
90297     "VideoEncodeH265CapabilitiesEXT is not nothrow_move_constructible!" );
90298 
90299   template <>
90300   struct CppType<StructureType, StructureType::eVideoEncodeH265CapabilitiesEXT>
90301   {
90302     using Type = VideoEncodeH265CapabilitiesEXT;
90303   };
90304 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
90305 
90306 #if defined( VK_ENABLE_BETA_EXTENSIONS )
90307   struct VideoEncodeH265DpbSlotInfoEXT
90308   {
90309     using NativeType = VkVideoEncodeH265DpbSlotInfoEXT;
90310 
90311     static const bool                                  allowDuplicate = false;
90312     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH265DpbSlotInfoEXT;
90313 
90314 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265DpbSlotInfoEXTVULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoEXT90315     VULKAN_HPP_CONSTEXPR VideoEncodeH265DpbSlotInfoEXT(
90316       int8_t slotIndex_ = {}, const StdVideoEncodeH265ReferenceInfo * pStdReferenceInfo_ = {} ) VULKAN_HPP_NOEXCEPT
90317       : slotIndex( slotIndex_ )
90318       , pStdReferenceInfo( pStdReferenceInfo_ )
90319     {}
90320 
90321     VULKAN_HPP_CONSTEXPR
90322       VideoEncodeH265DpbSlotInfoEXT( VideoEncodeH265DpbSlotInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
90323 
VideoEncodeH265DpbSlotInfoEXTVULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoEXT90324     VideoEncodeH265DpbSlotInfoEXT( VkVideoEncodeH265DpbSlotInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
90325       : VideoEncodeH265DpbSlotInfoEXT( *reinterpret_cast<VideoEncodeH265DpbSlotInfoEXT const *>( &rhs ) )
90326     {}
90327 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
90328 
90329     VideoEncodeH265DpbSlotInfoEXT &
90330       operator=( VideoEncodeH265DpbSlotInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
90331 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoEXT90332     VideoEncodeH265DpbSlotInfoEXT & operator=( VkVideoEncodeH265DpbSlotInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
90333     {
90334       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoEXT const *>( &rhs );
90335       return *this;
90336     }
90337 
90338 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoEXT90339     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265DpbSlotInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
90340     {
90341       pNext = pNext_;
90342       return *this;
90343     }
90344 
setSlotIndexVULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoEXT90345     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265DpbSlotInfoEXT & setSlotIndex( int8_t slotIndex_ ) VULKAN_HPP_NOEXCEPT
90346     {
90347       slotIndex = slotIndex_;
90348       return *this;
90349     }
90350 
90351     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265DpbSlotInfoEXT &
setPStdReferenceInfoVULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoEXT90352       setPStdReferenceInfo( const StdVideoEncodeH265ReferenceInfo * pStdReferenceInfo_ ) VULKAN_HPP_NOEXCEPT
90353     {
90354       pStdReferenceInfo = pStdReferenceInfo_;
90355       return *this;
90356     }
90357 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
90358 
operator VkVideoEncodeH265DpbSlotInfoEXT const&VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoEXT90359     explicit operator VkVideoEncodeH265DpbSlotInfoEXT const &() const VULKAN_HPP_NOEXCEPT
90360     {
90361       return *reinterpret_cast<const VkVideoEncodeH265DpbSlotInfoEXT *>( this );
90362     }
90363 
operator VkVideoEncodeH265DpbSlotInfoEXT&VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoEXT90364     explicit operator VkVideoEncodeH265DpbSlotInfoEXT &() VULKAN_HPP_NOEXCEPT
90365     {
90366       return *reinterpret_cast<VkVideoEncodeH265DpbSlotInfoEXT *>( this );
90367     }
90368 
90369 #  if 14 <= VULKAN_HPP_CPP_VERSION
90370     auto
90371 #  else
90372     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
90373                const void * const &,
90374                int8_t const &,
90375                const StdVideoEncodeH265ReferenceInfo * const &>
90376 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoEXT90377       reflect() const VULKAN_HPP_NOEXCEPT
90378     {
90379       return std::tie( sType, pNext, slotIndex, pStdReferenceInfo );
90380     }
90381 
90382 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
90383     auto operator<=>( VideoEncodeH265DpbSlotInfoEXT const & ) const = default;
90384 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoEXT90385     bool operator==( VideoEncodeH265DpbSlotInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
90386     {
90387       return this->reflect() == rhs.reflect();
90388     }
90389 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoEXT90390     bool operator!=( VideoEncodeH265DpbSlotInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
90391     {
90392       return this->reflect() != rhs.reflect();
90393     }
90394 #  endif
90395 
90396   public:
90397     VULKAN_HPP_NAMESPACE::StructureType     sType             = StructureType::eVideoEncodeH265DpbSlotInfoEXT;
90398     const void *                            pNext             = {};
90399     int8_t                                  slotIndex         = {};
90400     const StdVideoEncodeH265ReferenceInfo * pStdReferenceInfo = {};
90401   };
90402   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoEXT ) ==
90403                               sizeof( VkVideoEncodeH265DpbSlotInfoEXT ),
90404                             "struct and wrapper have different size!" );
90405   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoEXT>::value,
90406                             "struct wrapper is not a standard layout!" );
90407   VULKAN_HPP_STATIC_ASSERT(
90408     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoEXT>::value,
90409     "VideoEncodeH265DpbSlotInfoEXT is not nothrow_move_constructible!" );
90410 
90411   template <>
90412   struct CppType<StructureType, StructureType::eVideoEncodeH265DpbSlotInfoEXT>
90413   {
90414     using Type = VideoEncodeH265DpbSlotInfoEXT;
90415   };
90416 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
90417 
90418 #if defined( VK_ENABLE_BETA_EXTENSIONS )
90419   struct VideoEncodeH265EmitPictureParametersEXT
90420   {
90421     using NativeType = VkVideoEncodeH265EmitPictureParametersEXT;
90422 
90423     static const bool                                  allowDuplicate = false;
90424     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
90425       StructureType::eVideoEncodeH265EmitPictureParametersEXT;
90426 
90427 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
90428     VULKAN_HPP_CONSTEXPR
VideoEncodeH265EmitPictureParametersEXTVULKAN_HPP_NAMESPACE::VideoEncodeH265EmitPictureParametersEXT90429       VideoEncodeH265EmitPictureParametersEXT( uint8_t                      vpsId_           = {},
90430                                                uint8_t                      spsId_           = {},
90431                                                VULKAN_HPP_NAMESPACE::Bool32 emitVpsEnable_   = {},
90432                                                VULKAN_HPP_NAMESPACE::Bool32 emitSpsEnable_   = {},
90433                                                uint32_t                     ppsIdEntryCount_ = {},
90434                                                const uint8_t *              ppsIdEntries_    = {} ) VULKAN_HPP_NOEXCEPT
90435       : vpsId( vpsId_ )
90436       , spsId( spsId_ )
90437       , emitVpsEnable( emitVpsEnable_ )
90438       , emitSpsEnable( emitSpsEnable_ )
90439       , ppsIdEntryCount( ppsIdEntryCount_ )
90440       , ppsIdEntries( ppsIdEntries_ )
90441     {}
90442 
90443     VULKAN_HPP_CONSTEXPR VideoEncodeH265EmitPictureParametersEXT( VideoEncodeH265EmitPictureParametersEXT const & rhs )
90444       VULKAN_HPP_NOEXCEPT = default;
90445 
VideoEncodeH265EmitPictureParametersEXTVULKAN_HPP_NAMESPACE::VideoEncodeH265EmitPictureParametersEXT90446     VideoEncodeH265EmitPictureParametersEXT( VkVideoEncodeH265EmitPictureParametersEXT const & rhs ) VULKAN_HPP_NOEXCEPT
90447       : VideoEncodeH265EmitPictureParametersEXT(
90448           *reinterpret_cast<VideoEncodeH265EmitPictureParametersEXT const *>( &rhs ) )
90449     {}
90450 
90451 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoEncodeH265EmitPictureParametersEXTVULKAN_HPP_NAMESPACE::VideoEncodeH265EmitPictureParametersEXT90452     VideoEncodeH265EmitPictureParametersEXT(
90453       uint8_t                                                              vpsId_,
90454       uint8_t                                                              spsId_,
90455       VULKAN_HPP_NAMESPACE::Bool32                                         emitVpsEnable_,
90456       VULKAN_HPP_NAMESPACE::Bool32                                         emitSpsEnable_,
90457       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint8_t> const & psIdEntries_ )
90458       : vpsId( vpsId_ )
90459       , spsId( spsId_ )
90460       , emitVpsEnable( emitVpsEnable_ )
90461       , emitSpsEnable( emitSpsEnable_ )
90462       , ppsIdEntryCount( static_cast<uint32_t>( psIdEntries_.size() ) )
90463       , ppsIdEntries( psIdEntries_.data() )
90464     {}
90465 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
90466 #  endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
90467 
90468     VideoEncodeH265EmitPictureParametersEXT &
90469       operator=( VideoEncodeH265EmitPictureParametersEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
90470 
90471     VideoEncodeH265EmitPictureParametersEXT &
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265EmitPictureParametersEXT90472       operator=( VkVideoEncodeH265EmitPictureParametersEXT const & rhs ) VULKAN_HPP_NOEXCEPT
90473     {
90474       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265EmitPictureParametersEXT const *>( &rhs );
90475       return *this;
90476     }
90477 
90478 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
90479     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265EmitPictureParametersEXT &
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH265EmitPictureParametersEXT90480                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
90481     {
90482       pNext = pNext_;
90483       return *this;
90484     }
90485 
setVpsIdVULKAN_HPP_NAMESPACE::VideoEncodeH265EmitPictureParametersEXT90486     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265EmitPictureParametersEXT & setVpsId( uint8_t vpsId_ ) VULKAN_HPP_NOEXCEPT
90487     {
90488       vpsId = vpsId_;
90489       return *this;
90490     }
90491 
setSpsIdVULKAN_HPP_NAMESPACE::VideoEncodeH265EmitPictureParametersEXT90492     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265EmitPictureParametersEXT & setSpsId( uint8_t spsId_ ) VULKAN_HPP_NOEXCEPT
90493     {
90494       spsId = spsId_;
90495       return *this;
90496     }
90497 
90498     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265EmitPictureParametersEXT &
setEmitVpsEnableVULKAN_HPP_NAMESPACE::VideoEncodeH265EmitPictureParametersEXT90499                             setEmitVpsEnable( VULKAN_HPP_NAMESPACE::Bool32 emitVpsEnable_ ) VULKAN_HPP_NOEXCEPT
90500     {
90501       emitVpsEnable = emitVpsEnable_;
90502       return *this;
90503     }
90504 
90505     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265EmitPictureParametersEXT &
setEmitSpsEnableVULKAN_HPP_NAMESPACE::VideoEncodeH265EmitPictureParametersEXT90506                             setEmitSpsEnable( VULKAN_HPP_NAMESPACE::Bool32 emitSpsEnable_ ) VULKAN_HPP_NOEXCEPT
90507     {
90508       emitSpsEnable = emitSpsEnable_;
90509       return *this;
90510     }
90511 
90512     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265EmitPictureParametersEXT &
setPpsIdEntryCountVULKAN_HPP_NAMESPACE::VideoEncodeH265EmitPictureParametersEXT90513                             setPpsIdEntryCount( uint32_t ppsIdEntryCount_ ) VULKAN_HPP_NOEXCEPT
90514     {
90515       ppsIdEntryCount = ppsIdEntryCount_;
90516       return *this;
90517     }
90518 
90519     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265EmitPictureParametersEXT &
setPpsIdEntriesVULKAN_HPP_NAMESPACE::VideoEncodeH265EmitPictureParametersEXT90520                             setPpsIdEntries( const uint8_t * ppsIdEntries_ ) VULKAN_HPP_NOEXCEPT
90521     {
90522       ppsIdEntries = ppsIdEntries_;
90523       return *this;
90524     }
90525 
90526 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPsIdEntriesVULKAN_HPP_NAMESPACE::VideoEncodeH265EmitPictureParametersEXT90527     VideoEncodeH265EmitPictureParametersEXT & setPsIdEntries(
90528       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint8_t> const & psIdEntries_ ) VULKAN_HPP_NOEXCEPT
90529     {
90530       ppsIdEntryCount = static_cast<uint32_t>( psIdEntries_.size() );
90531       ppsIdEntries    = psIdEntries_.data();
90532       return *this;
90533     }
90534 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
90535 #  endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
90536 
operator VkVideoEncodeH265EmitPictureParametersEXT const&VULKAN_HPP_NAMESPACE::VideoEncodeH265EmitPictureParametersEXT90537     explicit operator VkVideoEncodeH265EmitPictureParametersEXT const &() const VULKAN_HPP_NOEXCEPT
90538     {
90539       return *reinterpret_cast<const VkVideoEncodeH265EmitPictureParametersEXT *>( this );
90540     }
90541 
operator VkVideoEncodeH265EmitPictureParametersEXT&VULKAN_HPP_NAMESPACE::VideoEncodeH265EmitPictureParametersEXT90542     explicit operator VkVideoEncodeH265EmitPictureParametersEXT &() VULKAN_HPP_NOEXCEPT
90543     {
90544       return *reinterpret_cast<VkVideoEncodeH265EmitPictureParametersEXT *>( this );
90545     }
90546 
90547 #  if 14 <= VULKAN_HPP_CPP_VERSION
90548     auto
90549 #  else
90550     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
90551                const void * const &,
90552                uint8_t const &,
90553                uint8_t const &,
90554                VULKAN_HPP_NAMESPACE::Bool32 const &,
90555                VULKAN_HPP_NAMESPACE::Bool32 const &,
90556                uint32_t const &,
90557                const uint8_t * const &>
90558 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265EmitPictureParametersEXT90559       reflect() const VULKAN_HPP_NOEXCEPT
90560     {
90561       return std::tie( sType, pNext, vpsId, spsId, emitVpsEnable, emitSpsEnable, ppsIdEntryCount, ppsIdEntries );
90562     }
90563 
90564 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
90565     auto operator<=>( VideoEncodeH265EmitPictureParametersEXT const & ) const = default;
90566 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265EmitPictureParametersEXT90567     bool operator==( VideoEncodeH265EmitPictureParametersEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
90568     {
90569       return this->reflect() == rhs.reflect();
90570     }
90571 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265EmitPictureParametersEXT90572     bool operator!=( VideoEncodeH265EmitPictureParametersEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
90573     {
90574       return this->reflect() != rhs.reflect();
90575     }
90576 #  endif
90577 
90578   public:
90579     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::eVideoEncodeH265EmitPictureParametersEXT;
90580     const void *                        pNext           = {};
90581     uint8_t                             vpsId           = {};
90582     uint8_t                             spsId           = {};
90583     VULKAN_HPP_NAMESPACE::Bool32        emitVpsEnable   = {};
90584     VULKAN_HPP_NAMESPACE::Bool32        emitSpsEnable   = {};
90585     uint32_t                            ppsIdEntryCount = {};
90586     const uint8_t *                     ppsIdEntries    = {};
90587   };
90588   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265EmitPictureParametersEXT ) ==
90589                               sizeof( VkVideoEncodeH265EmitPictureParametersEXT ),
90590                             "struct and wrapper have different size!" );
90591   VULKAN_HPP_STATIC_ASSERT(
90592     std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoEncodeH265EmitPictureParametersEXT>::value,
90593     "struct wrapper is not a standard layout!" );
90594   VULKAN_HPP_STATIC_ASSERT(
90595     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoEncodeH265EmitPictureParametersEXT>::value,
90596     "VideoEncodeH265EmitPictureParametersEXT is not nothrow_move_constructible!" );
90597 
90598   template <>
90599   struct CppType<StructureType, StructureType::eVideoEncodeH265EmitPictureParametersEXT>
90600   {
90601     using Type = VideoEncodeH265EmitPictureParametersEXT;
90602   };
90603 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
90604 
90605 #if defined( VK_ENABLE_BETA_EXTENSIONS )
90606   struct VideoEncodeH265FrameSizeEXT
90607   {
90608     using NativeType = VkVideoEncodeH265FrameSizeEXT;
90609 
90610 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265FrameSizeEXTVULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeEXT90611     VULKAN_HPP_CONSTEXPR VideoEncodeH265FrameSizeEXT( uint32_t frameISize_ = {},
90612                                                       uint32_t framePSize_ = {},
90613                                                       uint32_t frameBSize_ = {} ) VULKAN_HPP_NOEXCEPT
90614       : frameISize( frameISize_ )
90615       , framePSize( framePSize_ )
90616       , frameBSize( frameBSize_ )
90617     {}
90618 
90619     VULKAN_HPP_CONSTEXPR
90620       VideoEncodeH265FrameSizeEXT( VideoEncodeH265FrameSizeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
90621 
VideoEncodeH265FrameSizeEXTVULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeEXT90622     VideoEncodeH265FrameSizeEXT( VkVideoEncodeH265FrameSizeEXT const & rhs ) VULKAN_HPP_NOEXCEPT
90623       : VideoEncodeH265FrameSizeEXT( *reinterpret_cast<VideoEncodeH265FrameSizeEXT const *>( &rhs ) )
90624     {}
90625 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
90626 
90627     VideoEncodeH265FrameSizeEXT & operator=( VideoEncodeH265FrameSizeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
90628 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeEXT90629     VideoEncodeH265FrameSizeEXT & operator=( VkVideoEncodeH265FrameSizeEXT const & rhs ) VULKAN_HPP_NOEXCEPT
90630     {
90631       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeEXT const *>( &rhs );
90632       return *this;
90633     }
90634 
90635 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setFrameISizeVULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeEXT90636     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265FrameSizeEXT & setFrameISize( uint32_t frameISize_ ) VULKAN_HPP_NOEXCEPT
90637     {
90638       frameISize = frameISize_;
90639       return *this;
90640     }
90641 
setFramePSizeVULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeEXT90642     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265FrameSizeEXT & setFramePSize( uint32_t framePSize_ ) VULKAN_HPP_NOEXCEPT
90643     {
90644       framePSize = framePSize_;
90645       return *this;
90646     }
90647 
setFrameBSizeVULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeEXT90648     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265FrameSizeEXT & setFrameBSize( uint32_t frameBSize_ ) VULKAN_HPP_NOEXCEPT
90649     {
90650       frameBSize = frameBSize_;
90651       return *this;
90652     }
90653 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
90654 
operator VkVideoEncodeH265FrameSizeEXT const&VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeEXT90655     explicit operator VkVideoEncodeH265FrameSizeEXT const &() const VULKAN_HPP_NOEXCEPT
90656     {
90657       return *reinterpret_cast<const VkVideoEncodeH265FrameSizeEXT *>( this );
90658     }
90659 
operator VkVideoEncodeH265FrameSizeEXT&VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeEXT90660     explicit operator VkVideoEncodeH265FrameSizeEXT &() VULKAN_HPP_NOEXCEPT
90661     {
90662       return *reinterpret_cast<VkVideoEncodeH265FrameSizeEXT *>( this );
90663     }
90664 
90665 #  if 14 <= VULKAN_HPP_CPP_VERSION
90666     auto
90667 #  else
90668     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &>
90669 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeEXT90670       reflect() const VULKAN_HPP_NOEXCEPT
90671     {
90672       return std::tie( frameISize, framePSize, frameBSize );
90673     }
90674 
90675 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
90676     auto operator<=>( VideoEncodeH265FrameSizeEXT const & ) const = default;
90677 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeEXT90678     bool operator==( VideoEncodeH265FrameSizeEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
90679     {
90680       return this->reflect() == rhs.reflect();
90681     }
90682 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeEXT90683     bool operator!=( VideoEncodeH265FrameSizeEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
90684     {
90685       return this->reflect() != rhs.reflect();
90686     }
90687 #  endif
90688 
90689   public:
90690     uint32_t frameISize = {};
90691     uint32_t framePSize = {};
90692     uint32_t frameBSize = {};
90693   };
90694   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeEXT ) ==
90695                               sizeof( VkVideoEncodeH265FrameSizeEXT ),
90696                             "struct and wrapper have different size!" );
90697   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeEXT>::value,
90698                             "struct wrapper is not a standard layout!" );
90699   VULKAN_HPP_STATIC_ASSERT(
90700     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeEXT>::value,
90701     "VideoEncodeH265FrameSizeEXT is not nothrow_move_constructible!" );
90702 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
90703 
90704 #if defined( VK_ENABLE_BETA_EXTENSIONS )
90705   struct VideoEncodeH265ReferenceListsEXT
90706   {
90707     using NativeType = VkVideoEncodeH265ReferenceListsEXT;
90708 
90709     static const bool                                  allowDuplicate = false;
90710     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH265ReferenceListsEXT;
90711 
90712 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265ReferenceListsEXTVULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT90713     VULKAN_HPP_CONSTEXPR VideoEncodeH265ReferenceListsEXT(
90714       uint8_t                                                     referenceList0EntryCount_ = {},
90715       const VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoEXT * pReferenceList0Entries_   = {},
90716       uint8_t                                                     referenceList1EntryCount_ = {},
90717       const VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoEXT * pReferenceList1Entries_   = {},
90718       const StdVideoEncodeH265ReferenceModifications *            pReferenceModifications_  = {} ) VULKAN_HPP_NOEXCEPT
90719       : referenceList0EntryCount( referenceList0EntryCount_ )
90720       , pReferenceList0Entries( pReferenceList0Entries_ )
90721       , referenceList1EntryCount( referenceList1EntryCount_ )
90722       , pReferenceList1Entries( pReferenceList1Entries_ )
90723       , pReferenceModifications( pReferenceModifications_ )
90724     {}
90725 
90726     VULKAN_HPP_CONSTEXPR
90727       VideoEncodeH265ReferenceListsEXT( VideoEncodeH265ReferenceListsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
90728 
VideoEncodeH265ReferenceListsEXTVULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT90729     VideoEncodeH265ReferenceListsEXT( VkVideoEncodeH265ReferenceListsEXT const & rhs ) VULKAN_HPP_NOEXCEPT
90730       : VideoEncodeH265ReferenceListsEXT( *reinterpret_cast<VideoEncodeH265ReferenceListsEXT const *>( &rhs ) )
90731     {}
90732 
90733 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoEncodeH265ReferenceListsEXTVULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT90734     VideoEncodeH265ReferenceListsEXT(
90735       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoEXT> const &
90736         referenceList0Entries_,
90737       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoEXT> const &
90738                                                        referenceList1Entries_   = {},
90739       const StdVideoEncodeH265ReferenceModifications * pReferenceModifications_ = {} )
90740       : referenceList0EntryCount( static_cast<uint8_t>( referenceList0Entries_.size() ) )
90741       , pReferenceList0Entries( referenceList0Entries_.data() )
90742       , referenceList1EntryCount( static_cast<uint8_t>( referenceList1Entries_.size() ) )
90743       , pReferenceList1Entries( referenceList1Entries_.data() )
90744       , pReferenceModifications( pReferenceModifications_ )
90745     {}
90746 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
90747 #  endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
90748 
90749     VideoEncodeH265ReferenceListsEXT &
90750       operator=( VideoEncodeH265ReferenceListsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
90751 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT90752     VideoEncodeH265ReferenceListsEXT & operator=( VkVideoEncodeH265ReferenceListsEXT const & rhs ) VULKAN_HPP_NOEXCEPT
90753     {
90754       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT const *>( &rhs );
90755       return *this;
90756     }
90757 
90758 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT90759     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265ReferenceListsEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
90760     {
90761       pNext = pNext_;
90762       return *this;
90763     }
90764 
90765     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265ReferenceListsEXT &
setReferenceList0EntryCountVULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT90766                             setReferenceList0EntryCount( uint8_t referenceList0EntryCount_ ) VULKAN_HPP_NOEXCEPT
90767     {
90768       referenceList0EntryCount = referenceList0EntryCount_;
90769       return *this;
90770     }
90771 
setPReferenceList0EntriesVULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT90772     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265ReferenceListsEXT & setPReferenceList0Entries(
90773       const VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoEXT * pReferenceList0Entries_ ) VULKAN_HPP_NOEXCEPT
90774     {
90775       pReferenceList0Entries = pReferenceList0Entries_;
90776       return *this;
90777     }
90778 
90779 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setReferenceList0EntriesVULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT90780     VideoEncodeH265ReferenceListsEXT & setReferenceList0Entries(
90781       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoEXT> const &
90782         referenceList0Entries_ ) VULKAN_HPP_NOEXCEPT
90783     {
90784       referenceList0EntryCount = static_cast<uint8_t>( referenceList0Entries_.size() );
90785       pReferenceList0Entries   = referenceList0Entries_.data();
90786       return *this;
90787     }
90788 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
90789 
90790     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265ReferenceListsEXT &
setReferenceList1EntryCountVULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT90791                             setReferenceList1EntryCount( uint8_t referenceList1EntryCount_ ) VULKAN_HPP_NOEXCEPT
90792     {
90793       referenceList1EntryCount = referenceList1EntryCount_;
90794       return *this;
90795     }
90796 
setPReferenceList1EntriesVULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT90797     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265ReferenceListsEXT & setPReferenceList1Entries(
90798       const VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoEXT * pReferenceList1Entries_ ) VULKAN_HPP_NOEXCEPT
90799     {
90800       pReferenceList1Entries = pReferenceList1Entries_;
90801       return *this;
90802     }
90803 
90804 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setReferenceList1EntriesVULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT90805     VideoEncodeH265ReferenceListsEXT & setReferenceList1Entries(
90806       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoEXT> const &
90807         referenceList1Entries_ ) VULKAN_HPP_NOEXCEPT
90808     {
90809       referenceList1EntryCount = static_cast<uint8_t>( referenceList1Entries_.size() );
90810       pReferenceList1Entries   = referenceList1Entries_.data();
90811       return *this;
90812     }
90813 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
90814 
setPReferenceModificationsVULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT90815     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265ReferenceListsEXT & setPReferenceModifications(
90816       const StdVideoEncodeH265ReferenceModifications * pReferenceModifications_ ) VULKAN_HPP_NOEXCEPT
90817     {
90818       pReferenceModifications = pReferenceModifications_;
90819       return *this;
90820     }
90821 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
90822 
operator VkVideoEncodeH265ReferenceListsEXT const&VULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT90823     explicit operator VkVideoEncodeH265ReferenceListsEXT const &() const VULKAN_HPP_NOEXCEPT
90824     {
90825       return *reinterpret_cast<const VkVideoEncodeH265ReferenceListsEXT *>( this );
90826     }
90827 
operator VkVideoEncodeH265ReferenceListsEXT&VULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT90828     explicit operator VkVideoEncodeH265ReferenceListsEXT &() VULKAN_HPP_NOEXCEPT
90829     {
90830       return *reinterpret_cast<VkVideoEncodeH265ReferenceListsEXT *>( this );
90831     }
90832 
90833 #  if 14 <= VULKAN_HPP_CPP_VERSION
90834     auto
90835 #  else
90836     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
90837                const void * const &,
90838                uint8_t const &,
90839                const VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoEXT * const &,
90840                uint8_t const &,
90841                const VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoEXT * const &,
90842                const StdVideoEncodeH265ReferenceModifications * const &>
90843 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT90844       reflect() const VULKAN_HPP_NOEXCEPT
90845     {
90846       return std::tie( sType,
90847                        pNext,
90848                        referenceList0EntryCount,
90849                        pReferenceList0Entries,
90850                        referenceList1EntryCount,
90851                        pReferenceList1Entries,
90852                        pReferenceModifications );
90853     }
90854 
90855 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
90856     auto operator<=>( VideoEncodeH265ReferenceListsEXT const & ) const = default;
90857 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT90858     bool operator==( VideoEncodeH265ReferenceListsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
90859     {
90860       return this->reflect() == rhs.reflect();
90861     }
90862 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT90863     bool operator!=( VideoEncodeH265ReferenceListsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
90864     {
90865       return this->reflect() != rhs.reflect();
90866     }
90867 #  endif
90868 
90869   public:
90870     VULKAN_HPP_NAMESPACE::StructureType sType                    = StructureType::eVideoEncodeH265ReferenceListsEXT;
90871     const void *                        pNext                    = {};
90872     uint8_t                             referenceList0EntryCount = {};
90873     const VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoEXT * pReferenceList0Entries   = {};
90874     uint8_t                                                     referenceList1EntryCount = {};
90875     const VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoEXT * pReferenceList1Entries   = {};
90876     const StdVideoEncodeH265ReferenceModifications *            pReferenceModifications  = {};
90877   };
90878   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT ) ==
90879                               sizeof( VkVideoEncodeH265ReferenceListsEXT ),
90880                             "struct and wrapper have different size!" );
90881   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT>::value,
90882                             "struct wrapper is not a standard layout!" );
90883   VULKAN_HPP_STATIC_ASSERT(
90884     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT>::value,
90885     "VideoEncodeH265ReferenceListsEXT is not nothrow_move_constructible!" );
90886 
90887   template <>
90888   struct CppType<StructureType, StructureType::eVideoEncodeH265ReferenceListsEXT>
90889   {
90890     using Type = VideoEncodeH265ReferenceListsEXT;
90891   };
90892 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
90893 
90894 #if defined( VK_ENABLE_BETA_EXTENSIONS )
90895   struct VideoEncodeH265NaluSliceEXT
90896   {
90897     using NativeType = VkVideoEncodeH265NaluSliceEXT;
90898 
90899     static const bool                                  allowDuplicate = false;
90900     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH265NaluSliceEXT;
90901 
90902 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265NaluSliceEXTVULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceEXT90903     VULKAN_HPP_CONSTEXPR VideoEncodeH265NaluSliceEXT(
90904       uint32_t                                                       ctbCount_             = {},
90905       const VULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT * pReferenceFinalLists_ = {},
90906       const StdVideoEncodeH265SliceHeader *                          pSliceHeaderStd_      = {} ) VULKAN_HPP_NOEXCEPT
90907       : ctbCount( ctbCount_ )
90908       , pReferenceFinalLists( pReferenceFinalLists_ )
90909       , pSliceHeaderStd( pSliceHeaderStd_ )
90910     {}
90911 
90912     VULKAN_HPP_CONSTEXPR
90913       VideoEncodeH265NaluSliceEXT( VideoEncodeH265NaluSliceEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
90914 
VideoEncodeH265NaluSliceEXTVULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceEXT90915     VideoEncodeH265NaluSliceEXT( VkVideoEncodeH265NaluSliceEXT const & rhs ) VULKAN_HPP_NOEXCEPT
90916       : VideoEncodeH265NaluSliceEXT( *reinterpret_cast<VideoEncodeH265NaluSliceEXT const *>( &rhs ) )
90917     {}
90918 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
90919 
90920     VideoEncodeH265NaluSliceEXT & operator=( VideoEncodeH265NaluSliceEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
90921 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceEXT90922     VideoEncodeH265NaluSliceEXT & operator=( VkVideoEncodeH265NaluSliceEXT const & rhs ) VULKAN_HPP_NOEXCEPT
90923     {
90924       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceEXT const *>( &rhs );
90925       return *this;
90926     }
90927 
90928 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceEXT90929     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265NaluSliceEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
90930     {
90931       pNext = pNext_;
90932       return *this;
90933     }
90934 
setCtbCountVULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceEXT90935     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265NaluSliceEXT & setCtbCount( uint32_t ctbCount_ ) VULKAN_HPP_NOEXCEPT
90936     {
90937       ctbCount = ctbCount_;
90938       return *this;
90939     }
90940 
setPReferenceFinalListsVULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceEXT90941     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265NaluSliceEXT & setPReferenceFinalLists(
90942       const VULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT * pReferenceFinalLists_ ) VULKAN_HPP_NOEXCEPT
90943     {
90944       pReferenceFinalLists = pReferenceFinalLists_;
90945       return *this;
90946     }
90947 
90948     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265NaluSliceEXT &
setPSliceHeaderStdVULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceEXT90949       setPSliceHeaderStd( const StdVideoEncodeH265SliceHeader * pSliceHeaderStd_ ) VULKAN_HPP_NOEXCEPT
90950     {
90951       pSliceHeaderStd = pSliceHeaderStd_;
90952       return *this;
90953     }
90954 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
90955 
operator VkVideoEncodeH265NaluSliceEXT const&VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceEXT90956     explicit operator VkVideoEncodeH265NaluSliceEXT const &() const VULKAN_HPP_NOEXCEPT
90957     {
90958       return *reinterpret_cast<const VkVideoEncodeH265NaluSliceEXT *>( this );
90959     }
90960 
operator VkVideoEncodeH265NaluSliceEXT&VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceEXT90961     explicit operator VkVideoEncodeH265NaluSliceEXT &() VULKAN_HPP_NOEXCEPT
90962     {
90963       return *reinterpret_cast<VkVideoEncodeH265NaluSliceEXT *>( this );
90964     }
90965 
90966 #  if 14 <= VULKAN_HPP_CPP_VERSION
90967     auto
90968 #  else
90969     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
90970                const void * const &,
90971                uint32_t const &,
90972                const VULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT * const &,
90973                const StdVideoEncodeH265SliceHeader * const &>
90974 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceEXT90975       reflect() const VULKAN_HPP_NOEXCEPT
90976     {
90977       return std::tie( sType, pNext, ctbCount, pReferenceFinalLists, pSliceHeaderStd );
90978     }
90979 
90980 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
90981     auto operator<=>( VideoEncodeH265NaluSliceEXT const & ) const = default;
90982 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceEXT90983     bool operator==( VideoEncodeH265NaluSliceEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
90984     {
90985       return this->reflect() == rhs.reflect();
90986     }
90987 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceEXT90988     bool operator!=( VideoEncodeH265NaluSliceEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
90989     {
90990       return this->reflect() != rhs.reflect();
90991     }
90992 #  endif
90993 
90994   public:
90995     VULKAN_HPP_NAMESPACE::StructureType                            sType = StructureType::eVideoEncodeH265NaluSliceEXT;
90996     const void *                                                   pNext = {};
90997     uint32_t                                                       ctbCount             = {};
90998     const VULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT * pReferenceFinalLists = {};
90999     const StdVideoEncodeH265SliceHeader *                          pSliceHeaderStd      = {};
91000   };
91001   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceEXT ) ==
91002                               sizeof( VkVideoEncodeH265NaluSliceEXT ),
91003                             "struct and wrapper have different size!" );
91004   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceEXT>::value,
91005                             "struct wrapper is not a standard layout!" );
91006   VULKAN_HPP_STATIC_ASSERT(
91007     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceEXT>::value,
91008     "VideoEncodeH265NaluSliceEXT is not nothrow_move_constructible!" );
91009 
91010   template <>
91011   struct CppType<StructureType, StructureType::eVideoEncodeH265NaluSliceEXT>
91012   {
91013     using Type = VideoEncodeH265NaluSliceEXT;
91014   };
91015 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
91016 
91017 #if defined( VK_ENABLE_BETA_EXTENSIONS )
91018   struct VideoEncodeH265ProfileEXT
91019   {
91020     using NativeType = VkVideoEncodeH265ProfileEXT;
91021 
91022     static const bool                                  allowDuplicate = false;
91023     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH265ProfileEXT;
91024 
91025 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265ProfileEXTVULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileEXT91026     VULKAN_HPP_CONSTEXPR VideoEncodeH265ProfileEXT( StdVideoH265ProfileIdc stdProfileIdc_ = {} ) VULKAN_HPP_NOEXCEPT
91027       : stdProfileIdc( stdProfileIdc_ )
91028     {}
91029 
91030     VULKAN_HPP_CONSTEXPR
91031       VideoEncodeH265ProfileEXT( VideoEncodeH265ProfileEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
91032 
VideoEncodeH265ProfileEXTVULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileEXT91033     VideoEncodeH265ProfileEXT( VkVideoEncodeH265ProfileEXT const & rhs ) VULKAN_HPP_NOEXCEPT
91034       : VideoEncodeH265ProfileEXT( *reinterpret_cast<VideoEncodeH265ProfileEXT const *>( &rhs ) )
91035     {}
91036 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
91037 
91038     VideoEncodeH265ProfileEXT & operator=( VideoEncodeH265ProfileEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
91039 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileEXT91040     VideoEncodeH265ProfileEXT & operator=( VkVideoEncodeH265ProfileEXT const & rhs ) VULKAN_HPP_NOEXCEPT
91041     {
91042       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileEXT const *>( &rhs );
91043       return *this;
91044     }
91045 
91046 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileEXT91047     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265ProfileEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
91048     {
91049       pNext = pNext_;
91050       return *this;
91051     }
91052 
91053     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265ProfileEXT &
setStdProfileIdcVULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileEXT91054                             setStdProfileIdc( StdVideoH265ProfileIdc stdProfileIdc_ ) VULKAN_HPP_NOEXCEPT
91055     {
91056       stdProfileIdc = stdProfileIdc_;
91057       return *this;
91058     }
91059 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
91060 
operator VkVideoEncodeH265ProfileEXT const&VULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileEXT91061     explicit operator VkVideoEncodeH265ProfileEXT const &() const VULKAN_HPP_NOEXCEPT
91062     {
91063       return *reinterpret_cast<const VkVideoEncodeH265ProfileEXT *>( this );
91064     }
91065 
operator VkVideoEncodeH265ProfileEXT&VULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileEXT91066     explicit operator VkVideoEncodeH265ProfileEXT &() VULKAN_HPP_NOEXCEPT
91067     {
91068       return *reinterpret_cast<VkVideoEncodeH265ProfileEXT *>( this );
91069     }
91070 
91071 #  if 14 <= VULKAN_HPP_CPP_VERSION
91072     auto
91073 #  else
91074     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, StdVideoH265ProfileIdc const &>
91075 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileEXT91076       reflect() const VULKAN_HPP_NOEXCEPT
91077     {
91078       return std::tie( sType, pNext, stdProfileIdc );
91079     }
91080 
91081 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
91082     auto operator<=>( VideoEncodeH265ProfileEXT const & ) const = default;
91083 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileEXT91084     bool operator==( VideoEncodeH265ProfileEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
91085     {
91086       return this->reflect() == rhs.reflect();
91087     }
91088 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileEXT91089     bool operator!=( VideoEncodeH265ProfileEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
91090     {
91091       return this->reflect() != rhs.reflect();
91092     }
91093 #  endif
91094 
91095   public:
91096     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::eVideoEncodeH265ProfileEXT;
91097     const void *                        pNext         = {};
91098     StdVideoH265ProfileIdc              stdProfileIdc = {};
91099   };
91100   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileEXT ) ==
91101                               sizeof( VkVideoEncodeH265ProfileEXT ),
91102                             "struct and wrapper have different size!" );
91103   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileEXT>::value,
91104                             "struct wrapper is not a standard layout!" );
91105   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileEXT>::value,
91106                             "VideoEncodeH265ProfileEXT is not nothrow_move_constructible!" );
91107 
91108   template <>
91109   struct CppType<StructureType, StructureType::eVideoEncodeH265ProfileEXT>
91110   {
91111     using Type = VideoEncodeH265ProfileEXT;
91112   };
91113 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
91114 
91115 #if defined( VK_ENABLE_BETA_EXTENSIONS )
91116   struct VideoEncodeH265QpEXT
91117   {
91118     using NativeType = VkVideoEncodeH265QpEXT;
91119 
91120 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
91121     VULKAN_HPP_CONSTEXPR
VideoEncodeH265QpEXTVULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT91122       VideoEncodeH265QpEXT( int32_t qpI_ = {}, int32_t qpP_ = {}, int32_t qpB_ = {} ) VULKAN_HPP_NOEXCEPT
91123       : qpI( qpI_ )
91124       , qpP( qpP_ )
91125       , qpB( qpB_ )
91126     {}
91127 
91128     VULKAN_HPP_CONSTEXPR VideoEncodeH265QpEXT( VideoEncodeH265QpEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
91129 
VideoEncodeH265QpEXTVULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT91130     VideoEncodeH265QpEXT( VkVideoEncodeH265QpEXT const & rhs ) VULKAN_HPP_NOEXCEPT
91131       : VideoEncodeH265QpEXT( *reinterpret_cast<VideoEncodeH265QpEXT const *>( &rhs ) )
91132     {}
91133 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
91134 
91135     VideoEncodeH265QpEXT & operator=( VideoEncodeH265QpEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
91136 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT91137     VideoEncodeH265QpEXT & operator=( VkVideoEncodeH265QpEXT const & rhs ) VULKAN_HPP_NOEXCEPT
91138     {
91139       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT const *>( &rhs );
91140       return *this;
91141     }
91142 
91143 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setQpIVULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT91144     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265QpEXT & setQpI( int32_t qpI_ ) VULKAN_HPP_NOEXCEPT
91145     {
91146       qpI = qpI_;
91147       return *this;
91148     }
91149 
setQpPVULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT91150     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265QpEXT & setQpP( int32_t qpP_ ) VULKAN_HPP_NOEXCEPT
91151     {
91152       qpP = qpP_;
91153       return *this;
91154     }
91155 
setQpBVULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT91156     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265QpEXT & setQpB( int32_t qpB_ ) VULKAN_HPP_NOEXCEPT
91157     {
91158       qpB = qpB_;
91159       return *this;
91160     }
91161 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
91162 
operator VkVideoEncodeH265QpEXT const&VULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT91163     explicit operator VkVideoEncodeH265QpEXT const &() const VULKAN_HPP_NOEXCEPT
91164     {
91165       return *reinterpret_cast<const VkVideoEncodeH265QpEXT *>( this );
91166     }
91167 
operator VkVideoEncodeH265QpEXT&VULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT91168     explicit operator VkVideoEncodeH265QpEXT &() VULKAN_HPP_NOEXCEPT
91169     {
91170       return *reinterpret_cast<VkVideoEncodeH265QpEXT *>( this );
91171     }
91172 
91173 #  if 14 <= VULKAN_HPP_CPP_VERSION
91174     auto
91175 #  else
91176     std::tuple<int32_t const &, int32_t const &, int32_t const &>
91177 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT91178       reflect() const VULKAN_HPP_NOEXCEPT
91179     {
91180       return std::tie( qpI, qpP, qpB );
91181     }
91182 
91183 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
91184     auto operator<=>( VideoEncodeH265QpEXT const & ) const = default;
91185 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT91186     bool operator==( VideoEncodeH265QpEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
91187     {
91188       return this->reflect() == rhs.reflect();
91189     }
91190 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT91191     bool operator!=( VideoEncodeH265QpEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
91192     {
91193       return this->reflect() != rhs.reflect();
91194     }
91195 #  endif
91196 
91197   public:
91198     int32_t qpI = {};
91199     int32_t qpP = {};
91200     int32_t qpB = {};
91201   };
91202   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT ) == sizeof( VkVideoEncodeH265QpEXT ),
91203                             "struct and wrapper have different size!" );
91204   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT>::value,
91205                             "struct wrapper is not a standard layout!" );
91206   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT>::value,
91207                             "VideoEncodeH265QpEXT is not nothrow_move_constructible!" );
91208 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
91209 
91210 #if defined( VK_ENABLE_BETA_EXTENSIONS )
91211   struct VideoEncodeH265RateControlInfoEXT
91212   {
91213     using NativeType = VkVideoEncodeH265RateControlInfoEXT;
91214 
91215     static const bool                                  allowDuplicate = false;
91216     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
91217       StructureType::eVideoEncodeH265RateControlInfoEXT;
91218 
91219 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265RateControlInfoEXTVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoEXT91220     VULKAN_HPP_CONSTEXPR VideoEncodeH265RateControlInfoEXT(
91221       uint32_t                                                             gopFrameCount_          = {},
91222       uint32_t                                                             idrPeriod_              = {},
91223       uint32_t                                                             consecutiveBFrameCount_ = {},
91224       VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlStructureFlagBitsEXT rateControlStructure_ =
91225         VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlStructureFlagBitsEXT::eUnknown,
91226       uint8_t subLayerCount_ = {} ) VULKAN_HPP_NOEXCEPT
91227       : gopFrameCount( gopFrameCount_ )
91228       , idrPeriod( idrPeriod_ )
91229       , consecutiveBFrameCount( consecutiveBFrameCount_ )
91230       , rateControlStructure( rateControlStructure_ )
91231       , subLayerCount( subLayerCount_ )
91232     {}
91233 
91234     VULKAN_HPP_CONSTEXPR
91235       VideoEncodeH265RateControlInfoEXT( VideoEncodeH265RateControlInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
91236 
VideoEncodeH265RateControlInfoEXTVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoEXT91237     VideoEncodeH265RateControlInfoEXT( VkVideoEncodeH265RateControlInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
91238       : VideoEncodeH265RateControlInfoEXT( *reinterpret_cast<VideoEncodeH265RateControlInfoEXT const *>( &rhs ) )
91239     {}
91240 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
91241 
91242     VideoEncodeH265RateControlInfoEXT &
91243       operator=( VideoEncodeH265RateControlInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
91244 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoEXT91245     VideoEncodeH265RateControlInfoEXT & operator=( VkVideoEncodeH265RateControlInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
91246     {
91247       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoEXT const *>( &rhs );
91248       return *this;
91249     }
91250 
91251 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoEXT91252     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
91253     {
91254       pNext = pNext_;
91255       return *this;
91256     }
91257 
91258     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlInfoEXT &
setGopFrameCountVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoEXT91259                             setGopFrameCount( uint32_t gopFrameCount_ ) VULKAN_HPP_NOEXCEPT
91260     {
91261       gopFrameCount = gopFrameCount_;
91262       return *this;
91263     }
91264 
setIdrPeriodVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoEXT91265     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlInfoEXT & setIdrPeriod( uint32_t idrPeriod_ ) VULKAN_HPP_NOEXCEPT
91266     {
91267       idrPeriod = idrPeriod_;
91268       return *this;
91269     }
91270 
91271     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlInfoEXT &
setConsecutiveBFrameCountVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoEXT91272                             setConsecutiveBFrameCount( uint32_t consecutiveBFrameCount_ ) VULKAN_HPP_NOEXCEPT
91273     {
91274       consecutiveBFrameCount = consecutiveBFrameCount_;
91275       return *this;
91276     }
91277 
setRateControlStructureVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoEXT91278     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlInfoEXT & setRateControlStructure(
91279       VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlStructureFlagBitsEXT rateControlStructure_ ) VULKAN_HPP_NOEXCEPT
91280     {
91281       rateControlStructure = rateControlStructure_;
91282       return *this;
91283     }
91284 
91285     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlInfoEXT &
setSubLayerCountVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoEXT91286                             setSubLayerCount( uint8_t subLayerCount_ ) VULKAN_HPP_NOEXCEPT
91287     {
91288       subLayerCount = subLayerCount_;
91289       return *this;
91290     }
91291 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
91292 
operator VkVideoEncodeH265RateControlInfoEXT const&VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoEXT91293     explicit operator VkVideoEncodeH265RateControlInfoEXT const &() const VULKAN_HPP_NOEXCEPT
91294     {
91295       return *reinterpret_cast<const VkVideoEncodeH265RateControlInfoEXT *>( this );
91296     }
91297 
operator VkVideoEncodeH265RateControlInfoEXT&VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoEXT91298     explicit operator VkVideoEncodeH265RateControlInfoEXT &() VULKAN_HPP_NOEXCEPT
91299     {
91300       return *reinterpret_cast<VkVideoEncodeH265RateControlInfoEXT *>( this );
91301     }
91302 
91303 #  if 14 <= VULKAN_HPP_CPP_VERSION
91304     auto
91305 #  else
91306     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
91307                const void * const &,
91308                uint32_t const &,
91309                uint32_t const &,
91310                uint32_t const &,
91311                VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlStructureFlagBitsEXT const &,
91312                uint8_t const &>
91313 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoEXT91314       reflect() const VULKAN_HPP_NOEXCEPT
91315     {
91316       return std::tie(
91317         sType, pNext, gopFrameCount, idrPeriod, consecutiveBFrameCount, rateControlStructure, subLayerCount );
91318     }
91319 
91320 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
91321     auto operator<=>( VideoEncodeH265RateControlInfoEXT const & ) const = default;
91322 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoEXT91323     bool operator==( VideoEncodeH265RateControlInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
91324     {
91325       return this->reflect() == rhs.reflect();
91326     }
91327 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoEXT91328     bool operator!=( VideoEncodeH265RateControlInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
91329     {
91330       return this->reflect() != rhs.reflect();
91331     }
91332 #  endif
91333 
91334   public:
91335     VULKAN_HPP_NAMESPACE::StructureType sType                  = StructureType::eVideoEncodeH265RateControlInfoEXT;
91336     const void *                        pNext                  = {};
91337     uint32_t                            gopFrameCount          = {};
91338     uint32_t                            idrPeriod              = {};
91339     uint32_t                            consecutiveBFrameCount = {};
91340     VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlStructureFlagBitsEXT rateControlStructure =
91341       VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlStructureFlagBitsEXT::eUnknown;
91342     uint8_t subLayerCount = {};
91343   };
91344   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoEXT ) ==
91345                               sizeof( VkVideoEncodeH265RateControlInfoEXT ),
91346                             "struct and wrapper have different size!" );
91347   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoEXT>::value,
91348                             "struct wrapper is not a standard layout!" );
91349   VULKAN_HPP_STATIC_ASSERT(
91350     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoEXT>::value,
91351     "VideoEncodeH265RateControlInfoEXT is not nothrow_move_constructible!" );
91352 
91353   template <>
91354   struct CppType<StructureType, StructureType::eVideoEncodeH265RateControlInfoEXT>
91355   {
91356     using Type = VideoEncodeH265RateControlInfoEXT;
91357   };
91358 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
91359 
91360 #if defined( VK_ENABLE_BETA_EXTENSIONS )
91361   struct VideoEncodeH265RateControlLayerInfoEXT
91362   {
91363     using NativeType = VkVideoEncodeH265RateControlLayerInfoEXT;
91364 
91365     static const bool                                  allowDuplicate = false;
91366     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
91367       StructureType::eVideoEncodeH265RateControlLayerInfoEXT;
91368 
91369 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265RateControlLayerInfoEXTVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoEXT91370     VULKAN_HPP_CONSTEXPR VideoEncodeH265RateControlLayerInfoEXT(
91371       uint8_t                                           temporalId_      = {},
91372       VULKAN_HPP_NAMESPACE::Bool32                      useInitialRcQp_  = {},
91373       VULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT        initialRcQp_     = {},
91374       VULKAN_HPP_NAMESPACE::Bool32                      useMinQp_        = {},
91375       VULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT        minQp_           = {},
91376       VULKAN_HPP_NAMESPACE::Bool32                      useMaxQp_        = {},
91377       VULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT        maxQp_           = {},
91378       VULKAN_HPP_NAMESPACE::Bool32                      useMaxFrameSize_ = {},
91379       VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeEXT maxFrameSize_    = {} ) VULKAN_HPP_NOEXCEPT
91380       : temporalId( temporalId_ )
91381       , useInitialRcQp( useInitialRcQp_ )
91382       , initialRcQp( initialRcQp_ )
91383       , useMinQp( useMinQp_ )
91384       , minQp( minQp_ )
91385       , useMaxQp( useMaxQp_ )
91386       , maxQp( maxQp_ )
91387       , useMaxFrameSize( useMaxFrameSize_ )
91388       , maxFrameSize( maxFrameSize_ )
91389     {}
91390 
91391     VULKAN_HPP_CONSTEXPR VideoEncodeH265RateControlLayerInfoEXT( VideoEncodeH265RateControlLayerInfoEXT const & rhs )
91392       VULKAN_HPP_NOEXCEPT = default;
91393 
VideoEncodeH265RateControlLayerInfoEXTVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoEXT91394     VideoEncodeH265RateControlLayerInfoEXT( VkVideoEncodeH265RateControlLayerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
91395       : VideoEncodeH265RateControlLayerInfoEXT(
91396           *reinterpret_cast<VideoEncodeH265RateControlLayerInfoEXT const *>( &rhs ) )
91397     {}
91398 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
91399 
91400     VideoEncodeH265RateControlLayerInfoEXT &
91401       operator=( VideoEncodeH265RateControlLayerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
91402 
91403     VideoEncodeH265RateControlLayerInfoEXT &
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoEXT91404       operator=( VkVideoEncodeH265RateControlLayerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
91405     {
91406       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoEXT const *>( &rhs );
91407       return *this;
91408     }
91409 
91410 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoEXT91411     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
91412     {
91413       pNext = pNext_;
91414       return *this;
91415     }
91416 
91417     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoEXT &
setTemporalIdVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoEXT91418                             setTemporalId( uint8_t temporalId_ ) VULKAN_HPP_NOEXCEPT
91419     {
91420       temporalId = temporalId_;
91421       return *this;
91422     }
91423 
91424     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoEXT &
setUseInitialRcQpVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoEXT91425                             setUseInitialRcQp( VULKAN_HPP_NAMESPACE::Bool32 useInitialRcQp_ ) VULKAN_HPP_NOEXCEPT
91426     {
91427       useInitialRcQp = useInitialRcQp_;
91428       return *this;
91429     }
91430 
91431     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoEXT &
setInitialRcQpVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoEXT91432       setInitialRcQp( VULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT const & initialRcQp_ ) VULKAN_HPP_NOEXCEPT
91433     {
91434       initialRcQp = initialRcQp_;
91435       return *this;
91436     }
91437 
91438     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoEXT &
setUseMinQpVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoEXT91439                             setUseMinQp( VULKAN_HPP_NAMESPACE::Bool32 useMinQp_ ) VULKAN_HPP_NOEXCEPT
91440     {
91441       useMinQp = useMinQp_;
91442       return *this;
91443     }
91444 
91445     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoEXT &
setMinQpVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoEXT91446                             setMinQp( VULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT const & minQp_ ) VULKAN_HPP_NOEXCEPT
91447     {
91448       minQp = minQp_;
91449       return *this;
91450     }
91451 
91452     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoEXT &
setUseMaxQpVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoEXT91453                             setUseMaxQp( VULKAN_HPP_NAMESPACE::Bool32 useMaxQp_ ) VULKAN_HPP_NOEXCEPT
91454     {
91455       useMaxQp = useMaxQp_;
91456       return *this;
91457     }
91458 
91459     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoEXT &
setMaxQpVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoEXT91460                             setMaxQp( VULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT const & maxQp_ ) VULKAN_HPP_NOEXCEPT
91461     {
91462       maxQp = maxQp_;
91463       return *this;
91464     }
91465 
91466     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoEXT &
setUseMaxFrameSizeVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoEXT91467                             setUseMaxFrameSize( VULKAN_HPP_NAMESPACE::Bool32 useMaxFrameSize_ ) VULKAN_HPP_NOEXCEPT
91468     {
91469       useMaxFrameSize = useMaxFrameSize_;
91470       return *this;
91471     }
91472 
91473     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoEXT &
setMaxFrameSizeVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoEXT91474       setMaxFrameSize( VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeEXT const & maxFrameSize_ ) VULKAN_HPP_NOEXCEPT
91475     {
91476       maxFrameSize = maxFrameSize_;
91477       return *this;
91478     }
91479 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
91480 
operator VkVideoEncodeH265RateControlLayerInfoEXT const&VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoEXT91481     explicit operator VkVideoEncodeH265RateControlLayerInfoEXT const &() const VULKAN_HPP_NOEXCEPT
91482     {
91483       return *reinterpret_cast<const VkVideoEncodeH265RateControlLayerInfoEXT *>( this );
91484     }
91485 
operator VkVideoEncodeH265RateControlLayerInfoEXT&VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoEXT91486     explicit operator VkVideoEncodeH265RateControlLayerInfoEXT &() VULKAN_HPP_NOEXCEPT
91487     {
91488       return *reinterpret_cast<VkVideoEncodeH265RateControlLayerInfoEXT *>( this );
91489     }
91490 
91491 #  if 14 <= VULKAN_HPP_CPP_VERSION
91492     auto
91493 #  else
91494     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
91495                const void * const &,
91496                uint8_t const &,
91497                VULKAN_HPP_NAMESPACE::Bool32 const &,
91498                VULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT const &,
91499                VULKAN_HPP_NAMESPACE::Bool32 const &,
91500                VULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT const &,
91501                VULKAN_HPP_NAMESPACE::Bool32 const &,
91502                VULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT const &,
91503                VULKAN_HPP_NAMESPACE::Bool32 const &,
91504                VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeEXT const &>
91505 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoEXT91506       reflect() const VULKAN_HPP_NOEXCEPT
91507     {
91508       return std::tie( sType,
91509                        pNext,
91510                        temporalId,
91511                        useInitialRcQp,
91512                        initialRcQp,
91513                        useMinQp,
91514                        minQp,
91515                        useMaxQp,
91516                        maxQp,
91517                        useMaxFrameSize,
91518                        maxFrameSize );
91519     }
91520 
91521 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
91522     auto operator<=>( VideoEncodeH265RateControlLayerInfoEXT const & ) const = default;
91523 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoEXT91524     bool operator==( VideoEncodeH265RateControlLayerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
91525     {
91526       return this->reflect() == rhs.reflect();
91527     }
91528 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoEXT91529     bool operator!=( VideoEncodeH265RateControlLayerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
91530     {
91531       return this->reflect() != rhs.reflect();
91532     }
91533 #  endif
91534 
91535   public:
91536     VULKAN_HPP_NAMESPACE::StructureType               sType = StructureType::eVideoEncodeH265RateControlLayerInfoEXT;
91537     const void *                                      pNext = {};
91538     uint8_t                                           temporalId      = {};
91539     VULKAN_HPP_NAMESPACE::Bool32                      useInitialRcQp  = {};
91540     VULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT        initialRcQp     = {};
91541     VULKAN_HPP_NAMESPACE::Bool32                      useMinQp        = {};
91542     VULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT        minQp           = {};
91543     VULKAN_HPP_NAMESPACE::Bool32                      useMaxQp        = {};
91544     VULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT        maxQp           = {};
91545     VULKAN_HPP_NAMESPACE::Bool32                      useMaxFrameSize = {};
91546     VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeEXT maxFrameSize    = {};
91547   };
91548   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoEXT ) ==
91549                               sizeof( VkVideoEncodeH265RateControlLayerInfoEXT ),
91550                             "struct and wrapper have different size!" );
91551   VULKAN_HPP_STATIC_ASSERT(
91552     std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoEXT>::value,
91553     "struct wrapper is not a standard layout!" );
91554   VULKAN_HPP_STATIC_ASSERT(
91555     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoEXT>::value,
91556     "VideoEncodeH265RateControlLayerInfoEXT is not nothrow_move_constructible!" );
91557 
91558   template <>
91559   struct CppType<StructureType, StructureType::eVideoEncodeH265RateControlLayerInfoEXT>
91560   {
91561     using Type = VideoEncodeH265RateControlLayerInfoEXT;
91562   };
91563 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
91564 
91565 #if defined( VK_ENABLE_BETA_EXTENSIONS )
91566   struct VideoEncodeH265SessionCreateInfoEXT
91567   {
91568     using NativeType = VkVideoEncodeH265SessionCreateInfoEXT;
91569 
91570     static const bool                                  allowDuplicate = false;
91571     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
91572       StructureType::eVideoEncodeH265SessionCreateInfoEXT;
91573 
91574 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265SessionCreateInfoEXTVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoEXT91575     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionCreateInfoEXT(
91576       VULKAN_HPP_NAMESPACE::VideoEncodeH265CreateFlagsEXT flags_                = {},
91577       const VULKAN_HPP_NAMESPACE::ExtensionProperties *   pStdExtensionVersion_ = {} ) VULKAN_HPP_NOEXCEPT
91578       : flags( flags_ )
91579       , pStdExtensionVersion( pStdExtensionVersion_ )
91580     {}
91581 
91582     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionCreateInfoEXT( VideoEncodeH265SessionCreateInfoEXT const & rhs )
91583       VULKAN_HPP_NOEXCEPT = default;
91584 
VideoEncodeH265SessionCreateInfoEXTVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoEXT91585     VideoEncodeH265SessionCreateInfoEXT( VkVideoEncodeH265SessionCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
91586       : VideoEncodeH265SessionCreateInfoEXT( *reinterpret_cast<VideoEncodeH265SessionCreateInfoEXT const *>( &rhs ) )
91587     {}
91588 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
91589 
91590     VideoEncodeH265SessionCreateInfoEXT &
91591       operator=( VideoEncodeH265SessionCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
91592 
91593     VideoEncodeH265SessionCreateInfoEXT &
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoEXT91594       operator=( VkVideoEncodeH265SessionCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
91595     {
91596       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoEXT const *>( &rhs );
91597       return *this;
91598     }
91599 
91600 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoEXT91601     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
91602     {
91603       pNext = pNext_;
91604       return *this;
91605     }
91606 
91607     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionCreateInfoEXT &
setFlagsVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoEXT91608                             setFlags( VULKAN_HPP_NAMESPACE::VideoEncodeH265CreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
91609     {
91610       flags = flags_;
91611       return *this;
91612     }
91613 
setPStdExtensionVersionVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoEXT91614     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionCreateInfoEXT & setPStdExtensionVersion(
91615       const VULKAN_HPP_NAMESPACE::ExtensionProperties * pStdExtensionVersion_ ) VULKAN_HPP_NOEXCEPT
91616     {
91617       pStdExtensionVersion = pStdExtensionVersion_;
91618       return *this;
91619     }
91620 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
91621 
operator VkVideoEncodeH265SessionCreateInfoEXT const&VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoEXT91622     explicit operator VkVideoEncodeH265SessionCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
91623     {
91624       return *reinterpret_cast<const VkVideoEncodeH265SessionCreateInfoEXT *>( this );
91625     }
91626 
operator VkVideoEncodeH265SessionCreateInfoEXT&VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoEXT91627     explicit operator VkVideoEncodeH265SessionCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
91628     {
91629       return *reinterpret_cast<VkVideoEncodeH265SessionCreateInfoEXT *>( this );
91630     }
91631 
91632 #  if 14 <= VULKAN_HPP_CPP_VERSION
91633     auto
91634 #  else
91635     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
91636                const void * const &,
91637                VULKAN_HPP_NAMESPACE::VideoEncodeH265CreateFlagsEXT const &,
91638                const VULKAN_HPP_NAMESPACE::ExtensionProperties * const &>
91639 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoEXT91640       reflect() const VULKAN_HPP_NOEXCEPT
91641     {
91642       return std::tie( sType, pNext, flags, pStdExtensionVersion );
91643     }
91644 
91645 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
91646     auto operator<=>( VideoEncodeH265SessionCreateInfoEXT const & ) const = default;
91647 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoEXT91648     bool operator==( VideoEncodeH265SessionCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
91649     {
91650       return this->reflect() == rhs.reflect();
91651     }
91652 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoEXT91653     bool operator!=( VideoEncodeH265SessionCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
91654     {
91655       return this->reflect() != rhs.reflect();
91656     }
91657 #  endif
91658 
91659   public:
91660     VULKAN_HPP_NAMESPACE::StructureType                 sType = StructureType::eVideoEncodeH265SessionCreateInfoEXT;
91661     const void *                                        pNext = {};
91662     VULKAN_HPP_NAMESPACE::VideoEncodeH265CreateFlagsEXT flags = {};
91663     const VULKAN_HPP_NAMESPACE::ExtensionProperties *   pStdExtensionVersion = {};
91664   };
91665   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoEXT ) ==
91666                               sizeof( VkVideoEncodeH265SessionCreateInfoEXT ),
91667                             "struct and wrapper have different size!" );
91668   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoEXT>::value,
91669                             "struct wrapper is not a standard layout!" );
91670   VULKAN_HPP_STATIC_ASSERT(
91671     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoEXT>::value,
91672     "VideoEncodeH265SessionCreateInfoEXT is not nothrow_move_constructible!" );
91673 
91674   template <>
91675   struct CppType<StructureType, StructureType::eVideoEncodeH265SessionCreateInfoEXT>
91676   {
91677     using Type = VideoEncodeH265SessionCreateInfoEXT;
91678   };
91679 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
91680 
91681 #if defined( VK_ENABLE_BETA_EXTENSIONS )
91682   struct VideoEncodeH265SessionParametersAddInfoEXT
91683   {
91684     using NativeType = VkVideoEncodeH265SessionParametersAddInfoEXT;
91685 
91686     static const bool                                  allowDuplicate = false;
91687     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
91688       StructureType::eVideoEncodeH265SessionParametersAddInfoEXT;
91689 
91690 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265SessionParametersAddInfoEXTVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoEXT91691     VULKAN_HPP_CONSTEXPR VideoEncodeH265SessionParametersAddInfoEXT(
91692       uint32_t                                 vpsStdCount_ = {},
91693       const StdVideoH265VideoParameterSet *    pVpsStd_     = {},
91694       uint32_t                                 spsStdCount_ = {},
91695       const StdVideoH265SequenceParameterSet * pSpsStd_     = {},
91696       uint32_t                                 ppsStdCount_ = {},
91697       const StdVideoH265PictureParameterSet *  pPpsStd_     = {} ) VULKAN_HPP_NOEXCEPT
91698       : vpsStdCount( vpsStdCount_ )
91699       , pVpsStd( pVpsStd_ )
91700       , spsStdCount( spsStdCount_ )
91701       , pSpsStd( pSpsStd_ )
91702       , ppsStdCount( ppsStdCount_ )
91703       , pPpsStd( pPpsStd_ )
91704     {}
91705 
91706     VULKAN_HPP_CONSTEXPR VideoEncodeH265SessionParametersAddInfoEXT(
91707       VideoEncodeH265SessionParametersAddInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
91708 
VideoEncodeH265SessionParametersAddInfoEXTVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoEXT91709     VideoEncodeH265SessionParametersAddInfoEXT( VkVideoEncodeH265SessionParametersAddInfoEXT const & rhs )
91710       VULKAN_HPP_NOEXCEPT
91711       : VideoEncodeH265SessionParametersAddInfoEXT(
91712           *reinterpret_cast<VideoEncodeH265SessionParametersAddInfoEXT const *>( &rhs ) )
91713     {}
91714 
91715 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoEncodeH265SessionParametersAddInfoEXTVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoEXT91716     VideoEncodeH265SessionParametersAddInfoEXT(
91717       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH265VideoParameterSet> const &    vpsStd_,
91718       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH265SequenceParameterSet> const & spsStd_ = {},
91719       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH265PictureParameterSet> const &  ppsStd_ = {} )
91720       : vpsStdCount( static_cast<uint32_t>( vpsStd_.size() ) )
91721       , pVpsStd( vpsStd_.data() )
91722       , spsStdCount( static_cast<uint32_t>( spsStd_.size() ) )
91723       , pSpsStd( spsStd_.data() )
91724       , ppsStdCount( static_cast<uint32_t>( ppsStd_.size() ) )
91725       , pPpsStd( ppsStd_.data() )
91726     {}
91727 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
91728 #  endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
91729 
91730     VideoEncodeH265SessionParametersAddInfoEXT &
91731       operator=( VideoEncodeH265SessionParametersAddInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
91732 
91733     VideoEncodeH265SessionParametersAddInfoEXT &
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoEXT91734       operator=( VkVideoEncodeH265SessionParametersAddInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
91735     {
91736       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoEXT const *>( &rhs );
91737       return *this;
91738     }
91739 
91740 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
91741     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoEXT &
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoEXT91742                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
91743     {
91744       pNext = pNext_;
91745       return *this;
91746     }
91747 
91748     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoEXT &
setVpsStdCountVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoEXT91749                             setVpsStdCount( uint32_t vpsStdCount_ ) VULKAN_HPP_NOEXCEPT
91750     {
91751       vpsStdCount = vpsStdCount_;
91752       return *this;
91753     }
91754 
91755     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoEXT &
setPVpsStdVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoEXT91756                             setPVpsStd( const StdVideoH265VideoParameterSet * pVpsStd_ ) VULKAN_HPP_NOEXCEPT
91757     {
91758       pVpsStd = pVpsStd_;
91759       return *this;
91760     }
91761 
91762 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
91763     VideoEncodeH265SessionParametersAddInfoEXT &
setVpsStdVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoEXT91764       setVpsStd( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH265VideoParameterSet> const & vpsStd_ )
91765         VULKAN_HPP_NOEXCEPT
91766     {
91767       vpsStdCount = static_cast<uint32_t>( vpsStd_.size() );
91768       pVpsStd     = vpsStd_.data();
91769       return *this;
91770     }
91771 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
91772 
91773     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoEXT &
setSpsStdCountVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoEXT91774                             setSpsStdCount( uint32_t spsStdCount_ ) VULKAN_HPP_NOEXCEPT
91775     {
91776       spsStdCount = spsStdCount_;
91777       return *this;
91778     }
91779 
91780     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoEXT &
setPSpsStdVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoEXT91781                             setPSpsStd( const StdVideoH265SequenceParameterSet * pSpsStd_ ) VULKAN_HPP_NOEXCEPT
91782     {
91783       pSpsStd = pSpsStd_;
91784       return *this;
91785     }
91786 
91787 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
91788     VideoEncodeH265SessionParametersAddInfoEXT &
setSpsStdVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoEXT91789       setSpsStd( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH265SequenceParameterSet> const & spsStd_ )
91790         VULKAN_HPP_NOEXCEPT
91791     {
91792       spsStdCount = static_cast<uint32_t>( spsStd_.size() );
91793       pSpsStd     = spsStd_.data();
91794       return *this;
91795     }
91796 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
91797 
91798     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoEXT &
setPpsStdCountVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoEXT91799                             setPpsStdCount( uint32_t ppsStdCount_ ) VULKAN_HPP_NOEXCEPT
91800     {
91801       ppsStdCount = ppsStdCount_;
91802       return *this;
91803     }
91804 
91805     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoEXT &
setPPpsStdVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoEXT91806                             setPPpsStd( const StdVideoH265PictureParameterSet * pPpsStd_ ) VULKAN_HPP_NOEXCEPT
91807     {
91808       pPpsStd = pPpsStd_;
91809       return *this;
91810     }
91811 
91812 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
91813     VideoEncodeH265SessionParametersAddInfoEXT &
setPpsStdVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoEXT91814       setPpsStd( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH265PictureParameterSet> const & ppsStd_ )
91815         VULKAN_HPP_NOEXCEPT
91816     {
91817       ppsStdCount = static_cast<uint32_t>( ppsStd_.size() );
91818       pPpsStd     = ppsStd_.data();
91819       return *this;
91820     }
91821 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
91822 #  endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
91823 
operator VkVideoEncodeH265SessionParametersAddInfoEXT const&VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoEXT91824     explicit operator VkVideoEncodeH265SessionParametersAddInfoEXT const &() const VULKAN_HPP_NOEXCEPT
91825     {
91826       return *reinterpret_cast<const VkVideoEncodeH265SessionParametersAddInfoEXT *>( this );
91827     }
91828 
operator VkVideoEncodeH265SessionParametersAddInfoEXT&VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoEXT91829     explicit operator VkVideoEncodeH265SessionParametersAddInfoEXT &() VULKAN_HPP_NOEXCEPT
91830     {
91831       return *reinterpret_cast<VkVideoEncodeH265SessionParametersAddInfoEXT *>( this );
91832     }
91833 
91834 #  if 14 <= VULKAN_HPP_CPP_VERSION
91835     auto
91836 #  else
91837     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
91838                const void * const &,
91839                uint32_t const &,
91840                const StdVideoH265VideoParameterSet * const &,
91841                uint32_t const &,
91842                const StdVideoH265SequenceParameterSet * const &,
91843                uint32_t const &,
91844                const StdVideoH265PictureParameterSet * const &>
91845 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoEXT91846       reflect() const VULKAN_HPP_NOEXCEPT
91847     {
91848       return std::tie( sType, pNext, vpsStdCount, pVpsStd, spsStdCount, pSpsStd, ppsStdCount, pPpsStd );
91849     }
91850 
91851 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
91852     auto operator<=>( VideoEncodeH265SessionParametersAddInfoEXT const & ) const = default;
91853 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoEXT91854     bool operator==( VideoEncodeH265SessionParametersAddInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
91855     {
91856       return this->reflect() == rhs.reflect();
91857     }
91858 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoEXT91859     bool operator!=( VideoEncodeH265SessionParametersAddInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
91860     {
91861       return this->reflect() != rhs.reflect();
91862     }
91863 #  endif
91864 
91865   public:
91866     VULKAN_HPP_NAMESPACE::StructureType      sType       = StructureType::eVideoEncodeH265SessionParametersAddInfoEXT;
91867     const void *                             pNext       = {};
91868     uint32_t                                 vpsStdCount = {};
91869     const StdVideoH265VideoParameterSet *    pVpsStd     = {};
91870     uint32_t                                 spsStdCount = {};
91871     const StdVideoH265SequenceParameterSet * pSpsStd     = {};
91872     uint32_t                                 ppsStdCount = {};
91873     const StdVideoH265PictureParameterSet *  pPpsStd     = {};
91874   };
91875   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoEXT ) ==
91876                               sizeof( VkVideoEncodeH265SessionParametersAddInfoEXT ),
91877                             "struct and wrapper have different size!" );
91878   VULKAN_HPP_STATIC_ASSERT(
91879     std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoEXT>::value,
91880     "struct wrapper is not a standard layout!" );
91881   VULKAN_HPP_STATIC_ASSERT(
91882     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoEXT>::value,
91883     "VideoEncodeH265SessionParametersAddInfoEXT is not nothrow_move_constructible!" );
91884 
91885   template <>
91886   struct CppType<StructureType, StructureType::eVideoEncodeH265SessionParametersAddInfoEXT>
91887   {
91888     using Type = VideoEncodeH265SessionParametersAddInfoEXT;
91889   };
91890 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
91891 
91892 #if defined( VK_ENABLE_BETA_EXTENSIONS )
91893   struct VideoEncodeH265SessionParametersCreateInfoEXT
91894   {
91895     using NativeType = VkVideoEncodeH265SessionParametersCreateInfoEXT;
91896 
91897     static const bool                                  allowDuplicate = false;
91898     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
91899       StructureType::eVideoEncodeH265SessionParametersCreateInfoEXT;
91900 
91901 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265SessionParametersCreateInfoEXTVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoEXT91902     VULKAN_HPP_CONSTEXPR VideoEncodeH265SessionParametersCreateInfoEXT(
91903       uint32_t                                                                 maxVpsStdCount_     = {},
91904       uint32_t                                                                 maxSpsStdCount_     = {},
91905       uint32_t                                                                 maxPpsStdCount_     = {},
91906       const VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoEXT * pParametersAddInfo_ = {} )
91907       VULKAN_HPP_NOEXCEPT
91908       : maxVpsStdCount( maxVpsStdCount_ )
91909       , maxSpsStdCount( maxSpsStdCount_ )
91910       , maxPpsStdCount( maxPpsStdCount_ )
91911       , pParametersAddInfo( pParametersAddInfo_ )
91912     {}
91913 
91914     VULKAN_HPP_CONSTEXPR VideoEncodeH265SessionParametersCreateInfoEXT(
91915       VideoEncodeH265SessionParametersCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
91916 
VideoEncodeH265SessionParametersCreateInfoEXTVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoEXT91917     VideoEncodeH265SessionParametersCreateInfoEXT( VkVideoEncodeH265SessionParametersCreateInfoEXT const & rhs )
91918       VULKAN_HPP_NOEXCEPT
91919       : VideoEncodeH265SessionParametersCreateInfoEXT(
91920           *reinterpret_cast<VideoEncodeH265SessionParametersCreateInfoEXT const *>( &rhs ) )
91921     {}
91922 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
91923 
91924     VideoEncodeH265SessionParametersCreateInfoEXT &
91925       operator=( VideoEncodeH265SessionParametersCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
91926 
91927     VideoEncodeH265SessionParametersCreateInfoEXT &
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoEXT91928       operator=( VkVideoEncodeH265SessionParametersCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
91929     {
91930       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoEXT const *>( &rhs );
91931       return *this;
91932     }
91933 
91934 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
91935     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersCreateInfoEXT &
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoEXT91936                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
91937     {
91938       pNext = pNext_;
91939       return *this;
91940     }
91941 
91942     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersCreateInfoEXT &
setMaxVpsStdCountVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoEXT91943                             setMaxVpsStdCount( uint32_t maxVpsStdCount_ ) VULKAN_HPP_NOEXCEPT
91944     {
91945       maxVpsStdCount = maxVpsStdCount_;
91946       return *this;
91947     }
91948 
91949     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersCreateInfoEXT &
setMaxSpsStdCountVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoEXT91950                             setMaxSpsStdCount( uint32_t maxSpsStdCount_ ) VULKAN_HPP_NOEXCEPT
91951     {
91952       maxSpsStdCount = maxSpsStdCount_;
91953       return *this;
91954     }
91955 
91956     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersCreateInfoEXT &
setMaxPpsStdCountVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoEXT91957                             setMaxPpsStdCount( uint32_t maxPpsStdCount_ ) VULKAN_HPP_NOEXCEPT
91958     {
91959       maxPpsStdCount = maxPpsStdCount_;
91960       return *this;
91961     }
91962 
setPParametersAddInfoVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoEXT91963     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersCreateInfoEXT & setPParametersAddInfo(
91964       const VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoEXT * pParametersAddInfo_ ) VULKAN_HPP_NOEXCEPT
91965     {
91966       pParametersAddInfo = pParametersAddInfo_;
91967       return *this;
91968     }
91969 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
91970 
operator VkVideoEncodeH265SessionParametersCreateInfoEXT const&VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoEXT91971     explicit operator VkVideoEncodeH265SessionParametersCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
91972     {
91973       return *reinterpret_cast<const VkVideoEncodeH265SessionParametersCreateInfoEXT *>( this );
91974     }
91975 
operator VkVideoEncodeH265SessionParametersCreateInfoEXT&VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoEXT91976     explicit operator VkVideoEncodeH265SessionParametersCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
91977     {
91978       return *reinterpret_cast<VkVideoEncodeH265SessionParametersCreateInfoEXT *>( this );
91979     }
91980 
91981 #  if 14 <= VULKAN_HPP_CPP_VERSION
91982     auto
91983 #  else
91984     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
91985                const void * const &,
91986                uint32_t const &,
91987                uint32_t const &,
91988                uint32_t const &,
91989                const VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoEXT * const &>
91990 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoEXT91991       reflect() const VULKAN_HPP_NOEXCEPT
91992     {
91993       return std::tie( sType, pNext, maxVpsStdCount, maxSpsStdCount, maxPpsStdCount, pParametersAddInfo );
91994     }
91995 
91996 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
91997     auto operator<=>( VideoEncodeH265SessionParametersCreateInfoEXT const & ) const = default;
91998 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoEXT91999     bool operator==( VideoEncodeH265SessionParametersCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
92000     {
92001       return this->reflect() == rhs.reflect();
92002     }
92003 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoEXT92004     bool operator!=( VideoEncodeH265SessionParametersCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
92005     {
92006       return this->reflect() != rhs.reflect();
92007     }
92008 #  endif
92009 
92010   public:
92011     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eVideoEncodeH265SessionParametersCreateInfoEXT;
92012     const void *                        pNext          = {};
92013     uint32_t                            maxVpsStdCount = {};
92014     uint32_t                            maxSpsStdCount = {};
92015     uint32_t                            maxPpsStdCount = {};
92016     const VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoEXT * pParametersAddInfo = {};
92017   };
92018   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoEXT ) ==
92019                               sizeof( VkVideoEncodeH265SessionParametersCreateInfoEXT ),
92020                             "struct and wrapper have different size!" );
92021   VULKAN_HPP_STATIC_ASSERT(
92022     std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoEXT>::value,
92023     "struct wrapper is not a standard layout!" );
92024   VULKAN_HPP_STATIC_ASSERT(
92025     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoEXT>::value,
92026     "VideoEncodeH265SessionParametersCreateInfoEXT is not nothrow_move_constructible!" );
92027 
92028   template <>
92029   struct CppType<StructureType, StructureType::eVideoEncodeH265SessionParametersCreateInfoEXT>
92030   {
92031     using Type = VideoEncodeH265SessionParametersCreateInfoEXT;
92032   };
92033 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
92034 
92035 #if defined( VK_ENABLE_BETA_EXTENSIONS )
92036   struct VideoEncodeH265VclFrameInfoEXT
92037   {
92038     using NativeType = VkVideoEncodeH265VclFrameInfoEXT;
92039 
92040     static const bool                                  allowDuplicate = false;
92041     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH265VclFrameInfoEXT;
92042 
92043 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265VclFrameInfoEXTVULKAN_HPP_NAMESPACE::VideoEncodeH265VclFrameInfoEXT92044     VULKAN_HPP_CONSTEXPR VideoEncodeH265VclFrameInfoEXT(
92045       const VULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT * pReferenceFinalLists_ = {},
92046       uint32_t                                                       naluSliceEntryCount_  = {},
92047       const VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceEXT *      pNaluSliceEntries_    = {},
92048       const StdVideoEncodeH265PictureInfo *                          pCurrentPictureInfo_  = {} ) VULKAN_HPP_NOEXCEPT
92049       : pReferenceFinalLists( pReferenceFinalLists_ )
92050       , naluSliceEntryCount( naluSliceEntryCount_ )
92051       , pNaluSliceEntries( pNaluSliceEntries_ )
92052       , pCurrentPictureInfo( pCurrentPictureInfo_ )
92053     {}
92054 
92055     VULKAN_HPP_CONSTEXPR
92056       VideoEncodeH265VclFrameInfoEXT( VideoEncodeH265VclFrameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
92057 
VideoEncodeH265VclFrameInfoEXTVULKAN_HPP_NAMESPACE::VideoEncodeH265VclFrameInfoEXT92058     VideoEncodeH265VclFrameInfoEXT( VkVideoEncodeH265VclFrameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
92059       : VideoEncodeH265VclFrameInfoEXT( *reinterpret_cast<VideoEncodeH265VclFrameInfoEXT const *>( &rhs ) )
92060     {}
92061 
92062 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoEncodeH265VclFrameInfoEXTVULKAN_HPP_NAMESPACE::VideoEncodeH265VclFrameInfoEXT92063     VideoEncodeH265VclFrameInfoEXT(
92064       const VULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT * pReferenceFinalLists_,
92065       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceEXT> const &
92066                                             naluSliceEntries_,
92067       const StdVideoEncodeH265PictureInfo * pCurrentPictureInfo_ = {} )
92068       : pReferenceFinalLists( pReferenceFinalLists_ )
92069       , naluSliceEntryCount( static_cast<uint32_t>( naluSliceEntries_.size() ) )
92070       , pNaluSliceEntries( naluSliceEntries_.data() )
92071       , pCurrentPictureInfo( pCurrentPictureInfo_ )
92072     {}
92073 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
92074 #  endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
92075 
92076     VideoEncodeH265VclFrameInfoEXT &
92077       operator=( VideoEncodeH265VclFrameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
92078 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265VclFrameInfoEXT92079     VideoEncodeH265VclFrameInfoEXT & operator=( VkVideoEncodeH265VclFrameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
92080     {
92081       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265VclFrameInfoEXT const *>( &rhs );
92082       return *this;
92083     }
92084 
92085 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH265VclFrameInfoEXT92086     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265VclFrameInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
92087     {
92088       pNext = pNext_;
92089       return *this;
92090     }
92091 
setPReferenceFinalListsVULKAN_HPP_NAMESPACE::VideoEncodeH265VclFrameInfoEXT92092     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265VclFrameInfoEXT & setPReferenceFinalLists(
92093       const VULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT * pReferenceFinalLists_ ) VULKAN_HPP_NOEXCEPT
92094     {
92095       pReferenceFinalLists = pReferenceFinalLists_;
92096       return *this;
92097     }
92098 
92099     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265VclFrameInfoEXT &
setNaluSliceEntryCountVULKAN_HPP_NAMESPACE::VideoEncodeH265VclFrameInfoEXT92100                             setNaluSliceEntryCount( uint32_t naluSliceEntryCount_ ) VULKAN_HPP_NOEXCEPT
92101     {
92102       naluSliceEntryCount = naluSliceEntryCount_;
92103       return *this;
92104     }
92105 
setPNaluSliceEntriesVULKAN_HPP_NAMESPACE::VideoEncodeH265VclFrameInfoEXT92106     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265VclFrameInfoEXT & setPNaluSliceEntries(
92107       const VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceEXT * pNaluSliceEntries_ ) VULKAN_HPP_NOEXCEPT
92108     {
92109       pNaluSliceEntries = pNaluSliceEntries_;
92110       return *this;
92111     }
92112 
92113 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setNaluSliceEntriesVULKAN_HPP_NAMESPACE::VideoEncodeH265VclFrameInfoEXT92114     VideoEncodeH265VclFrameInfoEXT & setNaluSliceEntries(
92115       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceEXT> const &
92116         naluSliceEntries_ ) VULKAN_HPP_NOEXCEPT
92117     {
92118       naluSliceEntryCount = static_cast<uint32_t>( naluSliceEntries_.size() );
92119       pNaluSliceEntries   = naluSliceEntries_.data();
92120       return *this;
92121     }
92122 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
92123 
92124     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265VclFrameInfoEXT &
setPCurrentPictureInfoVULKAN_HPP_NAMESPACE::VideoEncodeH265VclFrameInfoEXT92125       setPCurrentPictureInfo( const StdVideoEncodeH265PictureInfo * pCurrentPictureInfo_ ) VULKAN_HPP_NOEXCEPT
92126     {
92127       pCurrentPictureInfo = pCurrentPictureInfo_;
92128       return *this;
92129     }
92130 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
92131 
operator VkVideoEncodeH265VclFrameInfoEXT const&VULKAN_HPP_NAMESPACE::VideoEncodeH265VclFrameInfoEXT92132     explicit operator VkVideoEncodeH265VclFrameInfoEXT const &() const VULKAN_HPP_NOEXCEPT
92133     {
92134       return *reinterpret_cast<const VkVideoEncodeH265VclFrameInfoEXT *>( this );
92135     }
92136 
operator VkVideoEncodeH265VclFrameInfoEXT&VULKAN_HPP_NAMESPACE::VideoEncodeH265VclFrameInfoEXT92137     explicit operator VkVideoEncodeH265VclFrameInfoEXT &() VULKAN_HPP_NOEXCEPT
92138     {
92139       return *reinterpret_cast<VkVideoEncodeH265VclFrameInfoEXT *>( this );
92140     }
92141 
92142 #  if 14 <= VULKAN_HPP_CPP_VERSION
92143     auto
92144 #  else
92145     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
92146                const void * const &,
92147                const VULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT * const &,
92148                uint32_t const &,
92149                const VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceEXT * const &,
92150                const StdVideoEncodeH265PictureInfo * const &>
92151 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265VclFrameInfoEXT92152       reflect() const VULKAN_HPP_NOEXCEPT
92153     {
92154       return std::tie(
92155         sType, pNext, pReferenceFinalLists, naluSliceEntryCount, pNaluSliceEntries, pCurrentPictureInfo );
92156     }
92157 
92158 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
92159     auto operator<=>( VideoEncodeH265VclFrameInfoEXT const & ) const = default;
92160 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265VclFrameInfoEXT92161     bool operator==( VideoEncodeH265VclFrameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
92162     {
92163       return this->reflect() == rhs.reflect();
92164     }
92165 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265VclFrameInfoEXT92166     bool operator!=( VideoEncodeH265VclFrameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
92167     {
92168       return this->reflect() != rhs.reflect();
92169     }
92170 #  endif
92171 
92172   public:
92173     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoEncodeH265VclFrameInfoEXT;
92174     const void *                        pNext = {};
92175     const VULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT * pReferenceFinalLists = {};
92176     uint32_t                                                       naluSliceEntryCount  = {};
92177     const VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceEXT *      pNaluSliceEntries    = {};
92178     const StdVideoEncodeH265PictureInfo *                          pCurrentPictureInfo  = {};
92179   };
92180   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265VclFrameInfoEXT ) ==
92181                               sizeof( VkVideoEncodeH265VclFrameInfoEXT ),
92182                             "struct and wrapper have different size!" );
92183   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoEncodeH265VclFrameInfoEXT>::value,
92184                             "struct wrapper is not a standard layout!" );
92185   VULKAN_HPP_STATIC_ASSERT(
92186     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoEncodeH265VclFrameInfoEXT>::value,
92187     "VideoEncodeH265VclFrameInfoEXT is not nothrow_move_constructible!" );
92188 
92189   template <>
92190   struct CppType<StructureType, StructureType::eVideoEncodeH265VclFrameInfoEXT>
92191   {
92192     using Type = VideoEncodeH265VclFrameInfoEXT;
92193   };
92194 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
92195 
92196 #if defined( VK_ENABLE_BETA_EXTENSIONS )
92197   struct VideoEncodeInfoKHR
92198   {
92199     using NativeType = VkVideoEncodeInfoKHR;
92200 
92201     static const bool                                  allowDuplicate = false;
92202     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeInfoKHR;
92203 
92204 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
92205     VULKAN_HPP_CONSTEXPR
VideoEncodeInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR92206       VideoEncodeInfoKHR( VULKAN_HPP_NAMESPACE::VideoEncodeFlagsKHR           flags_                      = {},
92207                           uint32_t                                            qualityLevel_               = {},
92208                           VULKAN_HPP_NAMESPACE::Extent2D                      codedExtent_                = {},
92209                           VULKAN_HPP_NAMESPACE::Buffer                        dstBitstreamBuffer_         = {},
92210                           VULKAN_HPP_NAMESPACE::DeviceSize                    dstBitstreamBufferOffset_   = {},
92211                           VULKAN_HPP_NAMESPACE::DeviceSize                    dstBitstreamBufferMaxRange_ = {},
92212                           VULKAN_HPP_NAMESPACE::VideoPictureResourceKHR       srcPictureResource_         = {},
92213                           const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR * pSetupReferenceSlot_        = {},
92214                           uint32_t                                            referenceSlotCount_         = {},
92215                           const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR * pReferenceSlots_            = {},
92216                           uint32_t precedingExternallyEncodedBytes_ = {} ) VULKAN_HPP_NOEXCEPT
92217       : flags( flags_ )
92218       , qualityLevel( qualityLevel_ )
92219       , codedExtent( codedExtent_ )
92220       , dstBitstreamBuffer( dstBitstreamBuffer_ )
92221       , dstBitstreamBufferOffset( dstBitstreamBufferOffset_ )
92222       , dstBitstreamBufferMaxRange( dstBitstreamBufferMaxRange_ )
92223       , srcPictureResource( srcPictureResource_ )
92224       , pSetupReferenceSlot( pSetupReferenceSlot_ )
92225       , referenceSlotCount( referenceSlotCount_ )
92226       , pReferenceSlots( pReferenceSlots_ )
92227       , precedingExternallyEncodedBytes( precedingExternallyEncodedBytes_ )
92228     {}
92229 
92230     VULKAN_HPP_CONSTEXPR VideoEncodeInfoKHR( VideoEncodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
92231 
VideoEncodeInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR92232     VideoEncodeInfoKHR( VkVideoEncodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
92233       : VideoEncodeInfoKHR( *reinterpret_cast<VideoEncodeInfoKHR const *>( &rhs ) )
92234     {}
92235 
92236 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoEncodeInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR92237     VideoEncodeInfoKHR(
92238       VULKAN_HPP_NAMESPACE::VideoEncodeFlagsKHR           flags_,
92239       uint32_t                                            qualityLevel_,
92240       VULKAN_HPP_NAMESPACE::Extent2D                      codedExtent_,
92241       VULKAN_HPP_NAMESPACE::Buffer                        dstBitstreamBuffer_,
92242       VULKAN_HPP_NAMESPACE::DeviceSize                    dstBitstreamBufferOffset_,
92243       VULKAN_HPP_NAMESPACE::DeviceSize                    dstBitstreamBufferMaxRange_,
92244       VULKAN_HPP_NAMESPACE::VideoPictureResourceKHR       srcPictureResource_,
92245       const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR * pSetupReferenceSlot_,
92246       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR> const &
92247                referenceSlots_,
92248       uint32_t precedingExternallyEncodedBytes_ = {} )
92249       : flags( flags_ )
92250       , qualityLevel( qualityLevel_ )
92251       , codedExtent( codedExtent_ )
92252       , dstBitstreamBuffer( dstBitstreamBuffer_ )
92253       , dstBitstreamBufferOffset( dstBitstreamBufferOffset_ )
92254       , dstBitstreamBufferMaxRange( dstBitstreamBufferMaxRange_ )
92255       , srcPictureResource( srcPictureResource_ )
92256       , pSetupReferenceSlot( pSetupReferenceSlot_ )
92257       , referenceSlotCount( static_cast<uint32_t>( referenceSlots_.size() ) )
92258       , pReferenceSlots( referenceSlots_.data() )
92259       , precedingExternallyEncodedBytes( precedingExternallyEncodedBytes_ )
92260     {}
92261 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
92262 #  endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
92263 
92264     VideoEncodeInfoKHR & operator=( VideoEncodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
92265 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR92266     VideoEncodeInfoKHR & operator=( VkVideoEncodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
92267     {
92268       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR const *>( &rhs );
92269       return *this;
92270     }
92271 
92272 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR92273     VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
92274     {
92275       pNext = pNext_;
92276       return *this;
92277     }
92278 
92279     VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR &
setFlagsVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR92280                             setFlags( VULKAN_HPP_NAMESPACE::VideoEncodeFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
92281     {
92282       flags = flags_;
92283       return *this;
92284     }
92285 
setQualityLevelVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR92286     VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & setQualityLevel( uint32_t qualityLevel_ ) VULKAN_HPP_NOEXCEPT
92287     {
92288       qualityLevel = qualityLevel_;
92289       return *this;
92290     }
92291 
92292     VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR &
setCodedExtentVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR92293                             setCodedExtent( VULKAN_HPP_NAMESPACE::Extent2D const & codedExtent_ ) VULKAN_HPP_NOEXCEPT
92294     {
92295       codedExtent = codedExtent_;
92296       return *this;
92297     }
92298 
92299     VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR &
setDstBitstreamBufferVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR92300       setDstBitstreamBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBitstreamBuffer_ ) VULKAN_HPP_NOEXCEPT
92301     {
92302       dstBitstreamBuffer = dstBitstreamBuffer_;
92303       return *this;
92304     }
92305 
92306     VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR &
setDstBitstreamBufferOffsetVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR92307       setDstBitstreamBufferOffset( VULKAN_HPP_NAMESPACE::DeviceSize dstBitstreamBufferOffset_ ) VULKAN_HPP_NOEXCEPT
92308     {
92309       dstBitstreamBufferOffset = dstBitstreamBufferOffset_;
92310       return *this;
92311     }
92312 
92313     VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR &
setDstBitstreamBufferMaxRangeVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR92314       setDstBitstreamBufferMaxRange( VULKAN_HPP_NAMESPACE::DeviceSize dstBitstreamBufferMaxRange_ ) VULKAN_HPP_NOEXCEPT
92315     {
92316       dstBitstreamBufferMaxRange = dstBitstreamBufferMaxRange_;
92317       return *this;
92318     }
92319 
setSrcPictureResourceVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR92320     VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & setSrcPictureResource(
92321       VULKAN_HPP_NAMESPACE::VideoPictureResourceKHR const & srcPictureResource_ ) VULKAN_HPP_NOEXCEPT
92322     {
92323       srcPictureResource = srcPictureResource_;
92324       return *this;
92325     }
92326 
setPSetupReferenceSlotVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR92327     VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & setPSetupReferenceSlot(
92328       const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR * pSetupReferenceSlot_ ) VULKAN_HPP_NOEXCEPT
92329     {
92330       pSetupReferenceSlot = pSetupReferenceSlot_;
92331       return *this;
92332     }
92333 
92334     VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR &
setReferenceSlotCountVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR92335                             setReferenceSlotCount( uint32_t referenceSlotCount_ ) VULKAN_HPP_NOEXCEPT
92336     {
92337       referenceSlotCount = referenceSlotCount_;
92338       return *this;
92339     }
92340 
92341     VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR &
setPReferenceSlotsVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR92342       setPReferenceSlots( const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR * pReferenceSlots_ ) VULKAN_HPP_NOEXCEPT
92343     {
92344       pReferenceSlots = pReferenceSlots_;
92345       return *this;
92346     }
92347 
92348 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setReferenceSlotsVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR92349     VideoEncodeInfoKHR & setReferenceSlots(
92350       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR> const &
92351         referenceSlots_ ) VULKAN_HPP_NOEXCEPT
92352     {
92353       referenceSlotCount = static_cast<uint32_t>( referenceSlots_.size() );
92354       pReferenceSlots    = referenceSlots_.data();
92355       return *this;
92356     }
92357 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
92358 
92359     VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR &
setPrecedingExternallyEncodedBytesVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR92360       setPrecedingExternallyEncodedBytes( uint32_t precedingExternallyEncodedBytes_ ) VULKAN_HPP_NOEXCEPT
92361     {
92362       precedingExternallyEncodedBytes = precedingExternallyEncodedBytes_;
92363       return *this;
92364     }
92365 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
92366 
operator VkVideoEncodeInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR92367     explicit operator VkVideoEncodeInfoKHR const &() const VULKAN_HPP_NOEXCEPT
92368     {
92369       return *reinterpret_cast<const VkVideoEncodeInfoKHR *>( this );
92370     }
92371 
operator VkVideoEncodeInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR92372     explicit operator VkVideoEncodeInfoKHR &() VULKAN_HPP_NOEXCEPT
92373     {
92374       return *reinterpret_cast<VkVideoEncodeInfoKHR *>( this );
92375     }
92376 
92377 #  if 14 <= VULKAN_HPP_CPP_VERSION
92378     auto
92379 #  else
92380     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
92381                const void * const &,
92382                VULKAN_HPP_NAMESPACE::VideoEncodeFlagsKHR const &,
92383                uint32_t const &,
92384                VULKAN_HPP_NAMESPACE::Extent2D const &,
92385                VULKAN_HPP_NAMESPACE::Buffer const &,
92386                VULKAN_HPP_NAMESPACE::DeviceSize const &,
92387                VULKAN_HPP_NAMESPACE::DeviceSize const &,
92388                VULKAN_HPP_NAMESPACE::VideoPictureResourceKHR const &,
92389                const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR * const &,
92390                uint32_t const &,
92391                const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR * const &,
92392                uint32_t const &>
92393 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR92394       reflect() const VULKAN_HPP_NOEXCEPT
92395     {
92396       return std::tie( sType,
92397                        pNext,
92398                        flags,
92399                        qualityLevel,
92400                        codedExtent,
92401                        dstBitstreamBuffer,
92402                        dstBitstreamBufferOffset,
92403                        dstBitstreamBufferMaxRange,
92404                        srcPictureResource,
92405                        pSetupReferenceSlot,
92406                        referenceSlotCount,
92407                        pReferenceSlots,
92408                        precedingExternallyEncodedBytes );
92409     }
92410 
92411 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
92412     auto operator<=>( VideoEncodeInfoKHR const & ) const = default;
92413 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR92414     bool operator==( VideoEncodeInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
92415     {
92416       return this->reflect() == rhs.reflect();
92417     }
92418 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR92419     bool operator!=( VideoEncodeInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
92420     {
92421       return this->reflect() != rhs.reflect();
92422     }
92423 #  endif
92424 
92425   public:
92426     VULKAN_HPP_NAMESPACE::StructureType                 sType                      = StructureType::eVideoEncodeInfoKHR;
92427     const void *                                        pNext                      = {};
92428     VULKAN_HPP_NAMESPACE::VideoEncodeFlagsKHR           flags                      = {};
92429     uint32_t                                            qualityLevel               = {};
92430     VULKAN_HPP_NAMESPACE::Extent2D                      codedExtent                = {};
92431     VULKAN_HPP_NAMESPACE::Buffer                        dstBitstreamBuffer         = {};
92432     VULKAN_HPP_NAMESPACE::DeviceSize                    dstBitstreamBufferOffset   = {};
92433     VULKAN_HPP_NAMESPACE::DeviceSize                    dstBitstreamBufferMaxRange = {};
92434     VULKAN_HPP_NAMESPACE::VideoPictureResourceKHR       srcPictureResource         = {};
92435     const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR * pSetupReferenceSlot        = {};
92436     uint32_t                                            referenceSlotCount         = {};
92437     const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR * pReferenceSlots            = {};
92438     uint32_t                                            precedingExternallyEncodedBytes = {};
92439   };
92440   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR ) == sizeof( VkVideoEncodeInfoKHR ),
92441                             "struct and wrapper have different size!" );
92442   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR>::value,
92443                             "struct wrapper is not a standard layout!" );
92444   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR>::value,
92445                             "VideoEncodeInfoKHR is not nothrow_move_constructible!" );
92446 
92447   template <>
92448   struct CppType<StructureType, StructureType::eVideoEncodeInfoKHR>
92449   {
92450     using Type = VideoEncodeInfoKHR;
92451   };
92452 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
92453 
92454 #if defined( VK_ENABLE_BETA_EXTENSIONS )
92455   struct VideoEncodeRateControlLayerInfoKHR
92456   {
92457     using NativeType = VkVideoEncodeRateControlLayerInfoKHR;
92458 
92459     static const bool                                  allowDuplicate = false;
92460     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
92461       StructureType::eVideoEncodeRateControlLayerInfoKHR;
92462 
92463 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
92464     VULKAN_HPP_CONSTEXPR
VideoEncodeRateControlLayerInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR92465       VideoEncodeRateControlLayerInfoKHR( uint32_t averageBitrate_               = {},
92466                                           uint32_t maxBitrate_                   = {},
92467                                           uint32_t frameRateNumerator_           = {},
92468                                           uint32_t frameRateDenominator_         = {},
92469                                           uint32_t virtualBufferSizeInMs_        = {},
92470                                           uint32_t initialVirtualBufferSizeInMs_ = {} ) VULKAN_HPP_NOEXCEPT
92471       : averageBitrate( averageBitrate_ )
92472       , maxBitrate( maxBitrate_ )
92473       , frameRateNumerator( frameRateNumerator_ )
92474       , frameRateDenominator( frameRateDenominator_ )
92475       , virtualBufferSizeInMs( virtualBufferSizeInMs_ )
92476       , initialVirtualBufferSizeInMs( initialVirtualBufferSizeInMs_ )
92477     {}
92478 
92479     VULKAN_HPP_CONSTEXPR VideoEncodeRateControlLayerInfoKHR( VideoEncodeRateControlLayerInfoKHR const & rhs )
92480       VULKAN_HPP_NOEXCEPT = default;
92481 
VideoEncodeRateControlLayerInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR92482     VideoEncodeRateControlLayerInfoKHR( VkVideoEncodeRateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
92483       : VideoEncodeRateControlLayerInfoKHR( *reinterpret_cast<VideoEncodeRateControlLayerInfoKHR const *>( &rhs ) )
92484     {}
92485 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
92486 
92487     VideoEncodeRateControlLayerInfoKHR &
92488       operator=( VideoEncodeRateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
92489 
92490     VideoEncodeRateControlLayerInfoKHR &
operator =VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR92491       operator=( VkVideoEncodeRateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
92492     {
92493       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR const *>( &rhs );
92494       return *this;
92495     }
92496 
92497 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR92498     VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlLayerInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
92499     {
92500       pNext = pNext_;
92501       return *this;
92502     }
92503 
92504     VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlLayerInfoKHR &
setAverageBitrateVULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR92505                             setAverageBitrate( uint32_t averageBitrate_ ) VULKAN_HPP_NOEXCEPT
92506     {
92507       averageBitrate = averageBitrate_;
92508       return *this;
92509     }
92510 
92511     VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlLayerInfoKHR &
setMaxBitrateVULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR92512                             setMaxBitrate( uint32_t maxBitrate_ ) VULKAN_HPP_NOEXCEPT
92513     {
92514       maxBitrate = maxBitrate_;
92515       return *this;
92516     }
92517 
92518     VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlLayerInfoKHR &
setFrameRateNumeratorVULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR92519                             setFrameRateNumerator( uint32_t frameRateNumerator_ ) VULKAN_HPP_NOEXCEPT
92520     {
92521       frameRateNumerator = frameRateNumerator_;
92522       return *this;
92523     }
92524 
92525     VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlLayerInfoKHR &
setFrameRateDenominatorVULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR92526                             setFrameRateDenominator( uint32_t frameRateDenominator_ ) VULKAN_HPP_NOEXCEPT
92527     {
92528       frameRateDenominator = frameRateDenominator_;
92529       return *this;
92530     }
92531 
92532     VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlLayerInfoKHR &
setVirtualBufferSizeInMsVULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR92533                             setVirtualBufferSizeInMs( uint32_t virtualBufferSizeInMs_ ) VULKAN_HPP_NOEXCEPT
92534     {
92535       virtualBufferSizeInMs = virtualBufferSizeInMs_;
92536       return *this;
92537     }
92538 
92539     VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlLayerInfoKHR &
setInitialVirtualBufferSizeInMsVULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR92540       setInitialVirtualBufferSizeInMs( uint32_t initialVirtualBufferSizeInMs_ ) VULKAN_HPP_NOEXCEPT
92541     {
92542       initialVirtualBufferSizeInMs = initialVirtualBufferSizeInMs_;
92543       return *this;
92544     }
92545 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
92546 
operator VkVideoEncodeRateControlLayerInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR92547     explicit operator VkVideoEncodeRateControlLayerInfoKHR const &() const VULKAN_HPP_NOEXCEPT
92548     {
92549       return *reinterpret_cast<const VkVideoEncodeRateControlLayerInfoKHR *>( this );
92550     }
92551 
operator VkVideoEncodeRateControlLayerInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR92552     explicit operator VkVideoEncodeRateControlLayerInfoKHR &() VULKAN_HPP_NOEXCEPT
92553     {
92554       return *reinterpret_cast<VkVideoEncodeRateControlLayerInfoKHR *>( this );
92555     }
92556 
92557 #  if 14 <= VULKAN_HPP_CPP_VERSION
92558     auto
92559 #  else
92560     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
92561                const void * const &,
92562                uint32_t const &,
92563                uint32_t const &,
92564                uint32_t const &,
92565                uint32_t const &,
92566                uint32_t const &,
92567                uint32_t const &>
92568 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR92569       reflect() const VULKAN_HPP_NOEXCEPT
92570     {
92571       return std::tie( sType,
92572                        pNext,
92573                        averageBitrate,
92574                        maxBitrate,
92575                        frameRateNumerator,
92576                        frameRateDenominator,
92577                        virtualBufferSizeInMs,
92578                        initialVirtualBufferSizeInMs );
92579     }
92580 
92581 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
92582     auto operator<=>( VideoEncodeRateControlLayerInfoKHR const & ) const = default;
92583 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR92584     bool operator==( VideoEncodeRateControlLayerInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
92585     {
92586       return this->reflect() == rhs.reflect();
92587     }
92588 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR92589     bool operator!=( VideoEncodeRateControlLayerInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
92590     {
92591       return this->reflect() != rhs.reflect();
92592     }
92593 #  endif
92594 
92595   public:
92596     VULKAN_HPP_NAMESPACE::StructureType sType                 = StructureType::eVideoEncodeRateControlLayerInfoKHR;
92597     const void *                        pNext                 = {};
92598     uint32_t                            averageBitrate        = {};
92599     uint32_t                            maxBitrate            = {};
92600     uint32_t                            frameRateNumerator    = {};
92601     uint32_t                            frameRateDenominator  = {};
92602     uint32_t                            virtualBufferSizeInMs = {};
92603     uint32_t                            initialVirtualBufferSizeInMs = {};
92604   };
92605   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR ) ==
92606                               sizeof( VkVideoEncodeRateControlLayerInfoKHR ),
92607                             "struct and wrapper have different size!" );
92608   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR>::value,
92609                             "struct wrapper is not a standard layout!" );
92610   VULKAN_HPP_STATIC_ASSERT(
92611     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR>::value,
92612     "VideoEncodeRateControlLayerInfoKHR is not nothrow_move_constructible!" );
92613 
92614   template <>
92615   struct CppType<StructureType, StructureType::eVideoEncodeRateControlLayerInfoKHR>
92616   {
92617     using Type = VideoEncodeRateControlLayerInfoKHR;
92618   };
92619 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
92620 
92621 #if defined( VK_ENABLE_BETA_EXTENSIONS )
92622   struct VideoEncodeRateControlInfoKHR
92623   {
92624     using NativeType = VkVideoEncodeRateControlInfoKHR;
92625 
92626     static const bool                                  allowDuplicate = false;
92627     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeRateControlInfoKHR;
92628 
92629 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeRateControlInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR92630     VULKAN_HPP_CONSTEXPR VideoEncodeRateControlInfoKHR(
92631       VULKAN_HPP_NAMESPACE::VideoEncodeRateControlFlagsKHR        flags_ = {},
92632       VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagBitsKHR rateControlMode_ =
92633         VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagBitsKHR::eNone,
92634       uint8_t                                                          layerCount_    = {},
92635       const VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR * pLayerConfigs_ = {} ) VULKAN_HPP_NOEXCEPT
92636       : flags( flags_ )
92637       , rateControlMode( rateControlMode_ )
92638       , layerCount( layerCount_ )
92639       , pLayerConfigs( pLayerConfigs_ )
92640     {}
92641 
92642     VULKAN_HPP_CONSTEXPR
92643       VideoEncodeRateControlInfoKHR( VideoEncodeRateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
92644 
VideoEncodeRateControlInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR92645     VideoEncodeRateControlInfoKHR( VkVideoEncodeRateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
92646       : VideoEncodeRateControlInfoKHR( *reinterpret_cast<VideoEncodeRateControlInfoKHR const *>( &rhs ) )
92647     {}
92648 
92649 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoEncodeRateControlInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR92650     VideoEncodeRateControlInfoKHR(
92651       VULKAN_HPP_NAMESPACE::VideoEncodeRateControlFlagsKHR        flags_,
92652       VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagBitsKHR rateControlMode_,
92653       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<
92654         const VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR> const & layerConfigs_ )
92655       : flags( flags_ )
92656       , rateControlMode( rateControlMode_ )
92657       , layerCount( static_cast<uint8_t>( layerConfigs_.size() ) )
92658       , pLayerConfigs( layerConfigs_.data() )
92659     {}
92660 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
92661 #  endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
92662 
92663     VideoEncodeRateControlInfoKHR &
92664       operator=( VideoEncodeRateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
92665 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR92666     VideoEncodeRateControlInfoKHR & operator=( VkVideoEncodeRateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
92667     {
92668       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR const *>( &rhs );
92669       return *this;
92670     }
92671 
92672 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR92673     VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
92674     {
92675       pNext = pNext_;
92676       return *this;
92677     }
92678 
92679     VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR &
setFlagsVULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR92680                             setFlags( VULKAN_HPP_NAMESPACE::VideoEncodeRateControlFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
92681     {
92682       flags = flags_;
92683       return *this;
92684     }
92685 
setRateControlModeVULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR92686     VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR & setRateControlMode(
92687       VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagBitsKHR rateControlMode_ ) VULKAN_HPP_NOEXCEPT
92688     {
92689       rateControlMode = rateControlMode_;
92690       return *this;
92691     }
92692 
setLayerCountVULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR92693     VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR & setLayerCount( uint8_t layerCount_ ) VULKAN_HPP_NOEXCEPT
92694     {
92695       layerCount = layerCount_;
92696       return *this;
92697     }
92698 
setPLayerConfigsVULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR92699     VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR & setPLayerConfigs(
92700       const VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR * pLayerConfigs_ ) VULKAN_HPP_NOEXCEPT
92701     {
92702       pLayerConfigs = pLayerConfigs_;
92703       return *this;
92704     }
92705 
92706 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setLayerConfigsVULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR92707     VideoEncodeRateControlInfoKHR & setLayerConfigs(
92708       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<
92709         const VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR> const & layerConfigs_ ) VULKAN_HPP_NOEXCEPT
92710     {
92711       layerCount    = static_cast<uint8_t>( layerConfigs_.size() );
92712       pLayerConfigs = layerConfigs_.data();
92713       return *this;
92714     }
92715 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
92716 #  endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
92717 
operator VkVideoEncodeRateControlInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR92718     explicit operator VkVideoEncodeRateControlInfoKHR const &() const VULKAN_HPP_NOEXCEPT
92719     {
92720       return *reinterpret_cast<const VkVideoEncodeRateControlInfoKHR *>( this );
92721     }
92722 
operator VkVideoEncodeRateControlInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR92723     explicit operator VkVideoEncodeRateControlInfoKHR &() VULKAN_HPP_NOEXCEPT
92724     {
92725       return *reinterpret_cast<VkVideoEncodeRateControlInfoKHR *>( this );
92726     }
92727 
92728 #  if 14 <= VULKAN_HPP_CPP_VERSION
92729     auto
92730 #  else
92731     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
92732                const void * const &,
92733                VULKAN_HPP_NAMESPACE::VideoEncodeRateControlFlagsKHR const &,
92734                VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagBitsKHR const &,
92735                uint8_t const &,
92736                const VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR * const &>
92737 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR92738       reflect() const VULKAN_HPP_NOEXCEPT
92739     {
92740       return std::tie( sType, pNext, flags, rateControlMode, layerCount, pLayerConfigs );
92741     }
92742 
92743 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
92744     auto operator<=>( VideoEncodeRateControlInfoKHR const & ) const = default;
92745 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR92746     bool operator==( VideoEncodeRateControlInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
92747     {
92748       return this->reflect() == rhs.reflect();
92749     }
92750 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR92751     bool operator!=( VideoEncodeRateControlInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
92752     {
92753       return this->reflect() != rhs.reflect();
92754     }
92755 #  endif
92756 
92757   public:
92758     VULKAN_HPP_NAMESPACE::StructureType                         sType = StructureType::eVideoEncodeRateControlInfoKHR;
92759     const void *                                                pNext = {};
92760     VULKAN_HPP_NAMESPACE::VideoEncodeRateControlFlagsKHR        flags = {};
92761     VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagBitsKHR rateControlMode =
92762       VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagBitsKHR::eNone;
92763     uint8_t                                                          layerCount    = {};
92764     const VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR * pLayerConfigs = {};
92765   };
92766   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR ) ==
92767                               sizeof( VkVideoEncodeRateControlInfoKHR ),
92768                             "struct and wrapper have different size!" );
92769   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR>::value,
92770                             "struct wrapper is not a standard layout!" );
92771   VULKAN_HPP_STATIC_ASSERT(
92772     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR>::value,
92773     "VideoEncodeRateControlInfoKHR is not nothrow_move_constructible!" );
92774 
92775   template <>
92776   struct CppType<StructureType, StructureType::eVideoEncodeRateControlInfoKHR>
92777   {
92778     using Type = VideoEncodeRateControlInfoKHR;
92779   };
92780 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
92781 
92782 #if defined( VK_ENABLE_BETA_EXTENSIONS )
92783   struct VideoEndCodingInfoKHR
92784   {
92785     using NativeType = VkVideoEndCodingInfoKHR;
92786 
92787     static const bool                                  allowDuplicate = false;
92788     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEndCodingInfoKHR;
92789 
92790 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
92791     VULKAN_HPP_CONSTEXPR
VideoEndCodingInfoKHRVULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR92792       VideoEndCodingInfoKHR( VULKAN_HPP_NAMESPACE::VideoEndCodingFlagsKHR flags_ = {} ) VULKAN_HPP_NOEXCEPT
92793       : flags( flags_ )
92794     {}
92795 
92796     VULKAN_HPP_CONSTEXPR VideoEndCodingInfoKHR( VideoEndCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
92797 
VideoEndCodingInfoKHRVULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR92798     VideoEndCodingInfoKHR( VkVideoEndCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
92799       : VideoEndCodingInfoKHR( *reinterpret_cast<VideoEndCodingInfoKHR const *>( &rhs ) )
92800     {}
92801 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
92802 
92803     VideoEndCodingInfoKHR & operator=( VideoEndCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
92804 
operator =VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR92805     VideoEndCodingInfoKHR & operator=( VkVideoEndCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
92806     {
92807       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR const *>( &rhs );
92808       return *this;
92809     }
92810 
92811 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR92812     VULKAN_HPP_CONSTEXPR_14 VideoEndCodingInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
92813     {
92814       pNext = pNext_;
92815       return *this;
92816     }
92817 
92818     VULKAN_HPP_CONSTEXPR_14 VideoEndCodingInfoKHR &
setFlagsVULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR92819                             setFlags( VULKAN_HPP_NAMESPACE::VideoEndCodingFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
92820     {
92821       flags = flags_;
92822       return *this;
92823     }
92824 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
92825 
operator VkVideoEndCodingInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR92826     explicit operator VkVideoEndCodingInfoKHR const &() const VULKAN_HPP_NOEXCEPT
92827     {
92828       return *reinterpret_cast<const VkVideoEndCodingInfoKHR *>( this );
92829     }
92830 
operator VkVideoEndCodingInfoKHR&VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR92831     explicit operator VkVideoEndCodingInfoKHR &() VULKAN_HPP_NOEXCEPT
92832     {
92833       return *reinterpret_cast<VkVideoEndCodingInfoKHR *>( this );
92834     }
92835 
92836 #  if 14 <= VULKAN_HPP_CPP_VERSION
92837     auto
92838 #  else
92839     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
92840                const void * const &,
92841                VULKAN_HPP_NAMESPACE::VideoEndCodingFlagsKHR const &>
92842 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR92843       reflect() const VULKAN_HPP_NOEXCEPT
92844     {
92845       return std::tie( sType, pNext, flags );
92846     }
92847 
92848 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
92849     auto operator<=>( VideoEndCodingInfoKHR const & ) const = default;
92850 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR92851     bool operator==( VideoEndCodingInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
92852     {
92853       return this->reflect() == rhs.reflect();
92854     }
92855 
operator !=VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR92856     bool operator!=( VideoEndCodingInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
92857     {
92858       return this->reflect() != rhs.reflect();
92859     }
92860 #  endif
92861 
92862   public:
92863     VULKAN_HPP_NAMESPACE::StructureType          sType = StructureType::eVideoEndCodingInfoKHR;
92864     const void *                                 pNext = {};
92865     VULKAN_HPP_NAMESPACE::VideoEndCodingFlagsKHR flags = {};
92866   };
92867   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR ) == sizeof( VkVideoEndCodingInfoKHR ),
92868                             "struct and wrapper have different size!" );
92869   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR>::value,
92870                             "struct wrapper is not a standard layout!" );
92871   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR>::value,
92872                             "VideoEndCodingInfoKHR is not nothrow_move_constructible!" );
92873 
92874   template <>
92875   struct CppType<StructureType, StructureType::eVideoEndCodingInfoKHR>
92876   {
92877     using Type = VideoEndCodingInfoKHR;
92878   };
92879 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
92880 
92881 #if defined( VK_ENABLE_BETA_EXTENSIONS )
92882   struct VideoFormatPropertiesKHR
92883   {
92884     using NativeType = VkVideoFormatPropertiesKHR;
92885 
92886     static const bool                                  allowDuplicate = false;
92887     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoFormatPropertiesKHR;
92888 
92889 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoFormatPropertiesKHRVULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR92890     VULKAN_HPP_CONSTEXPR VideoFormatPropertiesKHR(
92891       VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined ) VULKAN_HPP_NOEXCEPT
92892       : format( format_ )
92893     {}
92894 
92895     VULKAN_HPP_CONSTEXPR VideoFormatPropertiesKHR( VideoFormatPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
92896 
VideoFormatPropertiesKHRVULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR92897     VideoFormatPropertiesKHR( VkVideoFormatPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
92898       : VideoFormatPropertiesKHR( *reinterpret_cast<VideoFormatPropertiesKHR const *>( &rhs ) )
92899     {}
92900 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
92901 
92902     VideoFormatPropertiesKHR & operator=( VideoFormatPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
92903 
operator =VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR92904     VideoFormatPropertiesKHR & operator=( VkVideoFormatPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
92905     {
92906       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR const *>( &rhs );
92907       return *this;
92908     }
92909 
operator VkVideoFormatPropertiesKHR const&VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR92910     explicit operator VkVideoFormatPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
92911     {
92912       return *reinterpret_cast<const VkVideoFormatPropertiesKHR *>( this );
92913     }
92914 
operator VkVideoFormatPropertiesKHR&VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR92915     explicit operator VkVideoFormatPropertiesKHR &() VULKAN_HPP_NOEXCEPT
92916     {
92917       return *reinterpret_cast<VkVideoFormatPropertiesKHR *>( this );
92918     }
92919 
92920 #  if 14 <= VULKAN_HPP_CPP_VERSION
92921     auto
92922 #  else
92923     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Format const &>
92924 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR92925       reflect() const VULKAN_HPP_NOEXCEPT
92926     {
92927       return std::tie( sType, pNext, format );
92928     }
92929 
92930 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
92931     auto operator<=>( VideoFormatPropertiesKHR const & ) const = default;
92932 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR92933     bool operator==( VideoFormatPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
92934     {
92935       return this->reflect() == rhs.reflect();
92936     }
92937 
operator !=VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR92938     bool operator!=( VideoFormatPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
92939     {
92940       return this->reflect() != rhs.reflect();
92941     }
92942 #  endif
92943 
92944   public:
92945     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eVideoFormatPropertiesKHR;
92946     void *                              pNext  = {};
92947     VULKAN_HPP_NAMESPACE::Format        format = VULKAN_HPP_NAMESPACE::Format::eUndefined;
92948   };
92949   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR ) ==
92950                               sizeof( VkVideoFormatPropertiesKHR ),
92951                             "struct and wrapper have different size!" );
92952   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR>::value,
92953                             "struct wrapper is not a standard layout!" );
92954   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR>::value,
92955                             "VideoFormatPropertiesKHR is not nothrow_move_constructible!" );
92956 
92957   template <>
92958   struct CppType<StructureType, StructureType::eVideoFormatPropertiesKHR>
92959   {
92960     using Type = VideoFormatPropertiesKHR;
92961   };
92962 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
92963 
92964 #if defined( VK_ENABLE_BETA_EXTENSIONS )
92965   struct VideoGetMemoryPropertiesKHR
92966   {
92967     using NativeType = VkVideoGetMemoryPropertiesKHR;
92968 
92969     static const bool                                  allowDuplicate = false;
92970     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoGetMemoryPropertiesKHR;
92971 
92972 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoGetMemoryPropertiesKHRVULKAN_HPP_NAMESPACE::VideoGetMemoryPropertiesKHR92973     VULKAN_HPP_CONSTEXPR VideoGetMemoryPropertiesKHR(
92974       uint32_t                                    memoryBindIndex_     = {},
92975       VULKAN_HPP_NAMESPACE::MemoryRequirements2 * pMemoryRequirements_ = {} ) VULKAN_HPP_NOEXCEPT
92976       : memoryBindIndex( memoryBindIndex_ )
92977       , pMemoryRequirements( pMemoryRequirements_ )
92978     {}
92979 
92980     VULKAN_HPP_CONSTEXPR
92981       VideoGetMemoryPropertiesKHR( VideoGetMemoryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
92982 
VideoGetMemoryPropertiesKHRVULKAN_HPP_NAMESPACE::VideoGetMemoryPropertiesKHR92983     VideoGetMemoryPropertiesKHR( VkVideoGetMemoryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
92984       : VideoGetMemoryPropertiesKHR( *reinterpret_cast<VideoGetMemoryPropertiesKHR const *>( &rhs ) )
92985     {}
92986 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
92987 
92988     VideoGetMemoryPropertiesKHR & operator=( VideoGetMemoryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
92989 
operator =VULKAN_HPP_NAMESPACE::VideoGetMemoryPropertiesKHR92990     VideoGetMemoryPropertiesKHR & operator=( VkVideoGetMemoryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
92991     {
92992       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoGetMemoryPropertiesKHR const *>( &rhs );
92993       return *this;
92994     }
92995 
92996 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoGetMemoryPropertiesKHR92997     VULKAN_HPP_CONSTEXPR_14 VideoGetMemoryPropertiesKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
92998     {
92999       pNext = pNext_;
93000       return *this;
93001     }
93002 
93003     VULKAN_HPP_CONSTEXPR_14 VideoGetMemoryPropertiesKHR &
setMemoryBindIndexVULKAN_HPP_NAMESPACE::VideoGetMemoryPropertiesKHR93004                             setMemoryBindIndex( uint32_t memoryBindIndex_ ) VULKAN_HPP_NOEXCEPT
93005     {
93006       memoryBindIndex = memoryBindIndex_;
93007       return *this;
93008     }
93009 
93010     VULKAN_HPP_CONSTEXPR_14 VideoGetMemoryPropertiesKHR &
setPMemoryRequirementsVULKAN_HPP_NAMESPACE::VideoGetMemoryPropertiesKHR93011       setPMemoryRequirements( VULKAN_HPP_NAMESPACE::MemoryRequirements2 * pMemoryRequirements_ ) VULKAN_HPP_NOEXCEPT
93012     {
93013       pMemoryRequirements = pMemoryRequirements_;
93014       return *this;
93015     }
93016 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
93017 
operator VkVideoGetMemoryPropertiesKHR const&VULKAN_HPP_NAMESPACE::VideoGetMemoryPropertiesKHR93018     explicit operator VkVideoGetMemoryPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
93019     {
93020       return *reinterpret_cast<const VkVideoGetMemoryPropertiesKHR *>( this );
93021     }
93022 
operator VkVideoGetMemoryPropertiesKHR&VULKAN_HPP_NAMESPACE::VideoGetMemoryPropertiesKHR93023     explicit operator VkVideoGetMemoryPropertiesKHR &() VULKAN_HPP_NOEXCEPT
93024     {
93025       return *reinterpret_cast<VkVideoGetMemoryPropertiesKHR *>( this );
93026     }
93027 
93028 #  if 14 <= VULKAN_HPP_CPP_VERSION
93029     auto
93030 #  else
93031     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
93032                const void * const &,
93033                uint32_t const &,
93034                VULKAN_HPP_NAMESPACE::MemoryRequirements2 * const &>
93035 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoGetMemoryPropertiesKHR93036       reflect() const VULKAN_HPP_NOEXCEPT
93037     {
93038       return std::tie( sType, pNext, memoryBindIndex, pMemoryRequirements );
93039     }
93040 
93041 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
93042     auto operator<=>( VideoGetMemoryPropertiesKHR const & ) const = default;
93043 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoGetMemoryPropertiesKHR93044     bool operator==( VideoGetMemoryPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
93045     {
93046       return this->reflect() == rhs.reflect();
93047     }
93048 
operator !=VULKAN_HPP_NAMESPACE::VideoGetMemoryPropertiesKHR93049     bool operator!=( VideoGetMemoryPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
93050     {
93051       return this->reflect() != rhs.reflect();
93052     }
93053 #  endif
93054 
93055   public:
93056     VULKAN_HPP_NAMESPACE::StructureType         sType               = StructureType::eVideoGetMemoryPropertiesKHR;
93057     const void *                                pNext               = {};
93058     uint32_t                                    memoryBindIndex     = {};
93059     VULKAN_HPP_NAMESPACE::MemoryRequirements2 * pMemoryRequirements = {};
93060   };
93061   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoGetMemoryPropertiesKHR ) ==
93062                               sizeof( VkVideoGetMemoryPropertiesKHR ),
93063                             "struct and wrapper have different size!" );
93064   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoGetMemoryPropertiesKHR>::value,
93065                             "struct wrapper is not a standard layout!" );
93066   VULKAN_HPP_STATIC_ASSERT(
93067     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoGetMemoryPropertiesKHR>::value,
93068     "VideoGetMemoryPropertiesKHR is not nothrow_move_constructible!" );
93069 
93070   template <>
93071   struct CppType<StructureType, StructureType::eVideoGetMemoryPropertiesKHR>
93072   {
93073     using Type = VideoGetMemoryPropertiesKHR;
93074   };
93075 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
93076 
93077 #if defined( VK_ENABLE_BETA_EXTENSIONS )
93078   struct VideoQueueFamilyProperties2KHR
93079   {
93080     using NativeType = VkVideoQueueFamilyProperties2KHR;
93081 
93082     static const bool                                  allowDuplicate = false;
93083     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoQueueFamilyProperties2KHR;
93084 
93085 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoQueueFamilyProperties2KHRVULKAN_HPP_NAMESPACE::VideoQueueFamilyProperties2KHR93086     VULKAN_HPP_CONSTEXPR VideoQueueFamilyProperties2KHR(
93087       VULKAN_HPP_NAMESPACE::VideoCodecOperationFlagsKHR videoCodecOperations_ = {} ) VULKAN_HPP_NOEXCEPT
93088       : videoCodecOperations( videoCodecOperations_ )
93089     {}
93090 
93091     VULKAN_HPP_CONSTEXPR
93092       VideoQueueFamilyProperties2KHR( VideoQueueFamilyProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93093 
VideoQueueFamilyProperties2KHRVULKAN_HPP_NAMESPACE::VideoQueueFamilyProperties2KHR93094     VideoQueueFamilyProperties2KHR( VkVideoQueueFamilyProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
93095       : VideoQueueFamilyProperties2KHR( *reinterpret_cast<VideoQueueFamilyProperties2KHR const *>( &rhs ) )
93096     {}
93097 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
93098 
93099     VideoQueueFamilyProperties2KHR &
93100       operator=( VideoQueueFamilyProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93101 
operator =VULKAN_HPP_NAMESPACE::VideoQueueFamilyProperties2KHR93102     VideoQueueFamilyProperties2KHR & operator=( VkVideoQueueFamilyProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
93103     {
93104       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoQueueFamilyProperties2KHR const *>( &rhs );
93105       return *this;
93106     }
93107 
93108 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoQueueFamilyProperties2KHR93109     VULKAN_HPP_CONSTEXPR_14 VideoQueueFamilyProperties2KHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
93110     {
93111       pNext = pNext_;
93112       return *this;
93113     }
93114 
setVideoCodecOperationsVULKAN_HPP_NAMESPACE::VideoQueueFamilyProperties2KHR93115     VULKAN_HPP_CONSTEXPR_14 VideoQueueFamilyProperties2KHR & setVideoCodecOperations(
93116       VULKAN_HPP_NAMESPACE::VideoCodecOperationFlagsKHR videoCodecOperations_ ) VULKAN_HPP_NOEXCEPT
93117     {
93118       videoCodecOperations = videoCodecOperations_;
93119       return *this;
93120     }
93121 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
93122 
operator VkVideoQueueFamilyProperties2KHR const&VULKAN_HPP_NAMESPACE::VideoQueueFamilyProperties2KHR93123     explicit operator VkVideoQueueFamilyProperties2KHR const &() const VULKAN_HPP_NOEXCEPT
93124     {
93125       return *reinterpret_cast<const VkVideoQueueFamilyProperties2KHR *>( this );
93126     }
93127 
operator VkVideoQueueFamilyProperties2KHR&VULKAN_HPP_NAMESPACE::VideoQueueFamilyProperties2KHR93128     explicit operator VkVideoQueueFamilyProperties2KHR &() VULKAN_HPP_NOEXCEPT
93129     {
93130       return *reinterpret_cast<VkVideoQueueFamilyProperties2KHR *>( this );
93131     }
93132 
93133 #  if 14 <= VULKAN_HPP_CPP_VERSION
93134     auto
93135 #  else
93136     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
93137                void * const &,
93138                VULKAN_HPP_NAMESPACE::VideoCodecOperationFlagsKHR const &>
93139 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoQueueFamilyProperties2KHR93140       reflect() const VULKAN_HPP_NOEXCEPT
93141     {
93142       return std::tie( sType, pNext, videoCodecOperations );
93143     }
93144 
93145 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
93146     auto operator<=>( VideoQueueFamilyProperties2KHR const & ) const = default;
93147 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoQueueFamilyProperties2KHR93148     bool operator==( VideoQueueFamilyProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
93149     {
93150       return this->reflect() == rhs.reflect();
93151     }
93152 
operator !=VULKAN_HPP_NAMESPACE::VideoQueueFamilyProperties2KHR93153     bool operator!=( VideoQueueFamilyProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
93154     {
93155       return this->reflect() != rhs.reflect();
93156     }
93157 #  endif
93158 
93159   public:
93160     VULKAN_HPP_NAMESPACE::StructureType               sType = StructureType::eVideoQueueFamilyProperties2KHR;
93161     void *                                            pNext = {};
93162     VULKAN_HPP_NAMESPACE::VideoCodecOperationFlagsKHR videoCodecOperations = {};
93163   };
93164   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoQueueFamilyProperties2KHR ) ==
93165                               sizeof( VkVideoQueueFamilyProperties2KHR ),
93166                             "struct and wrapper have different size!" );
93167   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoQueueFamilyProperties2KHR>::value,
93168                             "struct wrapper is not a standard layout!" );
93169   VULKAN_HPP_STATIC_ASSERT(
93170     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoQueueFamilyProperties2KHR>::value,
93171     "VideoQueueFamilyProperties2KHR is not nothrow_move_constructible!" );
93172 
93173   template <>
93174   struct CppType<StructureType, StructureType::eVideoQueueFamilyProperties2KHR>
93175   {
93176     using Type = VideoQueueFamilyProperties2KHR;
93177   };
93178 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
93179 
93180 #if defined( VK_ENABLE_BETA_EXTENSIONS )
93181   struct VideoSessionCreateInfoKHR
93182   {
93183     using NativeType = VkVideoSessionCreateInfoKHR;
93184 
93185     static const bool                                  allowDuplicate = false;
93186     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoSessionCreateInfoKHR;
93187 
93188 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoSessionCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR93189     VULKAN_HPP_CONSTEXPR VideoSessionCreateInfoKHR(
93190       uint32_t                                         queueFamilyIndex_ = {},
93191       VULKAN_HPP_NAMESPACE::VideoSessionCreateFlagsKHR flags_            = {},
93192       const VULKAN_HPP_NAMESPACE::VideoProfileKHR *    pVideoProfile_    = {},
93193       VULKAN_HPP_NAMESPACE::Format                     pictureFormat_    = VULKAN_HPP_NAMESPACE::Format::eUndefined,
93194       VULKAN_HPP_NAMESPACE::Extent2D                   maxCodedExtent_   = {},
93195       VULKAN_HPP_NAMESPACE::Format referencePicturesFormat_              = VULKAN_HPP_NAMESPACE::Format::eUndefined,
93196       uint32_t                     maxReferencePicturesSlotsCount_       = {},
93197       uint32_t                     maxReferencePicturesActiveCount_      = {} ) VULKAN_HPP_NOEXCEPT
93198       : queueFamilyIndex( queueFamilyIndex_ )
93199       , flags( flags_ )
93200       , pVideoProfile( pVideoProfile_ )
93201       , pictureFormat( pictureFormat_ )
93202       , maxCodedExtent( maxCodedExtent_ )
93203       , referencePicturesFormat( referencePicturesFormat_ )
93204       , maxReferencePicturesSlotsCount( maxReferencePicturesSlotsCount_ )
93205       , maxReferencePicturesActiveCount( maxReferencePicturesActiveCount_ )
93206     {}
93207 
93208     VULKAN_HPP_CONSTEXPR
93209       VideoSessionCreateInfoKHR( VideoSessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93210 
VideoSessionCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR93211     VideoSessionCreateInfoKHR( VkVideoSessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
93212       : VideoSessionCreateInfoKHR( *reinterpret_cast<VideoSessionCreateInfoKHR const *>( &rhs ) )
93213     {}
93214 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
93215 
93216     VideoSessionCreateInfoKHR & operator=( VideoSessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93217 
operator =VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR93218     VideoSessionCreateInfoKHR & operator=( VkVideoSessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
93219     {
93220       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR const *>( &rhs );
93221       return *this;
93222     }
93223 
93224 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR93225     VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
93226     {
93227       pNext = pNext_;
93228       return *this;
93229     }
93230 
93231     VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR &
setQueueFamilyIndexVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR93232                             setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
93233     {
93234       queueFamilyIndex = queueFamilyIndex_;
93235       return *this;
93236     }
93237 
93238     VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR &
setFlagsVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR93239                             setFlags( VULKAN_HPP_NAMESPACE::VideoSessionCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
93240     {
93241       flags = flags_;
93242       return *this;
93243     }
93244 
93245     VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR &
setPVideoProfileVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR93246       setPVideoProfile( const VULKAN_HPP_NAMESPACE::VideoProfileKHR * pVideoProfile_ ) VULKAN_HPP_NOEXCEPT
93247     {
93248       pVideoProfile = pVideoProfile_;
93249       return *this;
93250     }
93251 
93252     VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR &
setPictureFormatVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR93253                             setPictureFormat( VULKAN_HPP_NAMESPACE::Format pictureFormat_ ) VULKAN_HPP_NOEXCEPT
93254     {
93255       pictureFormat = pictureFormat_;
93256       return *this;
93257     }
93258 
93259     VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR &
setMaxCodedExtentVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR93260       setMaxCodedExtent( VULKAN_HPP_NAMESPACE::Extent2D const & maxCodedExtent_ ) VULKAN_HPP_NOEXCEPT
93261     {
93262       maxCodedExtent = maxCodedExtent_;
93263       return *this;
93264     }
93265 
93266     VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR &
setReferencePicturesFormatVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR93267       setReferencePicturesFormat( VULKAN_HPP_NAMESPACE::Format referencePicturesFormat_ ) VULKAN_HPP_NOEXCEPT
93268     {
93269       referencePicturesFormat = referencePicturesFormat_;
93270       return *this;
93271     }
93272 
93273     VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR &
setMaxReferencePicturesSlotsCountVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR93274       setMaxReferencePicturesSlotsCount( uint32_t maxReferencePicturesSlotsCount_ ) VULKAN_HPP_NOEXCEPT
93275     {
93276       maxReferencePicturesSlotsCount = maxReferencePicturesSlotsCount_;
93277       return *this;
93278     }
93279 
93280     VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR &
setMaxReferencePicturesActiveCountVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR93281       setMaxReferencePicturesActiveCount( uint32_t maxReferencePicturesActiveCount_ ) VULKAN_HPP_NOEXCEPT
93282     {
93283       maxReferencePicturesActiveCount = maxReferencePicturesActiveCount_;
93284       return *this;
93285     }
93286 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
93287 
operator VkVideoSessionCreateInfoKHR const&VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR93288     explicit operator VkVideoSessionCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
93289     {
93290       return *reinterpret_cast<const VkVideoSessionCreateInfoKHR *>( this );
93291     }
93292 
operator VkVideoSessionCreateInfoKHR&VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR93293     explicit operator VkVideoSessionCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
93294     {
93295       return *reinterpret_cast<VkVideoSessionCreateInfoKHR *>( this );
93296     }
93297 
93298 #  if 14 <= VULKAN_HPP_CPP_VERSION
93299     auto
93300 #  else
93301     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
93302                const void * const &,
93303                uint32_t const &,
93304                VULKAN_HPP_NAMESPACE::VideoSessionCreateFlagsKHR const &,
93305                const VULKAN_HPP_NAMESPACE::VideoProfileKHR * const &,
93306                VULKAN_HPP_NAMESPACE::Format const &,
93307                VULKAN_HPP_NAMESPACE::Extent2D const &,
93308                VULKAN_HPP_NAMESPACE::Format const &,
93309                uint32_t const &,
93310                uint32_t const &>
93311 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR93312       reflect() const VULKAN_HPP_NOEXCEPT
93313     {
93314       return std::tie( sType,
93315                        pNext,
93316                        queueFamilyIndex,
93317                        flags,
93318                        pVideoProfile,
93319                        pictureFormat,
93320                        maxCodedExtent,
93321                        referencePicturesFormat,
93322                        maxReferencePicturesSlotsCount,
93323                        maxReferencePicturesActiveCount );
93324     }
93325 
93326 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
93327     auto operator<=>( VideoSessionCreateInfoKHR const & ) const = default;
93328 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR93329     bool operator==( VideoSessionCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
93330     {
93331       return this->reflect() == rhs.reflect();
93332     }
93333 
operator !=VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR93334     bool operator!=( VideoSessionCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
93335     {
93336       return this->reflect() != rhs.reflect();
93337     }
93338 #  endif
93339 
93340   public:
93341     VULKAN_HPP_NAMESPACE::StructureType              sType            = StructureType::eVideoSessionCreateInfoKHR;
93342     const void *                                     pNext            = {};
93343     uint32_t                                         queueFamilyIndex = {};
93344     VULKAN_HPP_NAMESPACE::VideoSessionCreateFlagsKHR flags            = {};
93345     const VULKAN_HPP_NAMESPACE::VideoProfileKHR *    pVideoProfile    = {};
93346     VULKAN_HPP_NAMESPACE::Format                     pictureFormat    = VULKAN_HPP_NAMESPACE::Format::eUndefined;
93347     VULKAN_HPP_NAMESPACE::Extent2D                   maxCodedExtent   = {};
93348     VULKAN_HPP_NAMESPACE::Format                     referencePicturesFormat = VULKAN_HPP_NAMESPACE::Format::eUndefined;
93349     uint32_t                                         maxReferencePicturesSlotsCount  = {};
93350     uint32_t                                         maxReferencePicturesActiveCount = {};
93351   };
93352   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR ) ==
93353                               sizeof( VkVideoSessionCreateInfoKHR ),
93354                             "struct and wrapper have different size!" );
93355   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR>::value,
93356                             "struct wrapper is not a standard layout!" );
93357   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR>::value,
93358                             "VideoSessionCreateInfoKHR is not nothrow_move_constructible!" );
93359 
93360   template <>
93361   struct CppType<StructureType, StructureType::eVideoSessionCreateInfoKHR>
93362   {
93363     using Type = VideoSessionCreateInfoKHR;
93364   };
93365 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
93366 
93367 #if defined( VK_ENABLE_BETA_EXTENSIONS )
93368   struct VideoSessionParametersCreateInfoKHR
93369   {
93370     using NativeType = VkVideoSessionParametersCreateInfoKHR;
93371 
93372     static const bool                                  allowDuplicate = false;
93373     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
93374       StructureType::eVideoSessionParametersCreateInfoKHR;
93375 
93376 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoSessionParametersCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR93377     VULKAN_HPP_CONSTEXPR VideoSessionParametersCreateInfoKHR(
93378       VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParametersTemplate_ = {},
93379       VULKAN_HPP_NAMESPACE::VideoSessionKHR           videoSession_                   = {} ) VULKAN_HPP_NOEXCEPT
93380       : videoSessionParametersTemplate( videoSessionParametersTemplate_ )
93381       , videoSession( videoSession_ )
93382     {}
93383 
93384     VULKAN_HPP_CONSTEXPR VideoSessionParametersCreateInfoKHR( VideoSessionParametersCreateInfoKHR const & rhs )
93385       VULKAN_HPP_NOEXCEPT = default;
93386 
VideoSessionParametersCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR93387     VideoSessionParametersCreateInfoKHR( VkVideoSessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
93388       : VideoSessionParametersCreateInfoKHR( *reinterpret_cast<VideoSessionParametersCreateInfoKHR const *>( &rhs ) )
93389     {}
93390 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
93391 
93392     VideoSessionParametersCreateInfoKHR &
93393       operator=( VideoSessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93394 
93395     VideoSessionParametersCreateInfoKHR &
operator =VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR93396       operator=( VkVideoSessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
93397     {
93398       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR const *>( &rhs );
93399       return *this;
93400     }
93401 
93402 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR93403     VULKAN_HPP_CONSTEXPR_14 VideoSessionParametersCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
93404     {
93405       pNext = pNext_;
93406       return *this;
93407     }
93408 
setVideoSessionParametersTemplateVULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR93409     VULKAN_HPP_CONSTEXPR_14 VideoSessionParametersCreateInfoKHR & setVideoSessionParametersTemplate(
93410       VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParametersTemplate_ ) VULKAN_HPP_NOEXCEPT
93411     {
93412       videoSessionParametersTemplate = videoSessionParametersTemplate_;
93413       return *this;
93414     }
93415 
93416     VULKAN_HPP_CONSTEXPR_14 VideoSessionParametersCreateInfoKHR &
setVideoSessionVULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR93417                             setVideoSession( VULKAN_HPP_NAMESPACE::VideoSessionKHR videoSession_ ) VULKAN_HPP_NOEXCEPT
93418     {
93419       videoSession = videoSession_;
93420       return *this;
93421     }
93422 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
93423 
operator VkVideoSessionParametersCreateInfoKHR const&VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR93424     explicit operator VkVideoSessionParametersCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
93425     {
93426       return *reinterpret_cast<const VkVideoSessionParametersCreateInfoKHR *>( this );
93427     }
93428 
operator VkVideoSessionParametersCreateInfoKHR&VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR93429     explicit operator VkVideoSessionParametersCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
93430     {
93431       return *reinterpret_cast<VkVideoSessionParametersCreateInfoKHR *>( this );
93432     }
93433 
93434 #  if 14 <= VULKAN_HPP_CPP_VERSION
93435     auto
93436 #  else
93437     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
93438                const void * const &,
93439                VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR const &,
93440                VULKAN_HPP_NAMESPACE::VideoSessionKHR const &>
93441 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR93442       reflect() const VULKAN_HPP_NOEXCEPT
93443     {
93444       return std::tie( sType, pNext, videoSessionParametersTemplate, videoSession );
93445     }
93446 
93447 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
93448     auto operator<=>( VideoSessionParametersCreateInfoKHR const & ) const = default;
93449 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR93450     bool operator==( VideoSessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
93451     {
93452       return this->reflect() == rhs.reflect();
93453     }
93454 
operator !=VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR93455     bool operator!=( VideoSessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
93456     {
93457       return this->reflect() != rhs.reflect();
93458     }
93459 #  endif
93460 
93461   public:
93462     VULKAN_HPP_NAMESPACE::StructureType             sType = StructureType::eVideoSessionParametersCreateInfoKHR;
93463     const void *                                    pNext = {};
93464     VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParametersTemplate = {};
93465     VULKAN_HPP_NAMESPACE::VideoSessionKHR           videoSession                   = {};
93466   };
93467   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR ) ==
93468                               sizeof( VkVideoSessionParametersCreateInfoKHR ),
93469                             "struct and wrapper have different size!" );
93470   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR>::value,
93471                             "struct wrapper is not a standard layout!" );
93472   VULKAN_HPP_STATIC_ASSERT(
93473     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR>::value,
93474     "VideoSessionParametersCreateInfoKHR is not nothrow_move_constructible!" );
93475 
93476   template <>
93477   struct CppType<StructureType, StructureType::eVideoSessionParametersCreateInfoKHR>
93478   {
93479     using Type = VideoSessionParametersCreateInfoKHR;
93480   };
93481 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
93482 
93483 #if defined( VK_ENABLE_BETA_EXTENSIONS )
93484   struct VideoSessionParametersUpdateInfoKHR
93485   {
93486     using NativeType = VkVideoSessionParametersUpdateInfoKHR;
93487 
93488     static const bool                                  allowDuplicate = false;
93489     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
93490       StructureType::eVideoSessionParametersUpdateInfoKHR;
93491 
93492 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoSessionParametersUpdateInfoKHRVULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR93493     VULKAN_HPP_CONSTEXPR VideoSessionParametersUpdateInfoKHR( uint32_t updateSequenceCount_ = {} ) VULKAN_HPP_NOEXCEPT
93494       : updateSequenceCount( updateSequenceCount_ )
93495     {}
93496 
93497     VULKAN_HPP_CONSTEXPR VideoSessionParametersUpdateInfoKHR( VideoSessionParametersUpdateInfoKHR const & rhs )
93498       VULKAN_HPP_NOEXCEPT = default;
93499 
VideoSessionParametersUpdateInfoKHRVULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR93500     VideoSessionParametersUpdateInfoKHR( VkVideoSessionParametersUpdateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
93501       : VideoSessionParametersUpdateInfoKHR( *reinterpret_cast<VideoSessionParametersUpdateInfoKHR const *>( &rhs ) )
93502     {}
93503 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
93504 
93505     VideoSessionParametersUpdateInfoKHR &
93506       operator=( VideoSessionParametersUpdateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93507 
93508     VideoSessionParametersUpdateInfoKHR &
operator =VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR93509       operator=( VkVideoSessionParametersUpdateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
93510     {
93511       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR const *>( &rhs );
93512       return *this;
93513     }
93514 
93515 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR93516     VULKAN_HPP_CONSTEXPR_14 VideoSessionParametersUpdateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
93517     {
93518       pNext = pNext_;
93519       return *this;
93520     }
93521 
93522     VULKAN_HPP_CONSTEXPR_14 VideoSessionParametersUpdateInfoKHR &
setUpdateSequenceCountVULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR93523                             setUpdateSequenceCount( uint32_t updateSequenceCount_ ) VULKAN_HPP_NOEXCEPT
93524     {
93525       updateSequenceCount = updateSequenceCount_;
93526       return *this;
93527     }
93528 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
93529 
operator VkVideoSessionParametersUpdateInfoKHR const&VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR93530     explicit operator VkVideoSessionParametersUpdateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
93531     {
93532       return *reinterpret_cast<const VkVideoSessionParametersUpdateInfoKHR *>( this );
93533     }
93534 
operator VkVideoSessionParametersUpdateInfoKHR&VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR93535     explicit operator VkVideoSessionParametersUpdateInfoKHR &() VULKAN_HPP_NOEXCEPT
93536     {
93537       return *reinterpret_cast<VkVideoSessionParametersUpdateInfoKHR *>( this );
93538     }
93539 
93540 #  if 14 <= VULKAN_HPP_CPP_VERSION
93541     auto
93542 #  else
93543     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &>
93544 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR93545       reflect() const VULKAN_HPP_NOEXCEPT
93546     {
93547       return std::tie( sType, pNext, updateSequenceCount );
93548     }
93549 
93550 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
93551     auto operator<=>( VideoSessionParametersUpdateInfoKHR const & ) const = default;
93552 #  else
operator ==VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR93553     bool operator==( VideoSessionParametersUpdateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
93554     {
93555       return this->reflect() == rhs.reflect();
93556     }
93557 
operator !=VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR93558     bool operator!=( VideoSessionParametersUpdateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
93559     {
93560       return this->reflect() != rhs.reflect();
93561     }
93562 #  endif
93563 
93564   public:
93565     VULKAN_HPP_NAMESPACE::StructureType sType               = StructureType::eVideoSessionParametersUpdateInfoKHR;
93566     const void *                        pNext               = {};
93567     uint32_t                            updateSequenceCount = {};
93568   };
93569   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR ) ==
93570                               sizeof( VkVideoSessionParametersUpdateInfoKHR ),
93571                             "struct and wrapper have different size!" );
93572   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR>::value,
93573                             "struct wrapper is not a standard layout!" );
93574   VULKAN_HPP_STATIC_ASSERT(
93575     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR>::value,
93576     "VideoSessionParametersUpdateInfoKHR is not nothrow_move_constructible!" );
93577 
93578   template <>
93579   struct CppType<StructureType, StructureType::eVideoSessionParametersUpdateInfoKHR>
93580   {
93581     using Type = VideoSessionParametersUpdateInfoKHR;
93582   };
93583 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
93584 
93585 #if defined( VK_USE_PLATFORM_WAYLAND_KHR )
93586   struct WaylandSurfaceCreateInfoKHR
93587   {
93588     using NativeType = VkWaylandSurfaceCreateInfoKHR;
93589 
93590     static const bool                                  allowDuplicate = false;
93591     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eWaylandSurfaceCreateInfoKHR;
93592 
93593 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
WaylandSurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR93594     VULKAN_HPP_CONSTEXPR WaylandSurfaceCreateInfoKHR( VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateFlagsKHR flags_   = {},
93595                                                       struct wl_display *                                display_ = {},
93596                                                       struct wl_surface * surface_ = {} ) VULKAN_HPP_NOEXCEPT
93597       : flags( flags_ )
93598       , display( display_ )
93599       , surface( surface_ )
93600     {}
93601 
93602     VULKAN_HPP_CONSTEXPR
93603       WaylandSurfaceCreateInfoKHR( WaylandSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93604 
WaylandSurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR93605     WaylandSurfaceCreateInfoKHR( VkWaylandSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
93606       : WaylandSurfaceCreateInfoKHR( *reinterpret_cast<WaylandSurfaceCreateInfoKHR const *>( &rhs ) )
93607     {}
93608 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
93609 
93610     WaylandSurfaceCreateInfoKHR & operator=( WaylandSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93611 
operator =VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR93612     WaylandSurfaceCreateInfoKHR & operator=( VkWaylandSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
93613     {
93614       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR const *>( &rhs );
93615       return *this;
93616     }
93617 
93618 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR93619     VULKAN_HPP_CONSTEXPR_14 WaylandSurfaceCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
93620     {
93621       pNext = pNext_;
93622       return *this;
93623     }
93624 
93625     VULKAN_HPP_CONSTEXPR_14 WaylandSurfaceCreateInfoKHR &
setFlagsVULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR93626                             setFlags( VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
93627     {
93628       flags = flags_;
93629       return *this;
93630     }
93631 
setDisplayVULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR93632     VULKAN_HPP_CONSTEXPR_14 WaylandSurfaceCreateInfoKHR & setDisplay( struct wl_display * display_ ) VULKAN_HPP_NOEXCEPT
93633     {
93634       display = display_;
93635       return *this;
93636     }
93637 
setSurfaceVULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR93638     VULKAN_HPP_CONSTEXPR_14 WaylandSurfaceCreateInfoKHR & setSurface( struct wl_surface * surface_ ) VULKAN_HPP_NOEXCEPT
93639     {
93640       surface = surface_;
93641       return *this;
93642     }
93643 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
93644 
operator VkWaylandSurfaceCreateInfoKHR const&VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR93645     explicit operator VkWaylandSurfaceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
93646     {
93647       return *reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR *>( this );
93648     }
93649 
operator VkWaylandSurfaceCreateInfoKHR&VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR93650     explicit operator VkWaylandSurfaceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
93651     {
93652       return *reinterpret_cast<VkWaylandSurfaceCreateInfoKHR *>( this );
93653     }
93654 
93655 #  if 14 <= VULKAN_HPP_CPP_VERSION
93656     auto
93657 #  else
93658     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
93659                const void * const &,
93660                VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateFlagsKHR const &,
93661                struct wl_display * const &,
93662                struct wl_surface * const &>
93663 #  endif
reflectVULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR93664       reflect() const VULKAN_HPP_NOEXCEPT
93665     {
93666       return std::tie( sType, pNext, flags, display, surface );
93667     }
93668 
93669 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
93670     auto operator<=>( WaylandSurfaceCreateInfoKHR const & ) const = default;
93671 #  else
operator ==VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR93672     bool operator==( WaylandSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
93673     {
93674       return this->reflect() == rhs.reflect();
93675     }
93676 
operator !=VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR93677     bool operator!=( WaylandSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
93678     {
93679       return this->reflect() != rhs.reflect();
93680     }
93681 #  endif
93682 
93683   public:
93684     VULKAN_HPP_NAMESPACE::StructureType                sType   = StructureType::eWaylandSurfaceCreateInfoKHR;
93685     const void *                                       pNext   = {};
93686     VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateFlagsKHR flags   = {};
93687     struct wl_display *                                display = {};
93688     struct wl_surface *                                surface = {};
93689   };
93690   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR ) ==
93691                               sizeof( VkWaylandSurfaceCreateInfoKHR ),
93692                             "struct and wrapper have different size!" );
93693   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR>::value,
93694                             "struct wrapper is not a standard layout!" );
93695   VULKAN_HPP_STATIC_ASSERT(
93696     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR>::value,
93697     "WaylandSurfaceCreateInfoKHR is not nothrow_move_constructible!" );
93698 
93699   template <>
93700   struct CppType<StructureType, StructureType::eWaylandSurfaceCreateInfoKHR>
93701   {
93702     using Type = WaylandSurfaceCreateInfoKHR;
93703   };
93704 #endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
93705 
93706 #if defined( VK_USE_PLATFORM_WIN32_KHR )
93707   struct Win32KeyedMutexAcquireReleaseInfoKHR
93708   {
93709     using NativeType = VkWin32KeyedMutexAcquireReleaseInfoKHR;
93710 
93711     static const bool                                  allowDuplicate = false;
93712     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
93713       StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR;
93714 
93715 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
93716     VULKAN_HPP_CONSTEXPR
Win32KeyedMutexAcquireReleaseInfoKHRVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR93717       Win32KeyedMutexAcquireReleaseInfoKHR( uint32_t                                   acquireCount_     = {},
93718                                             const VULKAN_HPP_NAMESPACE::DeviceMemory * pAcquireSyncs_    = {},
93719                                             const uint64_t *                           pAcquireKeys_     = {},
93720                                             const uint32_t *                           pAcquireTimeouts_ = {},
93721                                             uint32_t                                   releaseCount_     = {},
93722                                             const VULKAN_HPP_NAMESPACE::DeviceMemory * pReleaseSyncs_    = {},
93723                                             const uint64_t * pReleaseKeys_ = {} ) VULKAN_HPP_NOEXCEPT
93724       : acquireCount( acquireCount_ )
93725       , pAcquireSyncs( pAcquireSyncs_ )
93726       , pAcquireKeys( pAcquireKeys_ )
93727       , pAcquireTimeouts( pAcquireTimeouts_ )
93728       , releaseCount( releaseCount_ )
93729       , pReleaseSyncs( pReleaseSyncs_ )
93730       , pReleaseKeys( pReleaseKeys_ )
93731     {}
93732 
93733     VULKAN_HPP_CONSTEXPR Win32KeyedMutexAcquireReleaseInfoKHR( Win32KeyedMutexAcquireReleaseInfoKHR const & rhs )
93734       VULKAN_HPP_NOEXCEPT = default;
93735 
Win32KeyedMutexAcquireReleaseInfoKHRVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR93736     Win32KeyedMutexAcquireReleaseInfoKHR( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
93737       : Win32KeyedMutexAcquireReleaseInfoKHR( *reinterpret_cast<Win32KeyedMutexAcquireReleaseInfoKHR const *>( &rhs ) )
93738     {}
93739 
93740 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
Win32KeyedMutexAcquireReleaseInfoKHRVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR93741     Win32KeyedMutexAcquireReleaseInfoKHR(
93742       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceMemory> const & acquireSyncs_,
93743       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const &                           acquireKeys_ = {},
93744       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & acquireTimeouts_                       = {},
93745       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceMemory> const &
93746                                                                             releaseSyncs_ = {},
93747       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & releaseKeys_  = {} )
93748       : acquireCount( static_cast<uint32_t>( acquireSyncs_.size() ) )
93749       , pAcquireSyncs( acquireSyncs_.data() )
93750       , pAcquireKeys( acquireKeys_.data() )
93751       , pAcquireTimeouts( acquireTimeouts_.data() )
93752       , releaseCount( static_cast<uint32_t>( releaseSyncs_.size() ) )
93753       , pReleaseSyncs( releaseSyncs_.data() )
93754       , pReleaseKeys( releaseKeys_.data() )
93755     {
93756 #      ifdef VULKAN_HPP_NO_EXCEPTIONS
93757       VULKAN_HPP_ASSERT( acquireSyncs_.size() == acquireKeys_.size() );
93758       VULKAN_HPP_ASSERT( acquireSyncs_.size() == acquireTimeouts_.size() );
93759       VULKAN_HPP_ASSERT( acquireKeys_.size() == acquireTimeouts_.size() );
93760 #      else
93761       if ( acquireSyncs_.size() != acquireKeys_.size() )
93762       {
93763         throw LogicError(
93764           VULKAN_HPP_NAMESPACE_STRING
93765           "::Win32KeyedMutexAcquireReleaseInfoKHR::Win32KeyedMutexAcquireReleaseInfoKHR: acquireSyncs_.size() != acquireKeys_.size()" );
93766       }
93767       if ( acquireSyncs_.size() != acquireTimeouts_.size() )
93768       {
93769         throw LogicError(
93770           VULKAN_HPP_NAMESPACE_STRING
93771           "::Win32KeyedMutexAcquireReleaseInfoKHR::Win32KeyedMutexAcquireReleaseInfoKHR: acquireSyncs_.size() != acquireTimeouts_.size()" );
93772       }
93773       if ( acquireKeys_.size() != acquireTimeouts_.size() )
93774       {
93775         throw LogicError(
93776           VULKAN_HPP_NAMESPACE_STRING
93777           "::Win32KeyedMutexAcquireReleaseInfoKHR::Win32KeyedMutexAcquireReleaseInfoKHR: acquireKeys_.size() != acquireTimeouts_.size()" );
93778       }
93779 #      endif /*VULKAN_HPP_NO_EXCEPTIONS*/
93780 
93781 #      ifdef VULKAN_HPP_NO_EXCEPTIONS
93782       VULKAN_HPP_ASSERT( releaseSyncs_.size() == releaseKeys_.size() );
93783 #      else
93784       if ( releaseSyncs_.size() != releaseKeys_.size() )
93785       {
93786         throw LogicError(
93787           VULKAN_HPP_NAMESPACE_STRING
93788           "::Win32KeyedMutexAcquireReleaseInfoKHR::Win32KeyedMutexAcquireReleaseInfoKHR: releaseSyncs_.size() != releaseKeys_.size()" );
93789       }
93790 #      endif /*VULKAN_HPP_NO_EXCEPTIONS*/
93791     }
93792 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
93793 #  endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
93794 
93795     Win32KeyedMutexAcquireReleaseInfoKHR &
93796       operator=( Win32KeyedMutexAcquireReleaseInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93797 
93798     Win32KeyedMutexAcquireReleaseInfoKHR &
operator =VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR93799       operator=( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
93800     {
93801       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR const *>( &rhs );
93802       return *this;
93803     }
93804 
93805 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR93806     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
93807     {
93808       pNext = pNext_;
93809       return *this;
93810     }
93811 
93812     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR &
setAcquireCountVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR93813                             setAcquireCount( uint32_t acquireCount_ ) VULKAN_HPP_NOEXCEPT
93814     {
93815       acquireCount = acquireCount_;
93816       return *this;
93817     }
93818 
93819     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR &
setPAcquireSyncsVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR93820       setPAcquireSyncs( const VULKAN_HPP_NAMESPACE::DeviceMemory * pAcquireSyncs_ ) VULKAN_HPP_NOEXCEPT
93821     {
93822       pAcquireSyncs = pAcquireSyncs_;
93823       return *this;
93824     }
93825 
93826 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAcquireSyncsVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR93827     Win32KeyedMutexAcquireReleaseInfoKHR & setAcquireSyncs(
93828       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceMemory> const & acquireSyncs_ )
93829       VULKAN_HPP_NOEXCEPT
93830     {
93831       acquireCount  = static_cast<uint32_t>( acquireSyncs_.size() );
93832       pAcquireSyncs = acquireSyncs_.data();
93833       return *this;
93834     }
93835 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
93836 
93837     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR &
setPAcquireKeysVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR93838                             setPAcquireKeys( const uint64_t * pAcquireKeys_ ) VULKAN_HPP_NOEXCEPT
93839     {
93840       pAcquireKeys = pAcquireKeys_;
93841       return *this;
93842     }
93843 
93844 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAcquireKeysVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR93845     Win32KeyedMutexAcquireReleaseInfoKHR & setAcquireKeys(
93846       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & acquireKeys_ ) VULKAN_HPP_NOEXCEPT
93847     {
93848       acquireCount = static_cast<uint32_t>( acquireKeys_.size() );
93849       pAcquireKeys = acquireKeys_.data();
93850       return *this;
93851     }
93852 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
93853 
93854     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR &
setPAcquireTimeoutsVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR93855                             setPAcquireTimeouts( const uint32_t * pAcquireTimeouts_ ) VULKAN_HPP_NOEXCEPT
93856     {
93857       pAcquireTimeouts = pAcquireTimeouts_;
93858       return *this;
93859     }
93860 
93861 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAcquireTimeoutsVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR93862     Win32KeyedMutexAcquireReleaseInfoKHR & setAcquireTimeouts(
93863       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & acquireTimeouts_ ) VULKAN_HPP_NOEXCEPT
93864     {
93865       acquireCount     = static_cast<uint32_t>( acquireTimeouts_.size() );
93866       pAcquireTimeouts = acquireTimeouts_.data();
93867       return *this;
93868     }
93869 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
93870 
93871     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR &
setReleaseCountVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR93872                             setReleaseCount( uint32_t releaseCount_ ) VULKAN_HPP_NOEXCEPT
93873     {
93874       releaseCount = releaseCount_;
93875       return *this;
93876     }
93877 
93878     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR &
setPReleaseSyncsVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR93879       setPReleaseSyncs( const VULKAN_HPP_NAMESPACE::DeviceMemory * pReleaseSyncs_ ) VULKAN_HPP_NOEXCEPT
93880     {
93881       pReleaseSyncs = pReleaseSyncs_;
93882       return *this;
93883     }
93884 
93885 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setReleaseSyncsVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR93886     Win32KeyedMutexAcquireReleaseInfoKHR & setReleaseSyncs(
93887       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceMemory> const & releaseSyncs_ )
93888       VULKAN_HPP_NOEXCEPT
93889     {
93890       releaseCount  = static_cast<uint32_t>( releaseSyncs_.size() );
93891       pReleaseSyncs = releaseSyncs_.data();
93892       return *this;
93893     }
93894 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
93895 
93896     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR &
setPReleaseKeysVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR93897                             setPReleaseKeys( const uint64_t * pReleaseKeys_ ) VULKAN_HPP_NOEXCEPT
93898     {
93899       pReleaseKeys = pReleaseKeys_;
93900       return *this;
93901     }
93902 
93903 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setReleaseKeysVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR93904     Win32KeyedMutexAcquireReleaseInfoKHR & setReleaseKeys(
93905       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & releaseKeys_ ) VULKAN_HPP_NOEXCEPT
93906     {
93907       releaseCount = static_cast<uint32_t>( releaseKeys_.size() );
93908       pReleaseKeys = releaseKeys_.data();
93909       return *this;
93910     }
93911 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
93912 #  endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
93913 
operator VkWin32KeyedMutexAcquireReleaseInfoKHR const&VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR93914     explicit operator VkWin32KeyedMutexAcquireReleaseInfoKHR const &() const VULKAN_HPP_NOEXCEPT
93915     {
93916       return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoKHR *>( this );
93917     }
93918 
operator VkWin32KeyedMutexAcquireReleaseInfoKHR&VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR93919     explicit operator VkWin32KeyedMutexAcquireReleaseInfoKHR &() VULKAN_HPP_NOEXCEPT
93920     {
93921       return *reinterpret_cast<VkWin32KeyedMutexAcquireReleaseInfoKHR *>( this );
93922     }
93923 
93924 #  if 14 <= VULKAN_HPP_CPP_VERSION
93925     auto
93926 #  else
93927     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
93928                const void * const &,
93929                uint32_t const &,
93930                const VULKAN_HPP_NAMESPACE::DeviceMemory * const &,
93931                const uint64_t * const &,
93932                const uint32_t * const &,
93933                uint32_t const &,
93934                const VULKAN_HPP_NAMESPACE::DeviceMemory * const &,
93935                const uint64_t * const &>
93936 #  endif
reflectVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR93937       reflect() const VULKAN_HPP_NOEXCEPT
93938     {
93939       return std::tie( sType,
93940                        pNext,
93941                        acquireCount,
93942                        pAcquireSyncs,
93943                        pAcquireKeys,
93944                        pAcquireTimeouts,
93945                        releaseCount,
93946                        pReleaseSyncs,
93947                        pReleaseKeys );
93948     }
93949 
93950 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
93951     auto operator<=>( Win32KeyedMutexAcquireReleaseInfoKHR const & ) const = default;
93952 #  else
operator ==VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR93953     bool operator==( Win32KeyedMutexAcquireReleaseInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
93954     {
93955       return this->reflect() == rhs.reflect();
93956     }
93957 
operator !=VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR93958     bool operator!=( Win32KeyedMutexAcquireReleaseInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
93959     {
93960       return this->reflect() != rhs.reflect();
93961     }
93962 #  endif
93963 
93964   public:
93965     VULKAN_HPP_NAMESPACE::StructureType        sType            = StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR;
93966     const void *                               pNext            = {};
93967     uint32_t                                   acquireCount     = {};
93968     const VULKAN_HPP_NAMESPACE::DeviceMemory * pAcquireSyncs    = {};
93969     const uint64_t *                           pAcquireKeys     = {};
93970     const uint32_t *                           pAcquireTimeouts = {};
93971     uint32_t                                   releaseCount     = {};
93972     const VULKAN_HPP_NAMESPACE::DeviceMemory * pReleaseSyncs    = {};
93973     const uint64_t *                           pReleaseKeys     = {};
93974   };
93975   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR ) ==
93976                               sizeof( VkWin32KeyedMutexAcquireReleaseInfoKHR ),
93977                             "struct and wrapper have different size!" );
93978   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR>::value,
93979                             "struct wrapper is not a standard layout!" );
93980   VULKAN_HPP_STATIC_ASSERT(
93981     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR>::value,
93982     "Win32KeyedMutexAcquireReleaseInfoKHR is not nothrow_move_constructible!" );
93983 
93984   template <>
93985   struct CppType<StructureType, StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR>
93986   {
93987     using Type = Win32KeyedMutexAcquireReleaseInfoKHR;
93988   };
93989 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
93990 
93991 #if defined( VK_USE_PLATFORM_WIN32_KHR )
93992   struct Win32KeyedMutexAcquireReleaseInfoNV
93993   {
93994     using NativeType = VkWin32KeyedMutexAcquireReleaseInfoNV;
93995 
93996     static const bool                                  allowDuplicate = false;
93997     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
93998       StructureType::eWin32KeyedMutexAcquireReleaseInfoNV;
93999 
94000 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
94001     VULKAN_HPP_CONSTEXPR
Win32KeyedMutexAcquireReleaseInfoNVVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV94002       Win32KeyedMutexAcquireReleaseInfoNV( uint32_t                                   acquireCount_                = {},
94003                                            const VULKAN_HPP_NAMESPACE::DeviceMemory * pAcquireSyncs_               = {},
94004                                            const uint64_t *                           pAcquireKeys_                = {},
94005                                            const uint32_t *                           pAcquireTimeoutMilliseconds_ = {},
94006                                            uint32_t                                   releaseCount_                = {},
94007                                            const VULKAN_HPP_NAMESPACE::DeviceMemory * pReleaseSyncs_               = {},
94008                                            const uint64_t * pReleaseKeys_ = {} ) VULKAN_HPP_NOEXCEPT
94009       : acquireCount( acquireCount_ )
94010       , pAcquireSyncs( pAcquireSyncs_ )
94011       , pAcquireKeys( pAcquireKeys_ )
94012       , pAcquireTimeoutMilliseconds( pAcquireTimeoutMilliseconds_ )
94013       , releaseCount( releaseCount_ )
94014       , pReleaseSyncs( pReleaseSyncs_ )
94015       , pReleaseKeys( pReleaseKeys_ )
94016     {}
94017 
94018     VULKAN_HPP_CONSTEXPR Win32KeyedMutexAcquireReleaseInfoNV( Win32KeyedMutexAcquireReleaseInfoNV const & rhs )
94019       VULKAN_HPP_NOEXCEPT = default;
94020 
Win32KeyedMutexAcquireReleaseInfoNVVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV94021     Win32KeyedMutexAcquireReleaseInfoNV( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
94022       : Win32KeyedMutexAcquireReleaseInfoNV( *reinterpret_cast<Win32KeyedMutexAcquireReleaseInfoNV const *>( &rhs ) )
94023     {}
94024 
94025 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
Win32KeyedMutexAcquireReleaseInfoNVVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV94026     Win32KeyedMutexAcquireReleaseInfoNV(
94027       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceMemory> const & acquireSyncs_,
94028       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const &                           acquireKeys_ = {},
94029       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & acquireTimeoutMilliseconds_            = {},
94030       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceMemory> const &
94031                                                                             releaseSyncs_ = {},
94032       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & releaseKeys_  = {} )
94033       : acquireCount( static_cast<uint32_t>( acquireSyncs_.size() ) )
94034       , pAcquireSyncs( acquireSyncs_.data() )
94035       , pAcquireKeys( acquireKeys_.data() )
94036       , pAcquireTimeoutMilliseconds( acquireTimeoutMilliseconds_.data() )
94037       , releaseCount( static_cast<uint32_t>( releaseSyncs_.size() ) )
94038       , pReleaseSyncs( releaseSyncs_.data() )
94039       , pReleaseKeys( releaseKeys_.data() )
94040     {
94041 #      ifdef VULKAN_HPP_NO_EXCEPTIONS
94042       VULKAN_HPP_ASSERT( acquireSyncs_.size() == acquireKeys_.size() );
94043       VULKAN_HPP_ASSERT( acquireSyncs_.size() == acquireTimeoutMilliseconds_.size() );
94044       VULKAN_HPP_ASSERT( acquireKeys_.size() == acquireTimeoutMilliseconds_.size() );
94045 #      else
94046       if ( acquireSyncs_.size() != acquireKeys_.size() )
94047       {
94048         throw LogicError(
94049           VULKAN_HPP_NAMESPACE_STRING
94050           "::Win32KeyedMutexAcquireReleaseInfoNV::Win32KeyedMutexAcquireReleaseInfoNV: acquireSyncs_.size() != acquireKeys_.size()" );
94051       }
94052       if ( acquireSyncs_.size() != acquireTimeoutMilliseconds_.size() )
94053       {
94054         throw LogicError(
94055           VULKAN_HPP_NAMESPACE_STRING
94056           "::Win32KeyedMutexAcquireReleaseInfoNV::Win32KeyedMutexAcquireReleaseInfoNV: acquireSyncs_.size() != acquireTimeoutMilliseconds_.size()" );
94057       }
94058       if ( acquireKeys_.size() != acquireTimeoutMilliseconds_.size() )
94059       {
94060         throw LogicError(
94061           VULKAN_HPP_NAMESPACE_STRING
94062           "::Win32KeyedMutexAcquireReleaseInfoNV::Win32KeyedMutexAcquireReleaseInfoNV: acquireKeys_.size() != acquireTimeoutMilliseconds_.size()" );
94063       }
94064 #      endif /*VULKAN_HPP_NO_EXCEPTIONS*/
94065 
94066 #      ifdef VULKAN_HPP_NO_EXCEPTIONS
94067       VULKAN_HPP_ASSERT( releaseSyncs_.size() == releaseKeys_.size() );
94068 #      else
94069       if ( releaseSyncs_.size() != releaseKeys_.size() )
94070       {
94071         throw LogicError(
94072           VULKAN_HPP_NAMESPACE_STRING
94073           "::Win32KeyedMutexAcquireReleaseInfoNV::Win32KeyedMutexAcquireReleaseInfoNV: releaseSyncs_.size() != releaseKeys_.size()" );
94074       }
94075 #      endif /*VULKAN_HPP_NO_EXCEPTIONS*/
94076     }
94077 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
94078 #  endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
94079 
94080     Win32KeyedMutexAcquireReleaseInfoNV &
94081       operator=( Win32KeyedMutexAcquireReleaseInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94082 
94083     Win32KeyedMutexAcquireReleaseInfoNV &
operator =VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV94084       operator=( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
94085     {
94086       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV const *>( &rhs );
94087       return *this;
94088     }
94089 
94090 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV94091     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
94092     {
94093       pNext = pNext_;
94094       return *this;
94095     }
94096 
94097     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV &
setAcquireCountVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV94098                             setAcquireCount( uint32_t acquireCount_ ) VULKAN_HPP_NOEXCEPT
94099     {
94100       acquireCount = acquireCount_;
94101       return *this;
94102     }
94103 
94104     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV &
setPAcquireSyncsVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV94105       setPAcquireSyncs( const VULKAN_HPP_NAMESPACE::DeviceMemory * pAcquireSyncs_ ) VULKAN_HPP_NOEXCEPT
94106     {
94107       pAcquireSyncs = pAcquireSyncs_;
94108       return *this;
94109     }
94110 
94111 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAcquireSyncsVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV94112     Win32KeyedMutexAcquireReleaseInfoNV & setAcquireSyncs(
94113       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceMemory> const & acquireSyncs_ )
94114       VULKAN_HPP_NOEXCEPT
94115     {
94116       acquireCount  = static_cast<uint32_t>( acquireSyncs_.size() );
94117       pAcquireSyncs = acquireSyncs_.data();
94118       return *this;
94119     }
94120 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
94121 
94122     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV &
setPAcquireKeysVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV94123                             setPAcquireKeys( const uint64_t * pAcquireKeys_ ) VULKAN_HPP_NOEXCEPT
94124     {
94125       pAcquireKeys = pAcquireKeys_;
94126       return *this;
94127     }
94128 
94129 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAcquireKeysVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV94130     Win32KeyedMutexAcquireReleaseInfoNV & setAcquireKeys(
94131       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & acquireKeys_ ) VULKAN_HPP_NOEXCEPT
94132     {
94133       acquireCount = static_cast<uint32_t>( acquireKeys_.size() );
94134       pAcquireKeys = acquireKeys_.data();
94135       return *this;
94136     }
94137 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
94138 
94139     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV &
setPAcquireTimeoutMillisecondsVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV94140       setPAcquireTimeoutMilliseconds( const uint32_t * pAcquireTimeoutMilliseconds_ ) VULKAN_HPP_NOEXCEPT
94141     {
94142       pAcquireTimeoutMilliseconds = pAcquireTimeoutMilliseconds_;
94143       return *this;
94144     }
94145 
94146 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAcquireTimeoutMillisecondsVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV94147     Win32KeyedMutexAcquireReleaseInfoNV & setAcquireTimeoutMilliseconds(
94148       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & acquireTimeoutMilliseconds_ )
94149       VULKAN_HPP_NOEXCEPT
94150     {
94151       acquireCount                = static_cast<uint32_t>( acquireTimeoutMilliseconds_.size() );
94152       pAcquireTimeoutMilliseconds = acquireTimeoutMilliseconds_.data();
94153       return *this;
94154     }
94155 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
94156 
94157     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV &
setReleaseCountVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV94158                             setReleaseCount( uint32_t releaseCount_ ) VULKAN_HPP_NOEXCEPT
94159     {
94160       releaseCount = releaseCount_;
94161       return *this;
94162     }
94163 
94164     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV &
setPReleaseSyncsVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV94165       setPReleaseSyncs( const VULKAN_HPP_NAMESPACE::DeviceMemory * pReleaseSyncs_ ) VULKAN_HPP_NOEXCEPT
94166     {
94167       pReleaseSyncs = pReleaseSyncs_;
94168       return *this;
94169     }
94170 
94171 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setReleaseSyncsVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV94172     Win32KeyedMutexAcquireReleaseInfoNV & setReleaseSyncs(
94173       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceMemory> const & releaseSyncs_ )
94174       VULKAN_HPP_NOEXCEPT
94175     {
94176       releaseCount  = static_cast<uint32_t>( releaseSyncs_.size() );
94177       pReleaseSyncs = releaseSyncs_.data();
94178       return *this;
94179     }
94180 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
94181 
94182     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV &
setPReleaseKeysVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV94183                             setPReleaseKeys( const uint64_t * pReleaseKeys_ ) VULKAN_HPP_NOEXCEPT
94184     {
94185       pReleaseKeys = pReleaseKeys_;
94186       return *this;
94187     }
94188 
94189 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setReleaseKeysVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV94190     Win32KeyedMutexAcquireReleaseInfoNV & setReleaseKeys(
94191       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & releaseKeys_ ) VULKAN_HPP_NOEXCEPT
94192     {
94193       releaseCount = static_cast<uint32_t>( releaseKeys_.size() );
94194       pReleaseKeys = releaseKeys_.data();
94195       return *this;
94196     }
94197 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
94198 #  endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
94199 
operator VkWin32KeyedMutexAcquireReleaseInfoNV const&VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV94200     explicit operator VkWin32KeyedMutexAcquireReleaseInfoNV const &() const VULKAN_HPP_NOEXCEPT
94201     {
94202       return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoNV *>( this );
94203     }
94204 
operator VkWin32KeyedMutexAcquireReleaseInfoNV&VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV94205     explicit operator VkWin32KeyedMutexAcquireReleaseInfoNV &() VULKAN_HPP_NOEXCEPT
94206     {
94207       return *reinterpret_cast<VkWin32KeyedMutexAcquireReleaseInfoNV *>( this );
94208     }
94209 
94210 #  if 14 <= VULKAN_HPP_CPP_VERSION
94211     auto
94212 #  else
94213     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
94214                const void * const &,
94215                uint32_t const &,
94216                const VULKAN_HPP_NAMESPACE::DeviceMemory * const &,
94217                const uint64_t * const &,
94218                const uint32_t * const &,
94219                uint32_t const &,
94220                const VULKAN_HPP_NAMESPACE::DeviceMemory * const &,
94221                const uint64_t * const &>
94222 #  endif
reflectVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV94223       reflect() const VULKAN_HPP_NOEXCEPT
94224     {
94225       return std::tie( sType,
94226                        pNext,
94227                        acquireCount,
94228                        pAcquireSyncs,
94229                        pAcquireKeys,
94230                        pAcquireTimeoutMilliseconds,
94231                        releaseCount,
94232                        pReleaseSyncs,
94233                        pReleaseKeys );
94234     }
94235 
94236 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
94237     auto operator<=>( Win32KeyedMutexAcquireReleaseInfoNV const & ) const = default;
94238 #  else
operator ==VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV94239     bool operator==( Win32KeyedMutexAcquireReleaseInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
94240     {
94241       return this->reflect() == rhs.reflect();
94242     }
94243 
operator !=VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV94244     bool operator!=( Win32KeyedMutexAcquireReleaseInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
94245     {
94246       return this->reflect() != rhs.reflect();
94247     }
94248 #  endif
94249 
94250   public:
94251     VULKAN_HPP_NAMESPACE::StructureType        sType         = StructureType::eWin32KeyedMutexAcquireReleaseInfoNV;
94252     const void *                               pNext         = {};
94253     uint32_t                                   acquireCount  = {};
94254     const VULKAN_HPP_NAMESPACE::DeviceMemory * pAcquireSyncs = {};
94255     const uint64_t *                           pAcquireKeys  = {};
94256     const uint32_t *                           pAcquireTimeoutMilliseconds = {};
94257     uint32_t                                   releaseCount                = {};
94258     const VULKAN_HPP_NAMESPACE::DeviceMemory * pReleaseSyncs               = {};
94259     const uint64_t *                           pReleaseKeys                = {};
94260   };
94261   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV ) ==
94262                               sizeof( VkWin32KeyedMutexAcquireReleaseInfoNV ),
94263                             "struct and wrapper have different size!" );
94264   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV>::value,
94265                             "struct wrapper is not a standard layout!" );
94266   VULKAN_HPP_STATIC_ASSERT(
94267     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV>::value,
94268     "Win32KeyedMutexAcquireReleaseInfoNV is not nothrow_move_constructible!" );
94269 
94270   template <>
94271   struct CppType<StructureType, StructureType::eWin32KeyedMutexAcquireReleaseInfoNV>
94272   {
94273     using Type = Win32KeyedMutexAcquireReleaseInfoNV;
94274   };
94275 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
94276 
94277 #if defined( VK_USE_PLATFORM_WIN32_KHR )
94278   struct Win32SurfaceCreateInfoKHR
94279   {
94280     using NativeType = VkWin32SurfaceCreateInfoKHR;
94281 
94282     static const bool                                  allowDuplicate = false;
94283     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eWin32SurfaceCreateInfoKHR;
94284 
94285 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
Win32SurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR94286     VULKAN_HPP_CONSTEXPR Win32SurfaceCreateInfoKHR( VULKAN_HPP_NAMESPACE::Win32SurfaceCreateFlagsKHR flags_     = {},
94287                                                     HINSTANCE                                        hinstance_ = {},
94288                                                     HWND hwnd_ = {} ) VULKAN_HPP_NOEXCEPT
94289       : flags( flags_ )
94290       , hinstance( hinstance_ )
94291       , hwnd( hwnd_ )
94292     {}
94293 
94294     VULKAN_HPP_CONSTEXPR
94295       Win32SurfaceCreateInfoKHR( Win32SurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94296 
Win32SurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR94297     Win32SurfaceCreateInfoKHR( VkWin32SurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
94298       : Win32SurfaceCreateInfoKHR( *reinterpret_cast<Win32SurfaceCreateInfoKHR const *>( &rhs ) )
94299     {}
94300 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
94301 
94302     Win32SurfaceCreateInfoKHR & operator=( Win32SurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94303 
operator =VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR94304     Win32SurfaceCreateInfoKHR & operator=( VkWin32SurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
94305     {
94306       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR const *>( &rhs );
94307       return *this;
94308     }
94309 
94310 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR94311     VULKAN_HPP_CONSTEXPR_14 Win32SurfaceCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
94312     {
94313       pNext = pNext_;
94314       return *this;
94315     }
94316 
94317     VULKAN_HPP_CONSTEXPR_14 Win32SurfaceCreateInfoKHR &
setFlagsVULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR94318                             setFlags( VULKAN_HPP_NAMESPACE::Win32SurfaceCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
94319     {
94320       flags = flags_;
94321       return *this;
94322     }
94323 
setHinstanceVULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR94324     VULKAN_HPP_CONSTEXPR_14 Win32SurfaceCreateInfoKHR & setHinstance( HINSTANCE hinstance_ ) VULKAN_HPP_NOEXCEPT
94325     {
94326       hinstance = hinstance_;
94327       return *this;
94328     }
94329 
setHwndVULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR94330     VULKAN_HPP_CONSTEXPR_14 Win32SurfaceCreateInfoKHR & setHwnd( HWND hwnd_ ) VULKAN_HPP_NOEXCEPT
94331     {
94332       hwnd = hwnd_;
94333       return *this;
94334     }
94335 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
94336 
operator VkWin32SurfaceCreateInfoKHR const&VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR94337     explicit operator VkWin32SurfaceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
94338     {
94339       return *reinterpret_cast<const VkWin32SurfaceCreateInfoKHR *>( this );
94340     }
94341 
operator VkWin32SurfaceCreateInfoKHR&VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR94342     explicit operator VkWin32SurfaceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
94343     {
94344       return *reinterpret_cast<VkWin32SurfaceCreateInfoKHR *>( this );
94345     }
94346 
94347 #  if 14 <= VULKAN_HPP_CPP_VERSION
94348     auto
94349 #  else
94350     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
94351                const void * const &,
94352                VULKAN_HPP_NAMESPACE::Win32SurfaceCreateFlagsKHR const &,
94353                HINSTANCE const &,
94354                HWND const &>
94355 #  endif
reflectVULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR94356       reflect() const VULKAN_HPP_NOEXCEPT
94357     {
94358       return std::tie( sType, pNext, flags, hinstance, hwnd );
94359     }
94360 
94361 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
94362     auto operator<=>( Win32SurfaceCreateInfoKHR const & ) const = default;
94363 #  else
operator ==VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR94364     bool operator==( Win32SurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
94365     {
94366       return this->reflect() == rhs.reflect();
94367     }
94368 
operator !=VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR94369     bool operator!=( Win32SurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
94370     {
94371       return this->reflect() != rhs.reflect();
94372     }
94373 #  endif
94374 
94375   public:
94376     VULKAN_HPP_NAMESPACE::StructureType              sType     = StructureType::eWin32SurfaceCreateInfoKHR;
94377     const void *                                     pNext     = {};
94378     VULKAN_HPP_NAMESPACE::Win32SurfaceCreateFlagsKHR flags     = {};
94379     HINSTANCE                                        hinstance = {};
94380     HWND                                             hwnd      = {};
94381   };
94382   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR ) ==
94383                               sizeof( VkWin32SurfaceCreateInfoKHR ),
94384                             "struct and wrapper have different size!" );
94385   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR>::value,
94386                             "struct wrapper is not a standard layout!" );
94387   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR>::value,
94388                             "Win32SurfaceCreateInfoKHR is not nothrow_move_constructible!" );
94389 
94390   template <>
94391   struct CppType<StructureType, StructureType::eWin32SurfaceCreateInfoKHR>
94392   {
94393     using Type = Win32SurfaceCreateInfoKHR;
94394   };
94395 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
94396 
94397   struct WriteDescriptorSet
94398   {
94399     using NativeType = VkWriteDescriptorSet;
94400 
94401     static const bool                                  allowDuplicate = false;
94402     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eWriteDescriptorSet;
94403 
94404 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
WriteDescriptorSetVULKAN_HPP_NAMESPACE::WriteDescriptorSet94405     VULKAN_HPP_CONSTEXPR WriteDescriptorSet(
94406       VULKAN_HPP_NAMESPACE::DescriptorSet  dstSet_                    = {},
94407       uint32_t                             dstBinding_                = {},
94408       uint32_t                             dstArrayElement_           = {},
94409       uint32_t                             descriptorCount_           = {},
94410       VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_            = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler,
94411       const VULKAN_HPP_NAMESPACE::DescriptorImageInfo *  pImageInfo_  = {},
94412       const VULKAN_HPP_NAMESPACE::DescriptorBufferInfo * pBufferInfo_ = {},
94413       const VULKAN_HPP_NAMESPACE::BufferView *           pTexelBufferView_ = {} ) VULKAN_HPP_NOEXCEPT
94414       : dstSet( dstSet_ )
94415       , dstBinding( dstBinding_ )
94416       , dstArrayElement( dstArrayElement_ )
94417       , descriptorCount( descriptorCount_ )
94418       , descriptorType( descriptorType_ )
94419       , pImageInfo( pImageInfo_ )
94420       , pBufferInfo( pBufferInfo_ )
94421       , pTexelBufferView( pTexelBufferView_ )
94422     {}
94423 
94424     VULKAN_HPP_CONSTEXPR WriteDescriptorSet( WriteDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94425 
WriteDescriptorSetVULKAN_HPP_NAMESPACE::WriteDescriptorSet94426     WriteDescriptorSet( VkWriteDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT
94427       : WriteDescriptorSet( *reinterpret_cast<WriteDescriptorSet const *>( &rhs ) )
94428     {}
94429 
94430 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
WriteDescriptorSetVULKAN_HPP_NAMESPACE::WriteDescriptorSet94431     WriteDescriptorSet(
94432       VULKAN_HPP_NAMESPACE::DescriptorSet  dstSet_,
94433       uint32_t                             dstBinding_,
94434       uint32_t                             dstArrayElement_,
94435       VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_,
94436       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorImageInfo> const & imageInfo_,
94437       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorBufferInfo> const &
94438         bufferInfo_ = {},
94439       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferView> const &
94440         texelBufferView_ = {} )
94441       : dstSet( dstSet_ )
94442       , dstBinding( dstBinding_ )
94443       , dstArrayElement( dstArrayElement_ )
94444       , descriptorCount( static_cast<uint32_t>( !imageInfo_.empty()    ? imageInfo_.size()
94445                                                 : !bufferInfo_.empty() ? bufferInfo_.size()
94446                                                                        : texelBufferView_.size() ) )
94447       , descriptorType( descriptorType_ )
94448       , pImageInfo( imageInfo_.data() )
94449       , pBufferInfo( bufferInfo_.data() )
94450       , pTexelBufferView( texelBufferView_.data() )
94451     {
94452 #    ifdef VULKAN_HPP_NO_EXCEPTIONS
94453       VULKAN_HPP_ASSERT( ( !imageInfo_.empty() + !bufferInfo_.empty() + !texelBufferView_.empty() ) <= 1 );
94454 #    else
94455       if ( 1 < ( !imageInfo_.empty() + !bufferInfo_.empty() + !texelBufferView_.empty() ) )
94456       {
94457         throw LogicError(
94458           VULKAN_HPP_NAMESPACE_STRING
94459           "::WriteDescriptorSet::WriteDescriptorSet: 1 < ( !imageInfo_.empty() + !bufferInfo_.empty() + !texelBufferView_.empty() )" );
94460       }
94461 #    endif /*VULKAN_HPP_NO_EXCEPTIONS*/
94462     }
94463 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
94464 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
94465 
94466     WriteDescriptorSet & operator=( WriteDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94467 
operator =VULKAN_HPP_NAMESPACE::WriteDescriptorSet94468     WriteDescriptorSet & operator=( VkWriteDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT
94469     {
94470       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::WriteDescriptorSet const *>( &rhs );
94471       return *this;
94472     }
94473 
94474 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::WriteDescriptorSet94475     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
94476     {
94477       pNext = pNext_;
94478       return *this;
94479     }
94480 
94481     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet &
setDstSetVULKAN_HPP_NAMESPACE::WriteDescriptorSet94482                             setDstSet( VULKAN_HPP_NAMESPACE::DescriptorSet dstSet_ ) VULKAN_HPP_NOEXCEPT
94483     {
94484       dstSet = dstSet_;
94485       return *this;
94486     }
94487 
setDstBindingVULKAN_HPP_NAMESPACE::WriteDescriptorSet94488     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setDstBinding( uint32_t dstBinding_ ) VULKAN_HPP_NOEXCEPT
94489     {
94490       dstBinding = dstBinding_;
94491       return *this;
94492     }
94493 
setDstArrayElementVULKAN_HPP_NAMESPACE::WriteDescriptorSet94494     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setDstArrayElement( uint32_t dstArrayElement_ ) VULKAN_HPP_NOEXCEPT
94495     {
94496       dstArrayElement = dstArrayElement_;
94497       return *this;
94498     }
94499 
setDescriptorCountVULKAN_HPP_NAMESPACE::WriteDescriptorSet94500     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setDescriptorCount( uint32_t descriptorCount_ ) VULKAN_HPP_NOEXCEPT
94501     {
94502       descriptorCount = descriptorCount_;
94503       return *this;
94504     }
94505 
94506     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet &
setDescriptorTypeVULKAN_HPP_NAMESPACE::WriteDescriptorSet94507       setDescriptorType( VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_ ) VULKAN_HPP_NOEXCEPT
94508     {
94509       descriptorType = descriptorType_;
94510       return *this;
94511     }
94512 
94513     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet &
setPImageInfoVULKAN_HPP_NAMESPACE::WriteDescriptorSet94514       setPImageInfo( const VULKAN_HPP_NAMESPACE::DescriptorImageInfo * pImageInfo_ ) VULKAN_HPP_NOEXCEPT
94515     {
94516       pImageInfo = pImageInfo_;
94517       return *this;
94518     }
94519 
94520 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setImageInfoVULKAN_HPP_NAMESPACE::WriteDescriptorSet94521     WriteDescriptorSet & setImageInfo(
94522       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorImageInfo> const &
94523         imageInfo_ ) VULKAN_HPP_NOEXCEPT
94524     {
94525       descriptorCount = static_cast<uint32_t>( imageInfo_.size() );
94526       pImageInfo      = imageInfo_.data();
94527       return *this;
94528     }
94529 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
94530 
94531     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet &
setPBufferInfoVULKAN_HPP_NAMESPACE::WriteDescriptorSet94532       setPBufferInfo( const VULKAN_HPP_NAMESPACE::DescriptorBufferInfo * pBufferInfo_ ) VULKAN_HPP_NOEXCEPT
94533     {
94534       pBufferInfo = pBufferInfo_;
94535       return *this;
94536     }
94537 
94538 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setBufferInfoVULKAN_HPP_NAMESPACE::WriteDescriptorSet94539     WriteDescriptorSet & setBufferInfo(
94540       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorBufferInfo> const &
94541         bufferInfo_ ) VULKAN_HPP_NOEXCEPT
94542     {
94543       descriptorCount = static_cast<uint32_t>( bufferInfo_.size() );
94544       pBufferInfo     = bufferInfo_.data();
94545       return *this;
94546     }
94547 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
94548 
94549     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet &
setPTexelBufferViewVULKAN_HPP_NAMESPACE::WriteDescriptorSet94550       setPTexelBufferView( const VULKAN_HPP_NAMESPACE::BufferView * pTexelBufferView_ ) VULKAN_HPP_NOEXCEPT
94551     {
94552       pTexelBufferView = pTexelBufferView_;
94553       return *this;
94554     }
94555 
94556 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setTexelBufferViewVULKAN_HPP_NAMESPACE::WriteDescriptorSet94557     WriteDescriptorSet & setTexelBufferView(
94558       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferView> const & texelBufferView_ )
94559       VULKAN_HPP_NOEXCEPT
94560     {
94561       descriptorCount  = static_cast<uint32_t>( texelBufferView_.size() );
94562       pTexelBufferView = texelBufferView_.data();
94563       return *this;
94564     }
94565 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
94566 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
94567 
operator VkWriteDescriptorSet const&VULKAN_HPP_NAMESPACE::WriteDescriptorSet94568     explicit operator VkWriteDescriptorSet const &() const VULKAN_HPP_NOEXCEPT
94569     {
94570       return *reinterpret_cast<const VkWriteDescriptorSet *>( this );
94571     }
94572 
operator VkWriteDescriptorSet&VULKAN_HPP_NAMESPACE::WriteDescriptorSet94573     explicit operator VkWriteDescriptorSet &() VULKAN_HPP_NOEXCEPT
94574     {
94575       return *reinterpret_cast<VkWriteDescriptorSet *>( this );
94576     }
94577 
94578 #if 14 <= VULKAN_HPP_CPP_VERSION
94579     auto
94580 #else
94581     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
94582                const void * const &,
94583                VULKAN_HPP_NAMESPACE::DescriptorSet const &,
94584                uint32_t const &,
94585                uint32_t const &,
94586                uint32_t const &,
94587                VULKAN_HPP_NAMESPACE::DescriptorType const &,
94588                const VULKAN_HPP_NAMESPACE::DescriptorImageInfo * const &,
94589                const VULKAN_HPP_NAMESPACE::DescriptorBufferInfo * const &,
94590                const VULKAN_HPP_NAMESPACE::BufferView * const &>
94591 #endif
reflectVULKAN_HPP_NAMESPACE::WriteDescriptorSet94592       reflect() const VULKAN_HPP_NOEXCEPT
94593     {
94594       return std::tie( sType,
94595                        pNext,
94596                        dstSet,
94597                        dstBinding,
94598                        dstArrayElement,
94599                        descriptorCount,
94600                        descriptorType,
94601                        pImageInfo,
94602                        pBufferInfo,
94603                        pTexelBufferView );
94604     }
94605 
94606 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
94607     auto operator<=>( WriteDescriptorSet const & ) const = default;
94608 #else
operator ==VULKAN_HPP_NAMESPACE::WriteDescriptorSet94609     bool operator==( WriteDescriptorSet const & rhs ) const VULKAN_HPP_NOEXCEPT
94610     {
94611       return this->reflect() == rhs.reflect();
94612     }
94613 
operator !=VULKAN_HPP_NAMESPACE::WriteDescriptorSet94614     bool operator!=( WriteDescriptorSet const & rhs ) const VULKAN_HPP_NOEXCEPT
94615     {
94616       return this->reflect() != rhs.reflect();
94617     }
94618 #endif
94619 
94620   public:
94621     VULKAN_HPP_NAMESPACE::StructureType                sType           = StructureType::eWriteDescriptorSet;
94622     const void *                                       pNext           = {};
94623     VULKAN_HPP_NAMESPACE::DescriptorSet                dstSet          = {};
94624     uint32_t                                           dstBinding      = {};
94625     uint32_t                                           dstArrayElement = {};
94626     uint32_t                                           descriptorCount = {};
94627     VULKAN_HPP_NAMESPACE::DescriptorType               descriptorType  = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler;
94628     const VULKAN_HPP_NAMESPACE::DescriptorImageInfo *  pImageInfo      = {};
94629     const VULKAN_HPP_NAMESPACE::DescriptorBufferInfo * pBufferInfo     = {};
94630     const VULKAN_HPP_NAMESPACE::BufferView *           pTexelBufferView = {};
94631   };
94632   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::WriteDescriptorSet ) == sizeof( VkWriteDescriptorSet ),
94633                             "struct and wrapper have different size!" );
94634   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::WriteDescriptorSet>::value,
94635                             "struct wrapper is not a standard layout!" );
94636   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::WriteDescriptorSet>::value,
94637                             "WriteDescriptorSet is not nothrow_move_constructible!" );
94638 
94639   template <>
94640   struct CppType<StructureType, StructureType::eWriteDescriptorSet>
94641   {
94642     using Type = WriteDescriptorSet;
94643   };
94644 
94645   struct WriteDescriptorSetAccelerationStructureKHR
94646   {
94647     using NativeType = VkWriteDescriptorSetAccelerationStructureKHR;
94648 
94649     static const bool                                  allowDuplicate = false;
94650     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
94651       StructureType::eWriteDescriptorSetAccelerationStructureKHR;
94652 
94653 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
WriteDescriptorSetAccelerationStructureKHRVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR94654     VULKAN_HPP_CONSTEXPR WriteDescriptorSetAccelerationStructureKHR(
94655       uint32_t                                               accelerationStructureCount_ = {},
94656       const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR * pAccelerationStructures_    = {} ) VULKAN_HPP_NOEXCEPT
94657       : accelerationStructureCount( accelerationStructureCount_ )
94658       , pAccelerationStructures( pAccelerationStructures_ )
94659     {}
94660 
94661     VULKAN_HPP_CONSTEXPR WriteDescriptorSetAccelerationStructureKHR(
94662       WriteDescriptorSetAccelerationStructureKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94663 
WriteDescriptorSetAccelerationStructureKHRVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR94664     WriteDescriptorSetAccelerationStructureKHR( VkWriteDescriptorSetAccelerationStructureKHR const & rhs )
94665       VULKAN_HPP_NOEXCEPT
94666       : WriteDescriptorSetAccelerationStructureKHR(
94667           *reinterpret_cast<WriteDescriptorSetAccelerationStructureKHR const *>( &rhs ) )
94668     {}
94669 
94670 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
WriteDescriptorSetAccelerationStructureKHRVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR94671     WriteDescriptorSetAccelerationStructureKHR(
94672       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const &
94673         accelerationStructures_ )
94674       : accelerationStructureCount( static_cast<uint32_t>( accelerationStructures_.size() ) )
94675       , pAccelerationStructures( accelerationStructures_.data() )
94676     {}
94677 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
94678 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
94679 
94680     WriteDescriptorSetAccelerationStructureKHR &
94681       operator=( WriteDescriptorSetAccelerationStructureKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94682 
94683     WriteDescriptorSetAccelerationStructureKHR &
operator =VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR94684       operator=( VkWriteDescriptorSetAccelerationStructureKHR const & rhs ) VULKAN_HPP_NOEXCEPT
94685     {
94686       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR const *>( &rhs );
94687       return *this;
94688     }
94689 
94690 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
94691     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureKHR &
setPNextVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR94692                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
94693     {
94694       pNext = pNext_;
94695       return *this;
94696     }
94697 
94698     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureKHR &
setAccelerationStructureCountVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR94699                             setAccelerationStructureCount( uint32_t accelerationStructureCount_ ) VULKAN_HPP_NOEXCEPT
94700     {
94701       accelerationStructureCount = accelerationStructureCount_;
94702       return *this;
94703     }
94704 
setPAccelerationStructuresVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR94705     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureKHR & setPAccelerationStructures(
94706       const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR * pAccelerationStructures_ ) VULKAN_HPP_NOEXCEPT
94707     {
94708       pAccelerationStructures = pAccelerationStructures_;
94709       return *this;
94710     }
94711 
94712 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAccelerationStructuresVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR94713     WriteDescriptorSetAccelerationStructureKHR & setAccelerationStructures(
94714       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const &
94715         accelerationStructures_ ) VULKAN_HPP_NOEXCEPT
94716     {
94717       accelerationStructureCount = static_cast<uint32_t>( accelerationStructures_.size() );
94718       pAccelerationStructures    = accelerationStructures_.data();
94719       return *this;
94720     }
94721 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
94722 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
94723 
operator VkWriteDescriptorSetAccelerationStructureKHR const&VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR94724     explicit operator VkWriteDescriptorSetAccelerationStructureKHR const &() const VULKAN_HPP_NOEXCEPT
94725     {
94726       return *reinterpret_cast<const VkWriteDescriptorSetAccelerationStructureKHR *>( this );
94727     }
94728 
operator VkWriteDescriptorSetAccelerationStructureKHR&VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR94729     explicit operator VkWriteDescriptorSetAccelerationStructureKHR &() VULKAN_HPP_NOEXCEPT
94730     {
94731       return *reinterpret_cast<VkWriteDescriptorSetAccelerationStructureKHR *>( this );
94732     }
94733 
94734 #if 14 <= VULKAN_HPP_CPP_VERSION
94735     auto
94736 #else
94737     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
94738                const void * const &,
94739                uint32_t const &,
94740                const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR * const &>
94741 #endif
reflectVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR94742       reflect() const VULKAN_HPP_NOEXCEPT
94743     {
94744       return std::tie( sType, pNext, accelerationStructureCount, pAccelerationStructures );
94745     }
94746 
94747 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
94748     auto operator<=>( WriteDescriptorSetAccelerationStructureKHR const & ) const = default;
94749 #else
operator ==VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR94750     bool operator==( WriteDescriptorSetAccelerationStructureKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
94751     {
94752       return this->reflect() == rhs.reflect();
94753     }
94754 
operator !=VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR94755     bool operator!=( WriteDescriptorSetAccelerationStructureKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
94756     {
94757       return this->reflect() != rhs.reflect();
94758     }
94759 #endif
94760 
94761   public:
94762     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWriteDescriptorSetAccelerationStructureKHR;
94763     const void *                        pNext = {};
94764     uint32_t                            accelerationStructureCount                 = {};
94765     const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR * pAccelerationStructures = {};
94766   };
94767   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR ) ==
94768                               sizeof( VkWriteDescriptorSetAccelerationStructureKHR ),
94769                             "struct and wrapper have different size!" );
94770   VULKAN_HPP_STATIC_ASSERT(
94771     std::is_standard_layout<VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR>::value,
94772     "struct wrapper is not a standard layout!" );
94773   VULKAN_HPP_STATIC_ASSERT(
94774     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR>::value,
94775     "WriteDescriptorSetAccelerationStructureKHR is not nothrow_move_constructible!" );
94776 
94777   template <>
94778   struct CppType<StructureType, StructureType::eWriteDescriptorSetAccelerationStructureKHR>
94779   {
94780     using Type = WriteDescriptorSetAccelerationStructureKHR;
94781   };
94782 
94783   struct WriteDescriptorSetAccelerationStructureNV
94784   {
94785     using NativeType = VkWriteDescriptorSetAccelerationStructureNV;
94786 
94787     static const bool                                  allowDuplicate = false;
94788     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
94789       StructureType::eWriteDescriptorSetAccelerationStructureNV;
94790 
94791 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
WriteDescriptorSetAccelerationStructureNVVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV94792     VULKAN_HPP_CONSTEXPR WriteDescriptorSetAccelerationStructureNV(
94793       uint32_t                                              accelerationStructureCount_ = {},
94794       const VULKAN_HPP_NAMESPACE::AccelerationStructureNV * pAccelerationStructures_    = {} ) VULKAN_HPP_NOEXCEPT
94795       : accelerationStructureCount( accelerationStructureCount_ )
94796       , pAccelerationStructures( pAccelerationStructures_ )
94797     {}
94798 
94799     VULKAN_HPP_CONSTEXPR WriteDescriptorSetAccelerationStructureNV(
94800       WriteDescriptorSetAccelerationStructureNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94801 
WriteDescriptorSetAccelerationStructureNVVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV94802     WriteDescriptorSetAccelerationStructureNV( VkWriteDescriptorSetAccelerationStructureNV const & rhs )
94803       VULKAN_HPP_NOEXCEPT
94804       : WriteDescriptorSetAccelerationStructureNV(
94805           *reinterpret_cast<WriteDescriptorSetAccelerationStructureNV const *>( &rhs ) )
94806     {}
94807 
94808 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
WriteDescriptorSetAccelerationStructureNVVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV94809     WriteDescriptorSetAccelerationStructureNV(
94810       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AccelerationStructureNV> const &
94811         accelerationStructures_ )
94812       : accelerationStructureCount( static_cast<uint32_t>( accelerationStructures_.size() ) )
94813       , pAccelerationStructures( accelerationStructures_.data() )
94814     {}
94815 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
94816 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
94817 
94818     WriteDescriptorSetAccelerationStructureNV &
94819       operator=( WriteDescriptorSetAccelerationStructureNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94820 
94821     WriteDescriptorSetAccelerationStructureNV &
operator =VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV94822       operator=( VkWriteDescriptorSetAccelerationStructureNV const & rhs ) VULKAN_HPP_NOEXCEPT
94823     {
94824       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV const *>( &rhs );
94825       return *this;
94826     }
94827 
94828 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
94829     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureNV &
setPNextVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV94830                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
94831     {
94832       pNext = pNext_;
94833       return *this;
94834     }
94835 
94836     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureNV &
setAccelerationStructureCountVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV94837                             setAccelerationStructureCount( uint32_t accelerationStructureCount_ ) VULKAN_HPP_NOEXCEPT
94838     {
94839       accelerationStructureCount = accelerationStructureCount_;
94840       return *this;
94841     }
94842 
setPAccelerationStructuresVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV94843     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureNV & setPAccelerationStructures(
94844       const VULKAN_HPP_NAMESPACE::AccelerationStructureNV * pAccelerationStructures_ ) VULKAN_HPP_NOEXCEPT
94845     {
94846       pAccelerationStructures = pAccelerationStructures_;
94847       return *this;
94848     }
94849 
94850 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAccelerationStructuresVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV94851     WriteDescriptorSetAccelerationStructureNV & setAccelerationStructures(
94852       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AccelerationStructureNV> const &
94853         accelerationStructures_ ) VULKAN_HPP_NOEXCEPT
94854     {
94855       accelerationStructureCount = static_cast<uint32_t>( accelerationStructures_.size() );
94856       pAccelerationStructures    = accelerationStructures_.data();
94857       return *this;
94858     }
94859 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
94860 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
94861 
operator VkWriteDescriptorSetAccelerationStructureNV const&VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV94862     explicit operator VkWriteDescriptorSetAccelerationStructureNV const &() const VULKAN_HPP_NOEXCEPT
94863     {
94864       return *reinterpret_cast<const VkWriteDescriptorSetAccelerationStructureNV *>( this );
94865     }
94866 
operator VkWriteDescriptorSetAccelerationStructureNV&VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV94867     explicit operator VkWriteDescriptorSetAccelerationStructureNV &() VULKAN_HPP_NOEXCEPT
94868     {
94869       return *reinterpret_cast<VkWriteDescriptorSetAccelerationStructureNV *>( this );
94870     }
94871 
94872 #if 14 <= VULKAN_HPP_CPP_VERSION
94873     auto
94874 #else
94875     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
94876                const void * const &,
94877                uint32_t const &,
94878                const VULKAN_HPP_NAMESPACE::AccelerationStructureNV * const &>
94879 #endif
reflectVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV94880       reflect() const VULKAN_HPP_NOEXCEPT
94881     {
94882       return std::tie( sType, pNext, accelerationStructureCount, pAccelerationStructures );
94883     }
94884 
94885 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
94886     auto operator<=>( WriteDescriptorSetAccelerationStructureNV const & ) const = default;
94887 #else
operator ==VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV94888     bool operator==( WriteDescriptorSetAccelerationStructureNV const & rhs ) const VULKAN_HPP_NOEXCEPT
94889     {
94890       return this->reflect() == rhs.reflect();
94891     }
94892 
operator !=VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV94893     bool operator!=( WriteDescriptorSetAccelerationStructureNV const & rhs ) const VULKAN_HPP_NOEXCEPT
94894     {
94895       return this->reflect() != rhs.reflect();
94896     }
94897 #endif
94898 
94899   public:
94900     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWriteDescriptorSetAccelerationStructureNV;
94901     const void *                        pNext = {};
94902     uint32_t                            accelerationStructureCount                = {};
94903     const VULKAN_HPP_NAMESPACE::AccelerationStructureNV * pAccelerationStructures = {};
94904   };
94905   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV ) ==
94906                               sizeof( VkWriteDescriptorSetAccelerationStructureNV ),
94907                             "struct and wrapper have different size!" );
94908   VULKAN_HPP_STATIC_ASSERT(
94909     std::is_standard_layout<VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV>::value,
94910     "struct wrapper is not a standard layout!" );
94911   VULKAN_HPP_STATIC_ASSERT(
94912     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV>::value,
94913     "WriteDescriptorSetAccelerationStructureNV is not nothrow_move_constructible!" );
94914 
94915   template <>
94916   struct CppType<StructureType, StructureType::eWriteDescriptorSetAccelerationStructureNV>
94917   {
94918     using Type = WriteDescriptorSetAccelerationStructureNV;
94919   };
94920 
94921   struct WriteDescriptorSetInlineUniformBlockEXT
94922   {
94923     using NativeType = VkWriteDescriptorSetInlineUniformBlockEXT;
94924 
94925     static const bool                                  allowDuplicate = false;
94926     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType =
94927       StructureType::eWriteDescriptorSetInlineUniformBlockEXT;
94928 
94929 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
WriteDescriptorSetInlineUniformBlockEXTVULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlockEXT94930     VULKAN_HPP_CONSTEXPR WriteDescriptorSetInlineUniformBlockEXT( uint32_t     dataSize_ = {},
94931                                                                   const void * pData_    = {} ) VULKAN_HPP_NOEXCEPT
94932       : dataSize( dataSize_ )
94933       , pData( pData_ )
94934     {}
94935 
94936     VULKAN_HPP_CONSTEXPR WriteDescriptorSetInlineUniformBlockEXT( WriteDescriptorSetInlineUniformBlockEXT const & rhs )
94937       VULKAN_HPP_NOEXCEPT = default;
94938 
WriteDescriptorSetInlineUniformBlockEXTVULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlockEXT94939     WriteDescriptorSetInlineUniformBlockEXT( VkWriteDescriptorSetInlineUniformBlockEXT const & rhs ) VULKAN_HPP_NOEXCEPT
94940       : WriteDescriptorSetInlineUniformBlockEXT(
94941           *reinterpret_cast<WriteDescriptorSetInlineUniformBlockEXT const *>( &rhs ) )
94942     {}
94943 
94944 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
94945     template <typename T>
WriteDescriptorSetInlineUniformBlockEXTVULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlockEXT94946     WriteDescriptorSetInlineUniformBlockEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & data_ )
94947       : dataSize( static_cast<uint32_t>( data_.size() * sizeof( T ) ) ), pData( data_.data() )
94948     {}
94949 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
94950 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
94951 
94952     WriteDescriptorSetInlineUniformBlockEXT &
94953       operator=( WriteDescriptorSetInlineUniformBlockEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94954 
94955     WriteDescriptorSetInlineUniformBlockEXT &
operator =VULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlockEXT94956       operator=( VkWriteDescriptorSetInlineUniformBlockEXT const & rhs ) VULKAN_HPP_NOEXCEPT
94957     {
94958       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlockEXT const *>( &rhs );
94959       return *this;
94960     }
94961 
94962 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
94963     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetInlineUniformBlockEXT &
setPNextVULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlockEXT94964                             setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
94965     {
94966       pNext = pNext_;
94967       return *this;
94968     }
94969 
94970     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetInlineUniformBlockEXT &
setDataSizeVULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlockEXT94971                             setDataSize( uint32_t dataSize_ ) VULKAN_HPP_NOEXCEPT
94972     {
94973       dataSize = dataSize_;
94974       return *this;
94975     }
94976 
94977     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetInlineUniformBlockEXT &
setPDataVULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlockEXT94978                             setPData( const void * pData_ ) VULKAN_HPP_NOEXCEPT
94979     {
94980       pData = pData_;
94981       return *this;
94982     }
94983 
94984 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
94985     template <typename T>
94986     WriteDescriptorSetInlineUniformBlockEXT &
setDataVULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlockEXT94987       setData( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & data_ ) VULKAN_HPP_NOEXCEPT
94988     {
94989       dataSize = static_cast<uint32_t>( data_.size() * sizeof( T ) );
94990       pData    = data_.data();
94991       return *this;
94992     }
94993 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
94994 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
94995 
operator VkWriteDescriptorSetInlineUniformBlockEXT const&VULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlockEXT94996     explicit operator VkWriteDescriptorSetInlineUniformBlockEXT const &() const VULKAN_HPP_NOEXCEPT
94997     {
94998       return *reinterpret_cast<const VkWriteDescriptorSetInlineUniformBlockEXT *>( this );
94999     }
95000 
operator VkWriteDescriptorSetInlineUniformBlockEXT&VULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlockEXT95001     explicit operator VkWriteDescriptorSetInlineUniformBlockEXT &() VULKAN_HPP_NOEXCEPT
95002     {
95003       return *reinterpret_cast<VkWriteDescriptorSetInlineUniformBlockEXT *>( this );
95004     }
95005 
95006 #if 14 <= VULKAN_HPP_CPP_VERSION
95007     auto
95008 #else
95009     std::
95010       tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const void * const &>
95011 #endif
reflectVULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlockEXT95012       reflect() const VULKAN_HPP_NOEXCEPT
95013     {
95014       return std::tie( sType, pNext, dataSize, pData );
95015     }
95016 
95017 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
95018     auto operator<=>( WriteDescriptorSetInlineUniformBlockEXT const & ) const = default;
95019 #else
operator ==VULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlockEXT95020     bool operator==( WriteDescriptorSetInlineUniformBlockEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
95021     {
95022       return this->reflect() == rhs.reflect();
95023     }
95024 
operator !=VULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlockEXT95025     bool operator!=( WriteDescriptorSetInlineUniformBlockEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
95026     {
95027       return this->reflect() != rhs.reflect();
95028     }
95029 #endif
95030 
95031   public:
95032     VULKAN_HPP_NAMESPACE::StructureType sType    = StructureType::eWriteDescriptorSetInlineUniformBlockEXT;
95033     const void *                        pNext    = {};
95034     uint32_t                            dataSize = {};
95035     const void *                        pData    = {};
95036   };
95037   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlockEXT ) ==
95038                               sizeof( VkWriteDescriptorSetInlineUniformBlockEXT ),
95039                             "struct and wrapper have different size!" );
95040   VULKAN_HPP_STATIC_ASSERT(
95041     std::is_standard_layout<VULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlockEXT>::value,
95042     "struct wrapper is not a standard layout!" );
95043   VULKAN_HPP_STATIC_ASSERT(
95044     std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlockEXT>::value,
95045     "WriteDescriptorSetInlineUniformBlockEXT is not nothrow_move_constructible!" );
95046 
95047   template <>
95048   struct CppType<StructureType, StructureType::eWriteDescriptorSetInlineUniformBlockEXT>
95049   {
95050     using Type = WriteDescriptorSetInlineUniformBlockEXT;
95051   };
95052 
95053 #if defined( VK_USE_PLATFORM_XCB_KHR )
95054   struct XcbSurfaceCreateInfoKHR
95055   {
95056     using NativeType = VkXcbSurfaceCreateInfoKHR;
95057 
95058     static const bool                                  allowDuplicate = false;
95059     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eXcbSurfaceCreateInfoKHR;
95060 
95061 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
XcbSurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR95062     VULKAN_HPP_CONSTEXPR XcbSurfaceCreateInfoKHR( VULKAN_HPP_NAMESPACE::XcbSurfaceCreateFlagsKHR flags_      = {},
95063                                                   xcb_connection_t *                             connection_ = {},
95064                                                   xcb_window_t window_ = {} ) VULKAN_HPP_NOEXCEPT
95065       : flags( flags_ )
95066       , connection( connection_ )
95067       , window( window_ )
95068     {}
95069 
95070     VULKAN_HPP_CONSTEXPR XcbSurfaceCreateInfoKHR( XcbSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
95071 
XcbSurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR95072     XcbSurfaceCreateInfoKHR( VkXcbSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
95073       : XcbSurfaceCreateInfoKHR( *reinterpret_cast<XcbSurfaceCreateInfoKHR const *>( &rhs ) )
95074     {}
95075 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
95076 
95077     XcbSurfaceCreateInfoKHR & operator=( XcbSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
95078 
operator =VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR95079     XcbSurfaceCreateInfoKHR & operator=( VkXcbSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
95080     {
95081       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR const *>( &rhs );
95082       return *this;
95083     }
95084 
95085 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR95086     VULKAN_HPP_CONSTEXPR_14 XcbSurfaceCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
95087     {
95088       pNext = pNext_;
95089       return *this;
95090     }
95091 
95092     VULKAN_HPP_CONSTEXPR_14 XcbSurfaceCreateInfoKHR &
setFlagsVULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR95093                             setFlags( VULKAN_HPP_NAMESPACE::XcbSurfaceCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
95094     {
95095       flags = flags_;
95096       return *this;
95097     }
95098 
95099     VULKAN_HPP_CONSTEXPR_14 XcbSurfaceCreateInfoKHR &
setConnectionVULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR95100                             setConnection( xcb_connection_t * connection_ ) VULKAN_HPP_NOEXCEPT
95101     {
95102       connection = connection_;
95103       return *this;
95104     }
95105 
setWindowVULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR95106     VULKAN_HPP_CONSTEXPR_14 XcbSurfaceCreateInfoKHR & setWindow( xcb_window_t window_ ) VULKAN_HPP_NOEXCEPT
95107     {
95108       window = window_;
95109       return *this;
95110     }
95111 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
95112 
operator VkXcbSurfaceCreateInfoKHR const&VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR95113     explicit operator VkXcbSurfaceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
95114     {
95115       return *reinterpret_cast<const VkXcbSurfaceCreateInfoKHR *>( this );
95116     }
95117 
operator VkXcbSurfaceCreateInfoKHR&VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR95118     explicit operator VkXcbSurfaceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
95119     {
95120       return *reinterpret_cast<VkXcbSurfaceCreateInfoKHR *>( this );
95121     }
95122 
95123 #  if 14 <= VULKAN_HPP_CPP_VERSION
95124     auto
95125 #  else
95126     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
95127                const void * const &,
95128                VULKAN_HPP_NAMESPACE::XcbSurfaceCreateFlagsKHR const &,
95129                xcb_connection_t * const &,
95130                xcb_window_t const &>
95131 #  endif
reflectVULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR95132       reflect() const VULKAN_HPP_NOEXCEPT
95133     {
95134       return std::tie( sType, pNext, flags, connection, window );
95135     }
95136 
95137 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
95138     auto operator<=>( XcbSurfaceCreateInfoKHR const & ) const = default;
95139 #  else
operator ==VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR95140     bool operator==( XcbSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
95141     {
95142       return this->reflect() == rhs.reflect();
95143     }
95144 
operator !=VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR95145     bool operator!=( XcbSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
95146     {
95147       return this->reflect() != rhs.reflect();
95148     }
95149 #  endif
95150 
95151   public:
95152     VULKAN_HPP_NAMESPACE::StructureType            sType      = StructureType::eXcbSurfaceCreateInfoKHR;
95153     const void *                                   pNext      = {};
95154     VULKAN_HPP_NAMESPACE::XcbSurfaceCreateFlagsKHR flags      = {};
95155     xcb_connection_t *                             connection = {};
95156     xcb_window_t                                   window     = {};
95157   };
95158   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR ) ==
95159                               sizeof( VkXcbSurfaceCreateInfoKHR ),
95160                             "struct and wrapper have different size!" );
95161   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR>::value,
95162                             "struct wrapper is not a standard layout!" );
95163   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR>::value,
95164                             "XcbSurfaceCreateInfoKHR is not nothrow_move_constructible!" );
95165 
95166   template <>
95167   struct CppType<StructureType, StructureType::eXcbSurfaceCreateInfoKHR>
95168   {
95169     using Type = XcbSurfaceCreateInfoKHR;
95170   };
95171 #endif /*VK_USE_PLATFORM_XCB_KHR*/
95172 
95173 #if defined( VK_USE_PLATFORM_XLIB_KHR )
95174   struct XlibSurfaceCreateInfoKHR
95175   {
95176     using NativeType = VkXlibSurfaceCreateInfoKHR;
95177 
95178     static const bool                                  allowDuplicate = false;
95179     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eXlibSurfaceCreateInfoKHR;
95180 
95181 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
XlibSurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR95182     VULKAN_HPP_CONSTEXPR XlibSurfaceCreateInfoKHR( VULKAN_HPP_NAMESPACE::XlibSurfaceCreateFlagsKHR flags_ = {},
95183                                                    Display *                                       dpy_   = {},
95184                                                    Window window_ = {} ) VULKAN_HPP_NOEXCEPT
95185       : flags( flags_ )
95186       , dpy( dpy_ )
95187       , window( window_ )
95188     {}
95189 
95190     VULKAN_HPP_CONSTEXPR XlibSurfaceCreateInfoKHR( XlibSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
95191 
XlibSurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR95192     XlibSurfaceCreateInfoKHR( VkXlibSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
95193       : XlibSurfaceCreateInfoKHR( *reinterpret_cast<XlibSurfaceCreateInfoKHR const *>( &rhs ) )
95194     {}
95195 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
95196 
95197     XlibSurfaceCreateInfoKHR & operator=( XlibSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
95198 
operator =VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR95199     XlibSurfaceCreateInfoKHR & operator=( VkXlibSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
95200     {
95201       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR const *>( &rhs );
95202       return *this;
95203     }
95204 
95205 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR95206     VULKAN_HPP_CONSTEXPR_14 XlibSurfaceCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
95207     {
95208       pNext = pNext_;
95209       return *this;
95210     }
95211 
95212     VULKAN_HPP_CONSTEXPR_14 XlibSurfaceCreateInfoKHR &
setFlagsVULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR95213                             setFlags( VULKAN_HPP_NAMESPACE::XlibSurfaceCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
95214     {
95215       flags = flags_;
95216       return *this;
95217     }
95218 
setDpyVULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR95219     VULKAN_HPP_CONSTEXPR_14 XlibSurfaceCreateInfoKHR & setDpy( Display * dpy_ ) VULKAN_HPP_NOEXCEPT
95220     {
95221       dpy = dpy_;
95222       return *this;
95223     }
95224 
setWindowVULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR95225     VULKAN_HPP_CONSTEXPR_14 XlibSurfaceCreateInfoKHR & setWindow( Window window_ ) VULKAN_HPP_NOEXCEPT
95226     {
95227       window = window_;
95228       return *this;
95229     }
95230 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
95231 
operator VkXlibSurfaceCreateInfoKHR const&VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR95232     explicit operator VkXlibSurfaceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
95233     {
95234       return *reinterpret_cast<const VkXlibSurfaceCreateInfoKHR *>( this );
95235     }
95236 
operator VkXlibSurfaceCreateInfoKHR&VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR95237     explicit operator VkXlibSurfaceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
95238     {
95239       return *reinterpret_cast<VkXlibSurfaceCreateInfoKHR *>( this );
95240     }
95241 
95242 #  if 14 <= VULKAN_HPP_CPP_VERSION
95243     auto
95244 #  else
95245     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
95246                const void * const &,
95247                VULKAN_HPP_NAMESPACE::XlibSurfaceCreateFlagsKHR const &,
95248                Display * const &,
95249                Window const &>
95250 #  endif
reflectVULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR95251       reflect() const VULKAN_HPP_NOEXCEPT
95252     {
95253       return std::tie( sType, pNext, flags, dpy, window );
95254     }
95255 
95256 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
95257     auto operator<=>( XlibSurfaceCreateInfoKHR const & ) const = default;
95258 #  else
operator ==VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR95259     bool operator==( XlibSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
95260     {
95261       return this->reflect() == rhs.reflect();
95262     }
95263 
operator !=VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR95264     bool operator!=( XlibSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
95265     {
95266       return this->reflect() != rhs.reflect();
95267     }
95268 #  endif
95269 
95270   public:
95271     VULKAN_HPP_NAMESPACE::StructureType             sType  = StructureType::eXlibSurfaceCreateInfoKHR;
95272     const void *                                    pNext  = {};
95273     VULKAN_HPP_NAMESPACE::XlibSurfaceCreateFlagsKHR flags  = {};
95274     Display *                                       dpy    = {};
95275     Window                                          window = {};
95276   };
95277   VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR ) ==
95278                               sizeof( VkXlibSurfaceCreateInfoKHR ),
95279                             "struct and wrapper have different size!" );
95280   VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR>::value,
95281                             "struct wrapper is not a standard layout!" );
95282   VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR>::value,
95283                             "XlibSurfaceCreateInfoKHR is not nothrow_move_constructible!" );
95284 
95285   template <>
95286   struct CppType<StructureType, StructureType::eXlibSurfaceCreateInfoKHR>
95287   {
95288     using Type = XlibSurfaceCreateInfoKHR;
95289   };
95290 #endif /*VK_USE_PLATFORM_XLIB_KHR*/
95291 
95292 }  // namespace VULKAN_HPP_NAMESPACE
95293 #endif
95294